Преглед изворни кода

fix(发票管理): 修复开票金额校验逻辑和按钮重复点击问题

liujt пре 4 месеци
родитељ
комит
830999c8d3

+ 6 - 3
src/views/financialManage/invoiceManage/components/addOrEditDialogNew.vue

@@ -333,14 +333,15 @@
       ></table-info-new>
     </div>
     <div slot="footer">
-      <el-button type="primary" @click="handleSave(0)">保存</el-button>
+      <el-button type="primary" v-click-once @click="handleSave(0)">保存</el-button>
       <el-button
         type="primary"
         v-if="isNeed_process_is_close"
+         v-click-once
         @click="handleSave(1)"
         >提交</el-button
       >
-      <el-button @click="cancel">返回</el-button>
+      <el-button  v-click-once @click="cancel">返回</el-button>
     </div>
     <process-submit-dialog
       api-fun-name="fininvoiceapplyStatusAPI"
@@ -970,7 +971,9 @@
       //获取详情
       async getInfo(id) {
         this.form = await invoiceApplyInfoV2API(id);
-        this.$refs.tableInfoRef.setValue(this.form);
+        this.$nextTick(() => {
+          this.$refs.tableInfoRef.putValue(this.form);
+        })
       },
 
       //获取分类管理中的数据

+ 26 - 22
src/views/financialManage/invoiceManage/components/tableInfoNew.vue

@@ -351,8 +351,9 @@
     methods: {
       convertToArrayFormat(data) {
           return Object.keys(data.productMap).map(key => {
-            console.log('key', key);
+            console.log('key!!!', key);
               const paymentItem = data.receiptPayments?.filter(item => item?.relatedOrderNo == key)|| [];
+              console.log('paymentItem', paymentItem);
               return {
                   key: key,
                   amountTotalPrice: paymentItem.length ? paymentItem.reduce((acc, cur) => acc + cur.invoiceAmount, 0) : 0,
@@ -374,8 +375,8 @@
               sum += Number(r.invoiceAmount);
             }
           });
-          if(val && +val > +this.tableForm.detailList[idx].details[index].discountAmount) {
-            this.$message.error('物品开票金额不能大于折让合计');
+          if(val && +val > +this.tableForm.detailList[idx].details[index].unInvoiceAmount) {
+            this.$message.error('物品开票金额不能大于未开票金额');
             this.$set(this.tableForm.detailList[idx].details[index], 'invoiceAmount', '');
             return;
           }
@@ -449,9 +450,12 @@
         this.setSelectData(row);
       },
       putValue(data) {
-        console.log('tableInfoNew putValue', data);
-        data.detailList = this.convertToArrayFormat(data);
-        this.tableForm = data;
+        let tempData = JSON.parse(JSON.stringify(data));
+        console.log('tableInfoNew putValue', tempData);
+        tempData.detailList = this.convertToArrayFormat(tempData);
+        console.log('data.detailList', data.detailList);
+        this.tableForm = tempData;
+        console.log('tableInfoNew putValue~~~', this.tableForm);
       },
       setValue(data) {
         let tempData = JSON.parse(JSON.stringify(data));
@@ -485,7 +489,7 @@
         // this.$refs.table.reload();
       },
       /**
-       * 分配开票金额到明细项(根据discountAmount限制)
+       * 分配开票金额到明细项(根据未开票金额unInvoiceAmount限制)
        * @param {Array|Object} data - 明细列表或单个明细对象
        * @returns {Array|Object} 处理后的数据
        */
@@ -503,15 +507,15 @@
                   // 剩余金额为0,分配0
                   detail.invoiceAmount = 0;
                 } else {
-                  // 获取当前明细的discountAmount
-                  const discountAmount = Number(detail.discountAmount) || 0;
+                  // 获取当前明细的unInvoiceAmount
+                  const unInvoiceAmount = Number(detail.unInvoiceAmount) || 0;
                   
-                  if (remainingTotal > discountAmount) {
-                    // 剩余金额大于discountAmount,分配discountAmount
-                    detail.invoiceAmount = discountAmount;
-                    remainingTotal -= discountAmount;
+                  if (remainingTotal > unInvoiceAmount) {
+                    // 剩余金额大于unInvoiceAmount,分配unInvoiceAmount
+                    detail.invoiceAmount = unInvoiceAmount;
+                    remainingTotal -= unInvoiceAmount;
                   } else {
-                    // 剩余金额小于等于discountAmount,分配剩余金额
+                    // 剩余金额小于等于unInvoiceAmount,分配剩余金额
                     detail.invoiceAmount = remainingTotal;
                     remainingTotal = 0;
                   }
@@ -531,15 +535,15 @@
               // 剩余金额为0,分配0
               detail.invoiceAmount = 0;
             } else {
-              // 获取当前明细的discountAmount
-              const discountAmount = Number(detail.discountAmount) || 0;
+              // 获取当前明细的unInvoiceAmount
+              const unInvoiceAmount = Number(detail.unInvoiceAmount) || 0;
               
-              if (remainingTotal > discountAmount) {
-                // 剩余金额大于discountAmount,分配discountAmount
-                detail.invoiceAmount = discountAmount;
-                remainingTotal -= discountAmount;
+              if (remainingTotal > unInvoiceAmount) {
+                // 剩余金额大于unInvoiceAmount,分配unInvoiceAmount
+                detail.invoiceAmount = unInvoiceAmount;
+                remainingTotal -= unInvoiceAmount;
               } else {
-                // 剩余金额小于等于discountAmount,分配剩余金额
+                // 剩余金额小于等于unInvoiceAmount,分配剩余金额
                 detail.invoiceAmount = remainingTotal;
                 remainingTotal = 0;
               }
@@ -556,7 +560,7 @@
         // let detail = this.tableForm.detailList[index];
         // console.log('tableInfoNew setPrice', row, data, index);
         const paymentItem = data.filter(item => item?.relatedOrderNo == row.relatedOrderNo);
-        // console.log('tableInfoNew paymentItem', paymentItem);
+        console.log('tableInfoNew~~~', this.tableForm.detailList[index]);
         this.tableForm.detailList[index].amountTotalPrice = paymentItem.length ? paymentItem.reduce((acc, cur) => acc + +cur.invoiceAmount, 0) : 0;
         this.tableForm.detailList[index].defaultAmountTotalPrice = paymentItem.length ? paymentItem.reduce((acc, cur) => acc + +cur.invoiceAmount, 0) : 0;
         // console.log('tableInfoNew tableForm', this.tableForm.detailList);