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 => `${l} 确收/毛利 | `).join("")}销售 |
${pfs.filter(x => x.status === state.finFilter).map(renderPfRow).join("")}
`, "p-4")}
+ ${card(`
项目明细 (${pfs.length})
${[["已签单","已签"],["待签","待签"]].map(([k,v]) => ``).join("")}
| 客户 | 类型 | 状态 | 签约金额 | ${monthLabels.map(l => `${l} 确收/毛利 | `).join("")}总计 确收/毛利 | 销售 |
${pfs.filter(x => x.status === state.finFilter).map(renderPfRow).join("")}
`, "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 = () => {