Browse Source

Merge branch 'master' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend-wt

mlchen 2 days ago
parent
commit
542ea955f0

+ 139 - 120
src/views/bpm/handleTask/components/financialManage/invoiceManage/components/addOrEditDialog.vue

@@ -25,33 +25,50 @@
                 :disabled="true"
                 style="width: 100%"
               >
-                <el-option label="收款计划" :value="6"></el-option>
-                <el-option label="付款计划" :value="7"></el-option>
-                <el-option label="应收管理" :value="5"></el-option>
-                <el-option label="应付管理" :value="4"></el-option>
+                <el-option v-for="item in sourceTypeList" :key="item.value" :value="item.value" :label="item.label"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="form.sourceType == 6">
-            <el-form-item label="收款计划" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="form.sourceType == 7">
-            <el-form-item label="付款计划" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="form.sourceType == 5">
-            <el-form-item label="应收管理" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="form.sourceType == 4">
-            <el-form-item label="应付管理" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
+          <el-col :span="8" v-if="form.sourceType == 1">
+          <el-form-item label="对账单" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 2">
+          <el-form-item label="合同" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 3">
+          <el-form-item label="订单" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 5">
+          <el-form-item label="已收" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 4">
+          <el-form-item label="已付" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+            ></el-input>
+          </el-form-item>
+        </el-col>
           <el-col :span="8">
             <el-form-item label="发票金额" prop="amount">
               <el-input-number
@@ -226,38 +243,55 @@
       ref="table"
       @setPrice="setPrice"
     ></table-info> -->
-    <div v-if="form.sourceType != 99" style="margin-top: 20px; margin-bottom: 20px;">
+    <div style="margin-top: 20px; margin-bottom: 20px;">
         <headerTitle title="收款计划信息"></headerTitle>
         <!-- <el-form ref="form" :model="tableForm"> -->
           <ele-pro-table
             ref="table"
             :needPage="false"
             :columns="columns"
-            :datasource="form.receiptPayments"
+            :datasource="form.relatedList"
             row-key="id"
             class="time-form"
           >
             <template v-slot:toolbar>
               <!-- <span>已开票金额:{{ totalInvoiceAmount }}</span> -->
             </template>
-            
+            <template v-slot:planPaymentAmount="scope">
+              <el-form-item
+                style="width: 100%;"
+                label-width="0"
+                :prop="'relatedList.' + scope.$index + '.planPaymentAmount'"
+                :rules="[
+                  {
+                    required: false,
+                    message: '请输入计划金额',
+                    trigger: 'blur'
+                  }
+                ]"
+              > 
+                <span v-if="dialogType === 'view'">{{ scope.row.planPaymentAmount }}</span>
+                <el-input v-else v-model="scope.row.planPaymentAmount" type="number" @input="updatePlanPaymentAmount(scope.row)"></el-input>
+              </el-form-item>
+            </template>
             <template v-slot:invoiceAmount="scope">
-              <!-- <el-form-item
+              <el-form-item
                 style="width: 100%;"
                 label-width="0"
-                :prop="'receiptPayments.' + scope.$index + '.invoiceAmount'"
+                :prop="'relatedList.' + scope.$index + '.invoiceAmount'"
                 :rules="[
                   {
-                    required: true,
+                    required: false,
                     message: '请输入开票金额',
                     trigger: 'blur'
                   },
                   {
+                    required: false,
                     validator: (rule, value, callback) => {
                       if (value === undefined || value === null || value === '') {
                         callback('请输入开票金额');
-                      } else if (parseFloat(value) <= 0) {
-                        callback('开票金额必须大于0');  
+                      } else if (parseFloat(value) <= 0 || parseFloat(value) > parseFloat(scope.row.unInvoiceAmount)) {
+                        callback('开票金额必须大于0且不超过未开票金额');  
                       } else {
                         callback();
                       }
@@ -265,31 +299,33 @@
                     trigger: 'blur'
                   }
                 ]"
-              >  -->
+              > 
                 <span v-if="dialogType === 'view'">{{ scope.row.invoiceAmount }}</span>
-                <!-- <el-input :min="0" :max="scope.row.planPaymentAmount" v-limit="{ min: 0, max: scope.row.planPaymentAmount }" v-else v-model="scope.row.invoiceAmount" type="number" @input="updateInvoiceAmount(scope.row)"></el-input> -->
-              <!-- </el-form-item> -->
+                <el-input v-else v-model="scope.row.invoiceAmount" type="number" @input="updateInvoiceAmount(scope.row)"></el-input>
+              </el-form-item>
             </template>
           </ele-pro-table>
         <!-- </el-form> -->
       </div>
