| | |
| | | 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; |
| | | }; |
| | | |
| | | // 以右侧当前展示数据为准 |
| | | const rows = receiptRecord.value || []; |
| | |
| | | 0 |
| | | ); |
| | | |
| | | // 应收金额保持主表当前客户口径 |
| | | let unReceiptTotal = 0; |
| | | if (rows.length > 0) { |
| | | const index = tableData.value.findIndex((item) => item.id == customerId.value); |
| | | if (index > -1) { |
| | | unReceiptTotal = toNum(tableData.value[index]?.unReceiptPaymentAmount); |
| | | const latestRowByContract = new Map(); |
| | | for (const row of rows) { |
| | | const contractNo = row?.salesContractNo; |
| | | if (!contractNo) continue; |
| | | const existed = latestRowByContract.get(contractNo); |
| | | const currentTime = toTime(row?.receiptPaymentDate); |
| | | const existedTime = toTime(existed?.receiptPaymentDate); |
| | | const shouldReplace = |
| | | !existed || |
| | | currentTime > existedTime || |
| | | (currentTime === existedTime && toId(row?.id) > toId(existed?.id)); |
| | | if (shouldReplace) { |
| | | latestRowByContract.set(contractNo, row); |
| | | } |
| | | } |
| | | const unReceiptTotal = Array.from(latestRowByContract.values()).reduce( |
| | | (sum, row) => sum + toNum(row?.unReceiptPaymentAmount), |
| | | 0 |
| | | ); |
| | | |
| | | const columns = param?.columns || []; |
| | | return columns.map((column, index) => { |