From 0f30fb5488c0d642e13418ac15f38efda17e08de Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 24 四月 2026 11:58:55 +0800
Subject: [PATCH] fix: 库存管理接口调整,产品大类下拉只显示对应的子类

---
 src/views/procurementManagement/paymentLedger/index.vue |   77 ++++++++++++++++++++++++++++++--------
 1 files changed, 61 insertions(+), 16 deletions(-)

diff --git a/src/views/procurementManagement/paymentLedger/index.vue b/src/views/procurementManagement/paymentLedger/index.vue
index db34a7f..e707d08 100644
--- a/src/views/procurementManagement/paymentLedger/index.vue
+++ b/src/views/procurementManagement/paymentLedger/index.vue
@@ -191,23 +191,68 @@
 };
 // 瀛愯〃鍚堣鏂规硶
 const summarizeMainTable1 = (param) => {
-  let summarizeTable = proxy.summarizeTable(
-    param,
-    ["invoiceAmount", "paymentAmount"],
-    {
-      ticketsNum: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
-      futureTickets: { noDecimal: true }, // 涓嶄繚鐣欏皬鏁�
+  const toNum = (v) => {
+    const n = Number(v);
+    return Number.isFinite(n) ? n : 0;
+  };
+  const toTime = (v) => {
+    const t = new Date(v).getTime();
+    return Number.isFinite(t) ? t : -Infinity;
+  };
+  const toId = (v) => {
+    const n = Number(v);
+    return Number.isFinite(n) ? n : -Infinity;
+  };
+
+  // 浠ュ綋鍓嶅彸渚ц〃鏍煎睍绀虹殑鏁版嵁涓哄噯锛堝垎椤� slice 鍚庣殑鏁版嵁锛�
+  const rows = originalTableDataSon.value || [];
+
+  // 鍚堝悓閲戦锛氭寜閲囪喘鍚堝悓鍙峰幓閲嶅悗鍚堣
+  const invoiceByContract = new Map();
+  for (const r of rows) {
+    const contractNo = r?.purchaseContractNumber;
+    if (!contractNo) continue;
+    if (!invoiceByContract.has(contractNo)) {
+      invoiceByContract.set(contractNo, toNum(r?.invoiceAmount));
     }
-  );
-  if (originalTableDataSon.value.length > 0) {
-    summarizeTable[summarizeTable.length - 1] =
-      originalTableDataSon.value[
-        originalTableDataSon.value.length - 1
-      ].payableAmount.toFixed(2);
-  } else {
-    summarizeTable[summarizeTable.length - 1] = 0.0;
   }
-  return summarizeTable;
+  const invoiceTotal = Array.from(invoiceByContract.values()).reduce(
+    (sum, v) => sum + v,
+    0
+  );
+
+  const paymentTotal = rows.reduce((sum, r) => sum + toNum(r?.paymentAmount), 0);
+  const latestRowByContract = new Map();
+  for (const r of rows) {
+    const contractNo = r?.purchaseContractNumber;
+    if (!contractNo) continue;
+    const existed = latestRowByContract.get(contractNo);
+    const currentTime = toTime(r?.paymentDate);
+    const existedTime = toTime(existed?.paymentDate);
+    const shouldReplace =
+      !existed ||
+      currentTime > existedTime ||
+      (currentTime === existedTime && toId(r?.id) > toId(existed?.id));
+    if (shouldReplace) {
+      latestRowByContract.set(contractNo, r);
+    }
+  }
+  const payableTotal = Array.from(latestRowByContract.values()).reduce(
+    (sum, r) => sum + toNum(r?.payableAmount),
+    0
+  );
+
+  const columns = param?.columns || [];
+  const summary = columns.map((col, idx) => {
+    if (idx === 0) return "鍚堣";
+    const prop = col?.property ?? col?.prop;
+    if (prop === "invoiceAmount") return invoiceTotal.toFixed(2);
+    if (prop === "paymentAmount") return paymentTotal.toFixed(2);
+    if (prop === "payableAmount") return payableTotal.toFixed(2);
+    return "";
+  });
+
+  return summary;
 };
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 const handleQuery = () => {
@@ -238,7 +283,7 @@
 
 const getPaymenRecordtList = (supplierId) => {
   tableLoadingSon.value = true;
-  paymentRecordList(supplierId)
+  paymentRecordList({supplierId: supplierId})
     .then((res) => {
       tableLoadingSon.value = false;
       tableDataSon.value = res.data;

--
Gitblit v1.9.3