-    <headerTitle title="关联物品清单信息"></headerTitle>
-    <!-- <table-info
-      v-if="dialogType != 'add' && form.detailList.length"
-      dialogType="view"
-      :form="form"
-      ref="table"
-    ></table-info> -->
-   <table-info-new
-      v-if="form.sourceType != 99"
-      dialogType="view"
-      ref="tableInfoNewRef"
-    ></table-info-new>
-    <table-info
-      v-else
-      dialogType="view"
-      ref="tableInfoNoOrderRef"
-    ></table-info>
+      <div style="margin-top: 20px;">
+        <headerTitle title="关联物品清单信息"></headerTitle>
+        <!-- <table-info
+          v-if="dialogType != 'add' && form.detailList.length"
+          dialogType="view"
+          :form="form"
+          ref="table"
+        ></table-info> -->
+      <table-info-new
+          v-if="form.sourceType != 99"
+          dialogType="view"
+          ref="tableInfoNewRef"
+        ></table-info-new>
+        <table-info
+          v-else
+          dialogType="view"
+          ref="tableInfoNoOrderRef"
+        ></table-info>
+      </div>
   </div>
 </template>
 <script>
@@ -344,92 +380,49 @@
             fixed: 'left'
           },
           {
-            width: 150,
-            prop: 'sourceOrderDetailNo',
-            label: this.form.type == 1 ? '收款计划编码' : '付款计划编码',
+            minWidth: 150,
+            prop: 'sourceCode',
+            label: '来源编码',
             align: 'center'
           },
+          // {
+          //   width: 150,
+          //   prop: 'relatedOrderNo',
+          //   label: '来源编号',
+          //   align: 'center'
+          // },
           {
-            width: 150,
-            prop: 'relatedOrderNo',
-            label: '订单编号',
-            align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'relatedOrderType',
-            label: '订单类型',
+            minWidth: 120,
+            prop: 'sourceType',
+            label: '来源类型',
             align: 'center',
             formatter: (row) => {
-              return row.relatedOrderType == 1 ? '销售订单' : '采购订单'
+              return this.sourceTypeList.find(item => item.value == row.sourceType)?.label || ''
             }
           },
+          // {
+          //   width: 170,
+          //   prop: 'planPaymentAmount',
+          //   label: this.form.type == 1 ? '计划收款金额' : '计划付款金额',
+          //   align: 'center',
+          //   slot: 'planPaymentAmount'
+          // },
           {
-            width: 120,
-            prop: 'contractNo',
-            label: '合同编码',
-            align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'contractCode',
-            label: '合同编号',
-            align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'contractName',
-            label: '合同名称',
-            align: 'center'
-          },
-          {
-            prop: 'issueNumber',
-            label: '期数',
-            align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'paymentType',
-            label: '款项类型',
-            align: 'center',
-            formatter: (row) => {
-              return this.paymentTypeOp.find(item => item.value == row.paymentType)?.label || ''
-            }
-          },
-          {
-            prop: 'moneyName',
-            label: '款项名称',
-            align: 'center',
-            width: 170
-          },
-          {
-            width: 150,
-            prop: 'paymentRatio',
-            label: '比例',
-            align: 'center'
-          },
-          {
-            width: 170,
-            prop: 'planPaymentAmount',
-            label: this.form.type == 1 ? '计划收款金额' : '计划付款金额',
-            align: 'center',
-          },
-          {
-            width: 150,
+            minWidth: 150,
             prop: 'unInvoiceAmount',
             label: '未开票金额',
             align: 'center'
           },
           {
-            width: 150,
+            minWidth: 150,
             prop: 'invoicedAmount',
             label: '已开票金额',
             align: 'center'
           },
           {
-            width: 160,
+            minWidth: 160,
             prop: 'invoiceAmount',
-            label: '开票金额',
+            label: '本次开票金额',
             align: 'center',
             // slot: 'invoiceAmount',
             fixed: 'right'
@@ -442,6 +435,32 @@
         dialogType: '',
         title: '',
         paymentTypeOp,
+        sourceTypeList: [
+          {
+            label: '对账单',
+            value: 1
+          },
+          {
+            label: '合同',
+            value: 2
+          },
+          {
+            label: '订单',
+            value: 3
+          },
+          {
+            label: '已付',
+            value: 4
+          },
+          {
+            label: '已收',
+            value: 5
+          },
+          {
+            label: '其他无订单无合同',
+            value: 99
+          }
+        ],
         form: {
           salesCompanyUsc: '',
           salesCompanyBankBranchNo: '',
@@ -521,7 +540,7 @@
           if (this.form.sourceType == 99) {
             this.$refs.tableInfoNoOrderRef?.setValue(this.form);
           } else {
-            this.$refs.tableInfoRef?.putValue(this.form);
+            this.$refs.tableInfoNewRef?.putValue(this.form);
           }
         })
       },

+ 147 - 128
src/views/bpm/handleTask/components/financialManage/invoiceManage/components/detailDialog.vue

@@ -18,38 +18,56 @@
                 :disabled="true"
                 style="width: 100%"
               >
