gaoluyang
18 小时以前 5a537b356ffc7f36e3360bdb2d53496078149ad2
src/views/procurementManagement/invoiceEntry/components/Modal.vue
@@ -411,13 +411,15 @@
               item.futureTicketsAmount !== undefined ? item.futureTicketsAmount : (item.taxInclusiveTotalPrice || 0)
            );
            // 新增时:本次开票默认不填(0),避免一打开就把“未来票数”扣成 0
            item.ticketsNum = 0;
            item.ticketsAmount = 0;
            // 页面展示的“未来票数/未来票金额”默认展示原始未来值
            item.futureTickets = item.tempFutureTickets;
            item.futureTicketsAmount = item.tempFutureTicketsAmount;
            // 新增时:本次开票数默认 = 未来票数(且不能大于未来票数)
            item.ticketsNum = Number(item.tempFutureTickets || 0);
            // 联动计算本次开票金额、未来票数、未来票金额
            const unitPrice = Number(item.taxInclusiveUnitPrice || 0);
            item.ticketsAmount = Number((item.ticketsNum * unitPrice).toFixed(2));
            item.futureTickets = Number((item.tempFutureTickets - item.ticketsNum).toFixed(2));
            item.futureTicketsAmount = Number(
               (item.tempFutureTicketsAmount - item.ticketsAmount).toFixed(2)
            );
         });
         
         form.productData = allProductData;
@@ -426,7 +428,7 @@
         const totalAmount = allProductData.reduce((sum, item) => {
            return sum + (Number(item.ticketsAmount) || 0);
         }, 0);
         form.invoiceAmount = totalAmount.toFixed(2);
         form.invoiceAmount = Number(totalAmount.toFixed(2));
         
         // 存储选中的合同数据
         selectedContracts.value = selectedRows;
@@ -467,11 +469,11 @@
      row.ticketsNum = Number(row.tempFutureTickets || 0);
   }
   // 计算本次来票金额
   row.ticketsAmount = (row.ticketsNum * row.taxInclusiveUnitPrice).toFixed(2)
   row.ticketsAmount = Number((Number(row.ticketsNum) * Number(row.taxInclusiveUnitPrice || 0)).toFixed(2));
   // 计算未来票数
   row.futureTickets = (row.tempFutureTickets - row.ticketsNum).toFixed(2)
   row.futureTickets = Number((Number(row.tempFutureTickets || 0) - Number(row.ticketsNum || 0)).toFixed(2));
   // 计算未来票金额
   row.futureTicketsAmount = (row.tempFutureTicketsAmount - row.ticketsAmount).toFixed(2)
   row.futureTicketsAmount = Number((Number(row.tempFutureTicketsAmount || 0) - Number(row.ticketsAmount || 0)).toFixed(2));
   calculateinvoiceAmount();
};
@@ -494,12 +496,12 @@
      proxy.$modal.msgWarning("本次开票数不能大于未来票数");
      row.ticketsNum = Number(row.tempFutureTickets || 0);
      // 重新计算本次来票金额
      row.ticketsAmount = (row.ticketsNum * row.taxInclusiveUnitPrice).toFixed(2);
      row.ticketsAmount = Number((Number(row.ticketsNum) * Number(row.taxInclusiveUnitPrice || 0)).toFixed(2));
   }
   // 计算未来票数
   row.futureTickets = (row.tempFutureTickets - row.ticketsNum).toFixed(2)
   row.futureTickets = Number((Number(row.tempFutureTickets || 0) - Number(row.ticketsNum || 0)).toFixed(2));
   // 计算未来票金额
   row.futureTicketsAmount = (row.tempFutureTicketsAmount - row.ticketsAmount).toFixed(2)
   row.futureTicketsAmount = Number((Number(row.tempFutureTicketsAmount || 0) - Number(row.ticketsAmount || 0)).toFixed(2));
   calculateinvoiceAmount();
};
@@ -510,7 +512,7 @@
         invoiceAmountTotal += Number(item.ticketsAmount);
      }
   });
   form.invoiceAmount = invoiceAmountTotal.toFixed(2);
   form.invoiceAmount = Number(invoiceAmountTotal.toFixed(2));
};
const open = async (type, selectedRows) => {
@@ -518,9 +520,15 @@
   
   // 如果是批量操作,设置标题
   if (Array.isArray(selectedRows) && selectedRows.length > 1) {
      modalOptions.title = `批量新增 (${selectedRows.length}条)`;
      modalOptions.value = {
         ...(modalOptions.value || {}),
         title: `批量新增 (${selectedRows.length}条)`,
      };
   } else {
      modalOptions.title = type === "add" ? "新增" : "编辑";
      modalOptions.value = {
         ...(modalOptions.value || {}),
         title: type === "add" ? "新增" : "编辑",
      };
   }
   
   // 如果是单个操作,获取id