From b0780c607bd25d672a25d68ad04af18417f03772 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期四, 23 四月 2026 09:40:07 +0800
Subject: [PATCH] fix: 供应商往来付款记录的合同金额去重
---
src/views/procurementManagement/paymentLedger/index.vue | 52 +++++++++++++++++++++++++++++++++++++---------------
1 files changed, 37 insertions(+), 15 deletions(-)
diff --git a/src/views/procurementManagement/paymentLedger/index.vue b/src/views/procurementManagement/paymentLedger/index.vue
index 294561d..f86e188 100644
--- a/src/views/procurementManagement/paymentLedger/index.vue
+++ b/src/views/procurementManagement/paymentLedger/index.vue
@@ -191,23 +191,45 @@
};
// 瀛愯〃鍚堣鏂规硶
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;
+ };
+
+ // 浠ュ綋鍓嶅彸渚ц〃鏍煎睍绀虹殑鏁版嵁涓哄噯锛堝垎椤� 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 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);
+ return "";
+ });
+
+ if (summary.length > 0) {
+ summary[summary.length - 1] =
+ rows.length > 0 ? toNum(rows[rows.length - 1]?.payableAmount).toFixed(2) : "0.00";
+ }
+
+ return summary;
};
/** 鎼滅储鎸夐挳鎿嶄綔 */
const handleQuery = () => {
--
Gitblit v1.9.3