-                <el-option label="收款计划" :value="6"></el-option>
-                <el-option label="付款计划" :value="7"></el-option>
-                <el-option label="应收管理" :value="5"></el-option>
-                <el-option label="应付管理" :value="4"></el-option>
+                <el-option v-for="item in sourceTypeList" :key="item.value" :value="item.value" :label="item.label"></el-option>
               </el-select>
             </el-form-item>
           </el-col>
-          <el-col :span="8" v-if="form.sourceType == 6">
-            <el-form-item label="收款计划" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="form.sourceType == 7">
-            <el-form-item label="付款计划" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <!-- <el-col :span="8" v-if="form.sourceType == 3">
-            <el-form-item label="订单" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col> -->
-          <el-col :span="8" v-if="form.sourceType == 5">
-            <el-form-item label="应收管理" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
-          <el-col :span="8" v-if="form.sourceType == 4">
-            <el-form-item label="应付管理" prop="sourceCode">
-              <el-input v-model="form.sourceCode" :disabled="true"></el-input>
-            </el-form-item>
-          </el-col>
+
+          <el-col :span="8" v-if="form.sourceType == 1">
+          <el-form-item label="对账单" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+              @click.native="handleSelectAccount(1)"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 2">
+          <el-form-item label="合同" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+              @click.native="handleSelectAccount(2)"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 3">
+          <el-form-item label="订单" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+              @click.native="handleSelectAccount(3)"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 5">
+          <el-form-item label="已收" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+              @click.native="handleSelectAccount(5)"
+            ></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8" v-if="form.sourceType == 4">
+          <el-form-item label="已付" prop="sourceCode">
+            <el-input
+              v-model="form.sourceCode"
+              readonly
+              @click.native="handleSelectAccount(4)"
+            ></el-input>
+          </el-form-item>
+        </el-col>
           <el-col :span="8">
             <el-form-item label="发票金额" prop="amount">
               <el-input
@@ -177,38 +195,57 @@
         </el-col>
       </el-row>
     </el-form>
-    <div v-if="form.sourceType != 99" style="margin-top: 20px; margin-bottom: 20px;">
-        <headerTitle title="收款计划信息"></headerTitle>
+
+
+    <div class="payinfo" style="margin-top: 20px;">
+        <headerTitle title="来源清单"></headerTitle>
         <!-- <el-form ref="form" :model="tableForm"> -->
           <ele-pro-table
             ref="table"
             :needPage="false"
             :columns="columns"
-            :datasource="form.receiptPayments"
+            :datasource="form.relatedList"
             row-key="id"
             class="time-form"
           >
             <template v-slot:toolbar>
               <!-- <span>已开票金额:{{ totalInvoiceAmount }}</span> -->
             </template>
-            
+            <template v-slot:planPaymentAmount="scope">
+              <el-form-item
+                style="width: 100%;"
+                label-width="0"
+                :prop="'relatedList.' + scope.$index + '.planPaymentAmount'"
+                :rules="[
+                  {
+                    required: false,
+                    message: '请输入计划金额',
+                    trigger: 'blur'
+                  }
+                ]"
+              > 
+                <span v-if="dialogType === 'view'">{{ scope.row.planPaymentAmount }}</span>
+                <el-input v-else v-model="scope.row.planPaymentAmount" type="number" @input="updatePlanPaymentAmount(scope.row)"></el-input>
+              </el-form-item>
+            </template>
             <template v-slot:invoiceAmount="scope">
-              <!-- <el-form-item
+              <el-form-item
                 style="width: 100%;"
                 label-width="0"
-                :prop="'receiptPayments.' + scope.$index + '.invoiceAmount'"
+                :prop="'relatedList.' + scope.$index + '.invoiceAmount'"
                 :rules="[
                   {
-                    required: true,
+                    required: false,
                     message: '请输入开票金额',
                     trigger: 'blur'
                   },
                   {
+                    required: false,
                     validator: (rule, value, callback) => {
                       if (value === undefined || value === null || value === '') {
                         callback('请输入开票金额');
-                      } else if (parseFloat(value) <= 0) {
-                        callback('开票金额必须大于0');  
+                      } else if (parseFloat(value) <= 0 || parseFloat(value) > parseFloat(scope.row.unInvoiceAmount)) {
+                        callback('开票金额必须大于0且不超过未开票金额');  
                       } else {
                         callback();
                       }
@@ -216,31 +253,33 @@
                     trigger: 'blur'
                   }
                 ]"
-              >  -->
+              > 
                 <span v-if="dialogType === 'view'">{{ scope.row.invoiceAmount }}</span>
-                <!-- <el-input :min="0" :max="scope.row.planPaymentAmount" v-limit="{ min: 0, max: scope.row.planPaymentAmount }" v-else v-model="scope.row.invoiceAmount" type="number" @input="updateInvoiceAmount(scope.row)"></el-input> -->
-              <!-- </el-form-item> -->
+                <el-input v-else v-model="scope.row.invoiceAmount" type="number" @input="updateInvoiceAmount(scope.row)"></el-input>
+              </el-form-item>
             </template>
           </ele-pro-table>
         <!-- </el-form> -->
       </div>
