diff --git a/static/app.js b/static/app.js index bc19f6b..278ca7e 100644 --- a/static/app.js +++ b/static/app.js @@ -461,7 +461,10 @@ function renderFinance() { const gross = pf["gross_"+m.replace("-","_")] || 0; return `${rev ? money(rev) : '—'}
${gross ? money(gross) : '—'}`; }).join(""); - return `${pf.customer_name}${pf.business_type}${pf.status === "已签单" ? badge("已签") : badge(pf.status,"amber")}${money(pf.sign_amount)}${mCols}${pf.sales_person || ""}`; + const totalRev = months.reduce((s,m) => s + (pf["rev_"+m.replace("-","_")]||0), 0); + const totalGross = months.reduce((s,m) => s + (pf["gross_"+m.replace("-","_")]||0), 0); + const totalCol = `${totalRev ? money(totalRev) : '—'}
${totalGross ? money(totalGross) : '—'}`; + return `${pf.customer_name}${pf.business_type}${pf.status === "已签单" ? badge("已签") : badge(pf.status,"amber")}${money(pf.sign_amount)}${mCols}${totalCol}${pf.sales_person || ""}`; }; document.querySelector("#finance").innerHTML = `
@@ -471,9 +474,9 @@ function renderFinance() { ${card(`

月度趋势

`, "p-5")}
- + - ${card(`

项目明细 (${pfs.length})

${[["已签单","已签"],["待签","待签"]].map(([k,v]) => ``).join("")}
${monthLabels.map(l => ``).join("")}${pfs.filter(x => x.status === state.finFilter).map(renderPfRow).join("")}
客户类型状态签约金额${l}
确收/毛利
销售
`, "p-4")} + ${card(`

项目明细 (${pfs.length})

${[["已签单","已签"],["待签","待签"]].map(([k,v]) => ``).join("")}
${monthLabels.map(l => ``).join("")}${pfs.filter(x => x.status === state.finFilter).map(renderPfRow).join("")}
客户类型状态签约金额${l}
确收/毛利
总计
确收/毛利
销售
`, "p-4")}
`; if (window.lucide) window.lucide.createIcons(); } @@ -502,6 +505,11 @@ window.openPfEditModal = (pfId) => { form.querySelector('[name="rev_2026_' + m + '"]').value = pf["rev_2026_" + m] || ""; form.querySelector('[name="gross_2026_' + m + '"]').value = pf["gross_2026_" + m] || ""; } + // Calculate totals + const totalRev = (pf.rev_2026_06||0) + (pf.rev_2026_07||0) + (pf.rev_2026_08||0) + (pf.rev_2026_09||0); + const totalGross = (pf.gross_2026_06||0) + (pf.gross_2026_07||0) + (pf.gross_2026_08||0) + (pf.gross_2026_09||0); + document.querySelector("#total-rev-display").value = money(totalRev); + document.querySelector("#total-gross-display").value = money(totalGross); openFinanceModal(); }; window.toggleFinanceChart = () => {