| | |
| | | }; |
| | | // 子表合计方法 |
| | | 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 = () => { |