-    <headerTitle title="关联物品清单信息"></headerTitle>
-    <!-- <table-info
-      v-if="dialogType != 'add' && form.detailList.length"
-      dialogType="view"
-      :form="form"
-      ref="table"
-    ></table-info> -->
-   <table-info-new
-      v-if="form.sourceType != 99"
-      dialogType="view"
-      ref="tableInfoNewRef"
-    ></table-info-new>
-    <table-info
-      v-else
-      dialogType="view"
-      ref="tableInfoNoOrderRef"
-    ></table-info>
+      <div style="margin-top: 20px;">
+        <headerTitle title="关联物品清单信息"></headerTitle>
+        <!-- <table-info
+          v-if="dialogType != 'add' && form.detailList.length"
+          dialogType="view"
+          :form="form"
+          ref="table"
+        ></table-info> -->
+      <table-info-new
+          v-if="form.sourceType != 99"
+          dialogType="view"
+          ref="tableInfoNewRef"
+        ></table-info-new>
+        <table-info
+          v-else
+          dialogType="view"
+          ref="tableInfoNoOrderRef"
+        ></table-info>
+      </div>
   </div>
 </template>
 
@@ -276,93 +315,47 @@
             fixed: 'left'
           },
           {
-            width: 150,
-            prop: 'sourceOrderDetailNo',
-            label: this.form.type == 1 ? '收款计划编码' : '付款计划编码',
-            align: 'center'
-          },
-          {
-            width: 150,
-            prop: 'relatedOrderNo',
-            label: '订单编号',
+            minWidth: 150,
+            prop: 'sourceCode',
+            label: '来源编码',
             align: 'center'
           },
+          // {
+          //   width: 150,
+          //   prop: 'relatedOrderNo',
+          //   label: '来源编号',
+          //   align: 'center'
+          // },
           {
-            width: 120,
-            prop: 'relatedOrderType',
-            label: '订单类型',
-            align: 'center',
-            formatter: (row) => {
-              return row.relatedOrderType == 1 ? '销售订单' : '采购订单'
-            }
-          },
-          {
-            width: 120,
-            prop: 'contractNo',
-            label: '合同编码',
-            align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'contractCode',
-            label: '合同编号',
-            align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'contractName',
-            label: '合同名称',
-            align: 'center'
-          },
-          {
-            prop: 'issueNumber',
-            label: '期数',
-            align: 'center'
-          },
-          {
-            width: 120,
-            prop: 'paymentType',
-            label: '款项类型',
-            align: 'center',
-            formatter: (row) => {
-              return this.paymentTypeOp.find(item => item.value == row.paymentType)?.label || ''
-            }
-          },
-          {
-            prop: 'moneyName',
-            label: '款项名称',
-            align: 'center',
-            width: 170
-          },
-          {
-            width: 150,
-            prop: 'paymentRatio',
-            label: '比例',
+            minWidth: 120,
+            prop: 'sourceType',
+            label: '来源类型',
             align: 'center',
             formatter: (row) => {
-              return row.paymentRatio ? row.paymentRatio + '%' : ''
+              return this.sourceTypeList.find(item => item.value == row.sourceType)?.label || ''
             }
           },
+          // {
+          //   width: 170,
+          //   prop: 'planPaymentAmount',
+          //   label: this.form.type == 1 ? '计划收款金额' : '计划付款金额',
+          //   align: 'center',
+          //   slot: 'planPaymentAmount'
+          // },
           {
-            width: 170,
-            prop: 'planPaymentAmount',
-            label: this.form.type == 1 ? '计划收款金额' : '计划付款金额',
-            align: 'center',
-          },
-          {
-            width: 150,
+            minWidth: 150,
             prop: 'unInvoiceAmount',
             label: '未开票金额',
             align: 'center'
           },
           {
-            width: 150,
+            minWidth: 150,
             prop: 'invoicedAmount',
             label: '已开票金额',
             align: 'center'
           },
           {
-            width: 160,
+            minWidth: 160,
             prop: 'invoiceAmount',
             label: '本次开票金额',
             align: 'center',
@@ -376,6 +369,32 @@
       return {
         paymentTypeOp,
         dialogType: 'view',
+        sourceTypeList: [
+          {
+            label: '对账单',
+            value: 1
+          },
+          {
+            label: '合同',
+            value: 2
+          },
+          {
+            label: '订单',
+            value: 3
+          },
+          {
+            label: '已付',
+            value: 4
+          },
+          {
+            label: '已收',
+            value: 5
+          },
+          {
+            label: '其他无订单无合同',
+            value: 99
+          }
+        ],
         form: {
           files: []
         }
@@ -401,7 +420,7 @@
           if (this.form.sourceType == 99) {
             this.$refs.tableInfoNoOrderRef?.setValue(this.form);
           } else {
-            this.$refs.tableInfoRef?.putValue(this.form);
+            this.$refs.tableInfoNewRef?.putValue(this.form);
           }
         })
       },

