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 | 97 ++++++++++++++++++++++++------------------------
1 files changed, 48 insertions(+), 49 deletions(-)
diff --git a/src/views/procurementManagement/paymentLedger/index.vue b/src/views/procurementManagement/paymentLedger/index.vue
index 741e6ac..f86e188 100644
--- a/src/views/procurementManagement/paymentLedger/index.vue
+++ b/src/views/procurementManagement/paymentLedger/index.vue
@@ -43,7 +43,7 @@
/>
<el-table-column label="渚涘簲鍟嗗悕绉�" prop="supplierName" />
<el-table-column
- label="鍙戠エ閲戦(鍏�)"
+ label="鍚堝悓閲戦(鍏�)"
prop="invoiceAmount"
show-overflow-tooltip
:formatter="formattedNumber"
@@ -83,6 +83,7 @@
:column="tableColumnSon"
:tableData="originalTableDataSon"
:isSelection="false"
+ :isShowPagination="false"
:tableLoading="tableLoadingSon"
:isShowSummary="isShowSummarySon"
:summaryMethod="summarizeMainTable1"
@@ -94,14 +95,6 @@
</el-text>
</template>
</PIMTable>
- <pagination
- v-show="sonTotal > 0"
- :total="sonTotal"
- @pagination="sonPaginationSearch"
- :layout="page.layout"
- :page="sonPage.current"
- :limit="sonPage.size"
- />
</div>
</el-col>
</el-row>
@@ -117,25 +110,6 @@
} from "@/api/procurementManagement/paymentLedger.js";
import Pagination from "../../../components/PIMTable/Pagination.vue";
-const tableColumn = ref([
- {
- label: "渚涘簲鍟嗗悕绉�",
- prop: "supplierName",
- width:240
- },
- {
- label: "鍙戠エ閲戦(鍏�)",
- prop: "invoiceAmount",
- },
- {
- label: "浠樻閲戦(鍏�)",
- prop: "paymentAmount",
- },
- {
- label: "搴斾粯閲戦(鍏�)",
- prop: "payableAmount",
- },
-]);
const tableData = ref([]);
const tableLoading = ref(false);
const data = reactive({
@@ -164,11 +138,16 @@
const tableColumnSon = ref([
{
label: "鍙戠敓鏃ユ湡",
- prop: "happenTime",
+ prop: "paymentDate",
width: 110,
},
{
- label: "鍙戠エ閲戦(鍏�)",
+ label: "閲囪喘鍚堝悓鍙�",
+ prop: "purchaseContractNumber",
+ width: 150,
+ },
+ {
+ label: "鍚堝悓閲戦(鍏�)",
prop: "invoiceAmount",
width: 200,
formatData: (params) => {
@@ -177,7 +156,7 @@
},
{
label: "浠樻閲戦(鍏�)",
- prop: "currentPaymentAmount",
+ prop: "paymentAmount",
width: 200,
formatData: (params) => {
return params ? parseFloat(params).toFixed(2) : 0;
@@ -212,23 +191,45 @@
};
// 瀛愯〃鍚堣鏂规硶
const summarizeMainTable1 = (param) => {
- let summarizeTable = proxy.summarizeTable(
- param,
- ["invoiceAmount", "currentPaymentAmount"],
- {
- 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 = () => {
@@ -245,8 +246,6 @@
paymentLedgerList({
...searchForm.value,
...page,
- detailPageNum: detailPageNum.value, // 鏂板
- detailPageSize: detailPageSize.value, // 鏂板
}).then((res) => {
let result = res.data;
tableLoading.value = false;
@@ -261,7 +260,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