gaoluyang
6 天以前 6b35989783d91899169f89e21a7d3734d8cadc1d
src/views/procurementManagement/invoiceEntry/components/Modal.vue
@@ -1,5 +1,5 @@
<template>
   <el-dialog :title="modalOptions.title" v-model="visible" width="70%">
   <el-dialog :title="modalOptions.title" v-model="visible" width="70%" draggable>
      <el-form
         ref="formRef"
         :model="form"
@@ -408,7 +408,6 @@
         
         // 设置表单数据(使用第一个合同的基本信息,采购合同号留空)
         form.purchaseLedgerNo = ""; // 采购合同号留空,因为会在产品表格中分别显示
         form.invoiceAmount = 0;
         form.invoiceNumber = "";
         form.entryDate = dayjs().format("YYYY-MM-DD");
         form.enterDate = dayjs().format("YYYY-MM-DD");
@@ -419,7 +418,27 @@
         form.issUerId = userStore.id;
         form.issUer = userStore.nickName;
         
         // 设置产品数据,并初始化开票数量和金额
         allProductData.forEach(item => {
            // 本次开票数默认为总数量
            item.ticketsNum = Number(item.quantity || 0);
            // 本次开票金额默认为含税总价
            item.ticketsAmount = Number(item.taxInclusiveTotalPrice || 0);
            // 保存原始未来票数和金额(用于计算)
            item.tempFutureTickets = Number(item.quantity || 0);
            item.tempFutureTicketsAmount = Number(item.taxInclusiveTotalPrice || 0);
            // 未来票数和金额初始为0(因为全部开票)
            item.futureTickets = 0;
            item.futureTicketsAmount = 0;
         });
         form.productData = allProductData;
         // 计算发票金额:所有产品的含税总价之和
         const totalAmount = allProductData.reduce((sum, item) => {
            return sum + (Number(item.taxInclusiveTotalPrice) || 0);
         }, 0);
         form.invoiceAmount = totalAmount.toFixed(2);
         
         // 存储选中的合同数据
         selectedContracts.value = selectedRows;
@@ -586,45 +605,45 @@
               proxy.$modal.msgError("批量登记失败");
            });
         } else {
            // 单个合同提交逻辑
            const singleContract = selectedContracts.value[0];
            const singleForm = {
               // 基础表单数据
               invoiceNumber: form.invoiceNumber,
               invoiceAmount: form.invoiceAmount,
               entryDate: form.entryDate,
               enterDate: form.enterDate,
               issUerId: form.issUerId, // 录入人id
               issUer: form.issUer, // 录入人
               tempFileIds: form.tempFileIds,
               // 单个合同提交逻辑 - 以数组格式传递
               const singleContract = selectedContracts.value[0];
               const singleFormArray = [{
                  // 基础表单数据
                  invoiceNumber: form.invoiceNumber,
                  invoiceAmount: form.invoiceAmount,
                  entryDate: form.entryDate,
                  enterDate: form.enterDate,
                  issUerId: form.issUerId, // 录入人id
                  issUer: form.issUer, // 录入人
                  tempFileIds: form.tempFileIds,
                  // 合同实际信息
                  purchaseLedgerId: singleContract.id, // 使用id作为字段名,值为purchaseLedgerId
                  purchaseContractNumber: singleContract.purchaseContractNumber, // 使用实际的采购合同号
                  salesContractNo: singleContract.salesContractNo, // 使用实际的销售合同号
                  supplierName: singleContract.supplierName, // 使用实际的供应商名称
                  projectName: singleContract.projectName, // 使用实际的项目名称
                  // 产品数据
                  productData: proxy.HaveJson(form.productData),
                  // 批量标识
                  isBatch: false,
                  type: 4
               }];
               
               // 合同实际信息
               purchaseLedgerId: singleContract.id, // 使用id作为字段名,值为purchaseLedgerId
               purchaseContractNumber: singleContract.purchaseContractNumber, // 使用实际的采购合同号
               salesContractNo: singleContract.salesContractNo, // 使用实际的销售合同号
               supplierName: singleContract.supplierName, // 使用实际的供应商名称
               projectName: singleContract.projectName, // 使用实际的项目名称
               // 产品数据
               productData: proxy.HaveJson(form.productData),
               // 批量标识
               isBatch: false,
               type: 4
            };
            modalLoading.value = true;
            addOrUpdateRegistration(singleForm).then((res) => {
               modalLoading.value = false;
               if (res.code === 200) {
                  proxy.$modal.msgSuccess("登记成功");
                  closeAndRefresh();
               }
            }).catch(() => {
               modalLoading.value = false;
               proxy.$modal.msgError("登记失败");
            });
         }
               modalLoading.value = true;
               addOrUpdateRegistration(singleFormArray).then((res) => {
                  modalLoading.value = false;
                  if (res.code === 200) {
                     proxy.$modal.msgSuccess("登记成功");
                     closeAndRefresh();
                  }
               }).catch(() => {
                  modalLoading.value = false;
                  proxy.$modal.msgError("登记失败");
               });
            }
      }
   });
};