+ 37 - 49
src/views/bpm/handleTask/components/financialManage/invoiceManage/components/tableInfoNew.vue

@@ -113,36 +113,32 @@
           {
             width: 100,
             prop: 'key',
-            label: '编码',
+            label: '来源编码',
             align: 'center'
           },
+          // {
+          //   width: 100,
+          //   prop: 'key',
+          //   label: '对账日期',
+          //   align: 'center'
+          // },
           {
             width: 100,
-            prop: 'typeName',
-            label: '类型',
-            slot: 'typeName',
+            prop: 'spOrderNo',
+            label: '销售订单编码',
             align: 'center'
           },
           // {
-          //   minWidth: 100,
-          //   prop: 'sourceCode',
-          //   label: '类型编码',
-          //   slot: 'sourceCode',
-          //   align: 'center'
-          // },
-          // {
           //   width: 100,
-          //   prop: 'productCategoryName',
-          //   label: '分类',
-          //   slot: 'productCategoryName',
-          //   align: "center"
+          //   prop: 'key',
+          //   label: '发货单编码',
+          //   align: 'center'
           // },
           // {
           //   width: 100,
-          //   prop: 'productCode',
-          //   label: '编码',
-          //   slot: 'productCode',
-          //   align: "center"
+          //   prop: 'key',
+          //   label: '发货日期',
+          //   align: 'center'
           // },
           {
             minWidth: 100,
@@ -151,36 +147,7 @@
             slot: 'productName',
             align: 'center'
           },
-          {
-            minWidth: 100,
-            prop: 'modelType',
-            label: '型号',
-            slot: 'modelType',
-            align: 'center'
-          },
-
-          {
-            minWidth: 100,
-            prop: 'specification',
-            label: '规格',
-            slot: 'specification',
-            align: 'center'
-          },
-          // {
-          //   width: 100,
-          //   prop: 'unInvoiceAmount',
-          //   label: '未开票金额',
-          //   slot: 'unInvoiceAmount',
-          //   align: "center"
-          // },
-          
-          // {
-          //   width: 80,
-          //   prop: 'singleWeight',
-          //   label: '单量',
-          //   align: 'center'
-          // },
-
+        
           {
             minWidth: 150,
             prop: 'invoiceAmount',
@@ -271,6 +238,27 @@
             label: '折让合计',
             align: 'center'
           },
+          {
+            width: 100,
+            prop: 'productCode',
+            label: '产品编码',
+            align: 'center'
+          },
+          {
+            minWidth: 100,
+            prop: 'modelType',
+            label: '型号',
+            slot: 'modelType',
+            align: 'center'
+          },
+
+          {
+            minWidth: 100,
+            prop: 'specification',
+            label: '规格',
+            slot: 'specification',
+            align: 'center'
+          },
           // {
           //   width: 100,
           //   prop: 'sourceType',

+ 180 - 118
src/views/bpm/handleTask/components/financialManage/receivableManage/components/detailDialog.vue

@@ -1,110 +1,137 @@
 <template>
   <div>
-    <el-form ref="form" :model="form" :rules="rules" label-width="130px">
-      <headerTitle title="基本信息"></headerTitle>
-      <el-row :gutter="12">
-        <el-col :span="8">
-          <el-form-item
-            label="应收日期"
-            prop="receivableDate"
-            style="margin-bottom: 22px"
-          >
-            <el-date-picker
-              style="width: 100%"
-              v-model="form.receivableDate"
-              type="date"
-              value-format="yyyy-MM-dd"
+    <headerTitle title="基本信息" style="margin-top: 30px"></headerTitle>
+      <el-form ref="form" :model="dataForm" :rules="rules" label-width="120px">
+        <el-row>
+          <el-col :span="8">
+            <el-form-item label="会计科目:" prop="accountingSubjectId">
+              <ele-tree-select
+                clearable
+                filterable
+                ref="treeSelect"
+                :data="accountingSubjectList"
+                v-model="dataForm.accountingSubjectId"
+                valueKey="id"
+                labelKey="name"
+                placeholder="请选择"
+                @change="changeSubjectInfo"
+                default-expand-all
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item
+              label="应收日期"
+              prop="receivableDate"
             >
