From 8a3bfdab689684fe5ee19b2f69842e450fc7c60a Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期五, 30 一月 2026 14:02:39 +0800
Subject: [PATCH] fix: 完成生产数据分析页面

---
 src/views/salesManagement/receiptPayment/index.vue |   36 +++++++++++++++++++++++++++++++++---
 1 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/views/salesManagement/receiptPayment/index.vue b/src/views/salesManagement/receiptPayment/index.vue
index 40e6f14..7b03d7d 100644
--- a/src/views/salesManagement/receiptPayment/index.vue
+++ b/src/views/salesManagement/receiptPayment/index.vue
@@ -421,7 +421,11 @@
     proxy.$modal.msgError("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
     return;
   }
-  const validRows = selectedRows.value.filter((item) => item.noReceiptAmount !== 0);
+  // 浠呭厑璁糕�滃緟鍥炴閲戦 > 0鈥濈殑璁板綍杩涘叆鏂板鍥炴寮圭獥锛屽苟杩囨护鎺夊彲鑳芥贩鍏ョ殑绌哄璞�
+  const validRows = selectedRows.value.filter((item) => {
+    if (!item || !item.id) return false;
+    return Number(item.pendingInvoiceTotal ?? 0) > 0;
+  });
   if (validRows.length === 0) {
     proxy.$modal.msgWarning("鎵�閫夎褰曞潎鏃犻渶鍥炴");
     return;
@@ -433,7 +437,8 @@
     specificationModel: row.specificationModel || "",
     pendingInvoiceTotal: Number(row.pendingInvoiceTotal || 0),
     taxRate: row.taxRate ?? "",
-    receiptPaymentAmount: "",
+    // 榛樿鏈鍥炴閲戦 = 寰呭洖娆鹃噾棰�
+    receiptPaymentAmount: Number(row.pendingInvoiceTotal || 0),
     receiptPaymentType: "",
     registrant: userStore.nickName,
     receiptPaymentDate: "",
@@ -484,6 +489,8 @@
 const closeDia = () => {
   forms.value = [];
   dialogFormVisible.value = false;
+  // 閬垮厤浜屾鎵撳紑寮圭獥鏃朵粛鎼哄甫涓婁竴娆$殑閫夋嫨瀵艰嚧鈥滃鍑轰竴琛�/鑴忔暟鎹��
+  selectedRows.value = [];
 };
 
 // 鍒犻櫎鍥炴璁板綍
@@ -518,12 +525,35 @@
 
 // 淇濆瓨鍥炴璁板綍
 const saveReceiptPayment = (row) => {
+  // 瀛愯〃鍥炴閲戦鍚堣鏍¢獙锛氭墍鏈夊洖娆捐褰曢噾棰濅箣鍜屼笉鑳藉ぇ浜庣埗鏁版嵁鍚堝悓閲戦
+  // 杩欓噷鐖舵暟鎹�滃悎鍚岄噾棰濃�濇寜锛氬凡鍥炴閲戦( invoiceTotal ) + 寰呭洖娆鹃噾棰�( pendingInvoiceTotal ) 璁$畻
+  const findParentRowByChildId = (childId) => {
+    return tableData.value.find((p) =>
+      Array.isArray(p.children) && p.children.some((c) => c.id === childId)
+    );
+  };
+  const parentRow = findParentRowByChildId(row.id);
+  if (parentRow) {
+    const contractAmount =
+      Number(parentRow.invoiceTotal || 0) + Number(parentRow.pendingInvoiceTotal || 0);
+    const sumReceipt = (parentRow.children || []).reduce((sum, item) => {
+      const val = Number(item?.receiptPaymentAmount ?? 0);
+      return sum + (Number.isFinite(val) ? val : 0);
+    }, 0);
+    if (sumReceipt > contractAmount) {
+      proxy.$modal.msgError(
+        `鍥炴閲戦鍚堣(${sumReceipt.toFixed(2)})涓嶈兘澶т簬鍚堝悓閲戦(${contractAmount.toFixed(2)})`
+      );
+      return;
+    }
+  }
+
   let updateData = {
     id: row.id,
     receiptPaymentType: row.receiptPaymentType,
     receiptPaymentAmount: row.receiptPaymentAmount,
   };
-  receiptPaymentSaveOrUpdate(updateData).then((res) => {
+  receiptPaymentSaveOrUpdate([updateData]).then((res) => {
     row.editType = !row.editType;
 		getList();
 		proxy.$modal.msgSuccess("鎻愪氦鎴愬姛");

--
Gitblit v1.9.3