-            </el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item
-            label="应收金额"
-            prop="receivableTotalPrice"
-            style="margin-bottom: 22px"
-          >
-            <el-input-number
-              disabled
-              v-model="form.receivableTotalPrice"
-              :precision="2"
-              :controls="false"
-              style="width: 100%"
-              :min="0"
-            ></el-input-number>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item
-            label="会计科目"
-            prop="accountingSubjectId"
-            style="margin-bottom: 22px"
-          >
-            <ele-tree-select
-              clearable
-              filterable
-              ref="treeSelect"
-              :data="accountingSubjectList"
-              v-model="form.accountingSubjectId"
-              valueKey="id"
-              labelKey="name"
-              placeholder="请选择"
-              @change="changeSubjectInfo"
-              default-expand-all
-            />
-          </el-form-item>
-        </el-col>
-      </el-row>
-      <el-row :gutter="12">
-        <el-col :span="8">
-          <el-form-item
-            label="发票编码"
-            prop="invoiceCode"
-            style="margin-bottom: 22px"
-          >
-            <el-input disabled v-model="form.invoiceCode"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item
-            label="来源类型"
-            prop="sourceType"
-            style="margin-bottom: 22px"
-          >
-            <el-input
-              :value="form.sourceTypeName"
-              disabled
-            ></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item
-            label="来源编码"
-            prop="sourceCode"
-            style="margin-bottom: 22px"
-          >
-            <el-input v-model="form.sourceCode" disabled></el-input>
-          </el-form-item>
-        </el-col>
-      </el-row>
-
-      <el-row :gutter="12">
-        <el-col :span="8">
-          <el-form-item
-            label="公司名称"
-            prop="contactName"
-            style="margin-bottom: 22px"
-          >
-            <el-input disabled v-model="form.contactName"></el-input>
-          </el-form-item>
-        </el-col>
-        <el-col :span="8">
-          <el-form-item label="附件">
-            <fileMain v-model="form.files"></fileMain>
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
+              <el-date-picker
+                :disabled="dialogType == 'view'"
+                v-model="dataForm.receivableDate"
+                value-format="yyyy-MM-dd"
+                type="date"
+                style="width: 100%"
+              >
+              </el-date-picker>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="receivableTotalPrice" label="应收金额">
+              <el-input :disabled="dialogType == 'view'" v-model="dataForm.receivableTotalPrice"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="invoiceCode" label="发票编码">
+              <el-input disabled v-model="dataForm.invoiceCode"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="invoiceNo" label="发票号">
+              <el-input disabled v-model="dataForm.invoiceNo"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="category" label="发票种类">
+              <el-select
+                :disabled="true"
+                clearable
+                class="ele-block"
+                v-model="dataForm.category"
+                placeholder="请选择"
+              >
+                <el-option label="增值税专用发票" :value="1"></el-option>
+                <el-option label="增值税普通发票" :value="2"></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="contactName" label="公司名称">
+              <el-input disabled v-model="dataForm.contactName"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item label="来源类型" prop="sourceType">
+              <el-select
+                :disabled="true"
+                clearable
+                class="ele-block"
+                v-model="dataForm.sourceType"
+                placeholder="请选择"
+              >
+                <el-option label="对账单" :value="1" />
+                <el-option label="合同" :value="2"/>
+                <el-option label="售后管理" :value="4" />
+                <el-option label="销售订单" :value="3" />
+                <el-option label="发货单" :value="5" />
+                <el-option label="收款计划单" :value="7" />
+                <el-option label="采购收货单" :value="6" />
+                <el-option label="付款计划单" :value="8" />
+                <el-option label="其他" :value="99" />
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item prop="sourceCode" label="来源编码">
+              <el-input disabled v-model="dataForm.sourceCode"></el-input>
+            </el-form-item>
+          </el-col>
+        </el-row>
+
+        <el-row>
+          <el-col :span="8">
+            <el-form-item prop="remark" label="备注">
+              <el-input :disabled="dialogType == 'view'" v-model="dataForm.remark"></el-input>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item prop="files" label="附件">
+              <fileMain v-model="dataForm.files" :type="dialogType == 'view' ? 'view' : 'add'"></fileMain>
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+
+      <headerTitle title="应收信息" style="margin-top: 30px"></headerTitle>
+      <receivable-info
+        :dataForm.sync="dataForm"
+        :receivableList.sync="receivableList"
+        dialogType="view"
+        ref="receivableInfoRef"
+        @addAdvanceReceipt="addAdvanceReceipt"
+      ></receivable-info>
+
+      <headerTitle title="对账明细" style="margin-top: 30px"></headerTitle>
+      <account-detail-table
+        ref="accountDetailTableRef"
+        :datasource.sync="datasource"
+        dialogType="view"
+        :queryDimension="dataForm.queryDimension"
+        @totalChange="handleTotalChange"
+        @countChange="handleCountChange"
+      ></account-detail-table>
   </div>
 </template>
 
@@ -124,6 +151,8 @@
   import { getTreeByPid } from '@/api/classifyManage';
   import { payAndReceiveEnum } from '@/enum/dict';
   // import fileMain from "@/components/addDoc/index.vue";
+  import AccountDetailTable from '@/views/bpm/handleTask/components/saleOrder/accountstatement/accountDetailTable.vue';
+  import ReceivableInfo from '@/views/bpm/handleTask/components/saleOrder/accountstatement/receivableInfo.vue';
 
   export default {
     mixins: [dictMixins],
@@ -131,12 +160,14 @@
       // fileMain,
       tableInfo,
       personSelect,
-      fileUpload
+      fileUpload,
+      AccountDetailTable,
+      ReceivableInfo
     },
     data() {
       return {
-        dialogType: '',
-        form: {
+        dialogType: 'view',
+        dataForm: {
           accountingSubjectCode: '',
           accountingSubjectId: '',
           accountingSubjectName: '',
@@ -154,7 +185,10 @@
           sourceType: '',
           unreceiveTotalPrice: 0
         },
+        receivableList: [],
         accountingSubjectList: [],
+        statReceipt: null,
+        datasource: [],
         rules: {
           accountingSubjectId: {
             required: true,
@@ -181,21 +215,49 @@
       await this.getInfo(this.businessId);
     },
     methods: {
+      handleTotalChange(total) {
+        this.dataForm.amountTotalPrice = total;
+      },
+      handleCountChange(count) {
+        this.dataForm.totalStatementCount = count;
+      },
+      // 明细表本次对账金额变化时,按销售单号同步到应收信息对应行
+      handleStatementAmountChange(summaryMap) {
+        if (this.$refs.receivableInfoRef) {
+          this.$refs.receivableInfoRef.syncStatementAmount(summaryMap);
+        }
+      },
+      // 新增预收款:打开预收款选择弹窗
+      addAdvanceReceipt() {
+        this.$refs.advanceReceiptSelectRef.open();
+      },
       //获取详情
       async getInfo(id) {
         await this.getClassifyList(24, 'accountingSubjectList');
         let data = await getFinReceivableInfoAPI(id);
-        data.sourceTypeName = payAndReceiveEnum.find(item=>item.value==data.sourceType)?.label;
-        this.form = data;
-        console.log('获取详情', data);
-        let invoiceData = {};
-        if (data.invoiceId) {
-          invoiceData = await invoiceApplyInfoAPI(data.invoiceId);
-        }
 
-        this.form.accountingSubjectCode = invoiceData.accountingSubjectCode;
-        this.form.accountingSubjectId = invoiceData.accountingSubjectId || '';
-        this.form.accountingSubjectName = invoiceData.accountingSubjectName || '';
+        this.dataForm = {
+          ...this.dataForm,
+          ...data
+        };
+
+        this.statReceipt = data.statReceipt || null;
+
+        this.receivableList =
+        (data.statReceipt && data.statReceipt.statReceiptDetailList) || [];
+
+        this.datasource = data.productList || [];
+        // data.sourceTypeName = payAndReceiveEnum.find(item=>item.value==data.sourceType)?.label;
+        // this.form = data;
+        // console.log('获取详情', data);
+        // let invoiceData = {};
+        // if (data.invoiceId) {
+        //   invoiceData = await invoiceApplyInfoAPI(data.invoiceId);
+        // }
+
+        // this.form.accountingSubjectCode = invoiceData.accountingSubjectCode;
+        // this.form.accountingSubjectId = invoiceData.accountingSubjectId || '';
+        // this.form.accountingSubjectName = invoiceData.accountingSubjectName || '';
       },
       downloadFile(file) {
         getFile({ objectName: file.storePath }, file.name);
@@ -219,7 +281,7 @@
           this.$refs.form.validate(async (valid) => {
             if (!valid) return this.$message.warning('有必填项未填,请检查');
             const API = finReceivableUpdateAPI;
-            const res = await API(this.form);
+            const res = await API(this.dataForm);
             res.code == '0' ? resolve('1') : reject(new Error(data.message));
           });
         });

+ 5 - 0
src/views/bpm/handleTask/components/financialManage/receivableManage/submit.vue

@@ -23,6 +23,7 @@
         type="success"
         size="mini"
         v-click-once
+        :loading="saveLoading"
         @click="handleAudit(1)"
       >通过
       </el-button>
@@ -31,6 +32,7 @@
         type="danger"
         size="mini"
         v-click-once
+        :loading="saveLoading"
         @click="handleAudit(0)"
         v-if="!['starter'].includes(taskDefinitionKey)"
       >驳回
@@ -101,6 +103,7 @@ export default {
         reason: '同意',
 
       },
+      saveLoading: false,
       tabOptions: [
         {key: 'financeApprove', permissionType: 'update', name: '财务审批'},
       ],
@@ -131,11 +134,13 @@ export default {
         pass: !!status
       };
       let API = !!status ? approveTaskWithVariables : rejectTask;
+      this.saveLoading = true;
       API({
         id: this.taskId,
         reason: this.form.reason,
         variables
       }).then((res) => {
+        this.saveLoading = false;
         if (res.data.code != '-1') {
           this.$emit('handleAudit', {
             status,

+ 22 - 22
src/views/bpm/handleTask/components/saleOrder/accountstatement/page.vue

@@ -6,7 +6,7 @@
                :dataForm.sync="dataForm"
                :datasource.sync="datasource"
                :dialogType="permissionType"></sale-form>
-    <headerTitle title="对账明细" style="margin-top: 30px">
+    <!-- <headerTitle title="对账明细" style="margin-top: 30px">
       <template v-slot>
         <el-row style="font-weight: 700; color: red">
             <span>订单总金额:</span>
@@ -22,17 +22,17 @@
             <span>{{ dataForm.amountTotalPrice || 0 }}</span>
           </el-row>
       </template>
-    </headerTitle>
+    </headerTitle> -->
     <!-- <recorpayTableList
       ref="recorpayListRef"
       :dataForm="dataForm"
       :recorpayList.sync="recorpayList"
       :dialogType="permissionType"
     ></recorpayTableList> -->
-    <inventoryTable ref="inventoryTableref" :priceObj="priceObj" :dataForm="dataForm" :datasource.sync="datasource"
+    <!-- <inventoryTable ref="inventoryTableref" :priceObj="priceObj" :dataForm="dataForm" :datasource.sync="datasource"
                     :dialogType="permissionType"
-                    :taskDefinitionKey="taskDefinitionKey"></inventoryTable>
-    <!-- <headerTitle title="应收信息" style="margin-top: 30px"></headerTitle>
+                    :taskDefinitionKey="taskDefinitionKey"></inventoryTable> -->
+    <headerTitle title="应收信息" style="margin-top: 30px"></headerTitle>
       <receivable-info
         :dataForm.sync="dataForm"
         :receivableList="receivableList"
@@ -50,7 +50,7 @@
         @totalChange="handleTotalChange"
         @countChange="handleCountChange"
         @statementAmountChange="handleStatementAmountChange"
-      ></account-detail-table> -->
+      ></account-detail-table>
   </div>
 </template>
 
@@ -166,24 +166,24 @@ export default {
     //获取对账单详情
     async getInfo(id) {
       let data = await accountstatementInfoAPI(id)
-      this.datasource = data?.orderList || []
-      this.recorpayList=data?.recorpayList||[]
-      data.orderTotalAmount = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.orderAmount * 100), 0) / 100;
-      data.amountTotalPrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.statementAmount * 100), 0) / 100;
-      data.amountCompletePrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.statementedAmount * 100), 0) / 100;
-      data.amountUnCompletePrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.unStatementAmount * 100), 0) / 100;
-      this.dataForm = data
+      // this.datasource = data?.orderList || []
+      // this.recorpayList=data?.recorpayList||[]
+      // data.orderTotalAmount = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.orderAmount * 100), 0) / 100;
+      // data.amountTotalPrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.statementAmount * 100), 0) / 100;
+      // data.amountCompletePrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.statementedAmount * 100), 0) / 100;
+      // data.amountUnCompletePrice = data.orderList.reduce((pre, cur) => pre + Math.round(+cur.unStatementAmount * 100), 0) / 100;
+      // this.dataForm = data
       //this.priceObj.previousPeriodEndDebt = data.previousPeriodEndDebt
 
-      // this.datasource = data.productList || [];
-      //   this.receivableList =
-      //     (data.statReceipt && data.statReceipt.statReceiptDetailList) || [];
-      //   // 保存查询到的完整 statReceipt 对象,作为提交入参
-      //   this.statReceipt = data.statReceipt || null;
-      //   this.dataForm = {
-      //     ...this.dataForm,
-      //     ...data,
-      //   };
+      this.datasource = data.productList || [];
+        this.receivableList =
+          (data.statReceipt && data.statReceipt.statReceiptDetailList) || [];
+        // 保存查询到的完整 statReceipt 对象,作为提交入参
+        this.statReceipt = data.statReceipt || null;
+        this.dataForm = {
+          ...this.dataForm,
+          ...data,
+        };
       switch (this.dataForm.dateType) {
         case 1:
           this.dataForm.year = this.dataForm.dateValue

+ 7 - 0
src/views/bpm/handleTask/components/saleOrder/accountstatement/submit.vue

@@ -22,6 +22,7 @@
         icon="el-icon-edit-outline"
         type="success"
         size="mini"
+        :loading="saveLoading"
         @click="handleAudit(1)"
         v-click-once
       >通过
@@ -31,6 +32,7 @@
         type="danger"
         size="mini"
         v-click-once
+        :loading="saveLoading"
         @click="rejectTask(0)">驳回
       </el-button>
 
@@ -109,6 +111,7 @@ export default {
         {key: 'uploadReceipt', permissionType: 'view', name: '上传回执'},
       ],
       permissionType: '',
+      saveLoading: false,
     };
   },
   created() {
@@ -153,11 +156,15 @@ export default {
         let variables = {
           pass: !!pass,
         }
+
+        this.saveLoading = true;
+
         approveTaskWithVariablesAPI({
           id: this.taskId,
           reason: this.form.reason,
           variables
         }).then((res) => {
+          this.saveLoading = false;
           if (res.code != '-1') {
             this.$emit('handleAudit', {
               status: pass,