diff --git a/static/modules/plan.js b/static/modules/plan.js
index 6e2ddf6..1d09786 100644
--- a/static/modules/plan.js
+++ b/static/modules/plan.js
@@ -298,9 +298,9 @@ function renderPlan() {
{ key: 'payment', label: '回款' },
{ key: 'pending', label: '应收' },
{ key: 'pay_rate', label: '回款率' },
+ { key: 'cost', label: '成本' },
+ { key: 'paid', label: '支出' },
{ key: 'payable', label: '应付' },
- { key: 'cost', label: '当期成本' },
- { key: 'paid', label: '当期流出' },
{ key: 'cashflow', label: '现金流' },
];
const UNSIGNED_COLS = [
@@ -310,7 +310,7 @@ function renderPlan() {
{ key: 'sign_amount', label: '签约金额' },
{ key: 'sign_month', label: '签约月份' },
{ key: 'gross', label: '毛利' },
- { key: 'cost', label: '当期成本' },
+ { key: 'cost', label: '成本' },
{ key: 'profit', label: '项目利润' },
];
@@ -396,7 +396,7 @@ function renderPlan() {
var bCf = bPay - ePaid;
return '
| ' + m + ' | ' + (bRev ? money(bRev) : '—') + ' | ' + (bGross ? money(bGross) : '—') + ' | | ' + (bPay ? money(bPay) : '—') + ' | | ' + (eCost ? money(eCost) : '—') + ' | ' + (ePaid ? money(ePaid) : '—') + ' | | ' + (bCf ? money(bCf) : '—') + ' | ' + (bRev - bPay ? money(bRev - bPay) : '—') + ' |
';
}).join('');
- return ` | ${esc(pf.customer_name)} | ${planInlineSelect('weight', pf.id, 'weight', pf.weight || '20%', ['20%','40%','60%','80%','100%'])} | ${planInlineSelect('ptype', pf.id, 'project_type', pf.project_type || '待签约', ['待签约','已签约'])} | ${money(pf.sign_amount)} | ${fmtNoUnit(rev)} | ${fmtNoUnit(gross)} | ${grossR} | ${fmtNoUnit(payment)} | ${pendingVal} | ${payR} | ${payableVal} | ${fmtNoUnit(cost)} | ${fmtNoUnit(paid)} | ${cf} |
| 月份 | 确收 | 毛利 | | 回款 | | 当期成本 | 当期流出 | | 现金流 | 应收 | ${detailRows}
|
`;
+ return ` | ${esc(pf.customer_name)} | ${planInlineSelect('weight', pf.id, 'weight', pf.weight || '20%', ['20%','40%','60%','80%','100%'])} | ${planInlineSelect('ptype', pf.id, 'project_type', pf.project_type || '待签约', ['待签约','已签约'])} | ${money(pf.sign_amount)} | ${fmtNoUnit(rev)} | ${fmtNoUnit(gross)} | ${grossR} | ${fmtNoUnit(payment)} | ${pendingVal} | ${payR} | ${fmtNoUnit(cost)} | ${fmtNoUnit(paid)} | ${payableVal} | ${cf} |
| 月份 | 确收 | 毛利 | | 回款 | | 成本 | 支出 | | 现金流 | 应收 | ${detailRows}
|
`;
};
// 待签约简版行
const tdRowUnsigned = (pf, cost, gross) => {
@@ -1179,7 +1179,7 @@ function renderPlanOverview() {
document.querySelector("#planOverview").innerHTML = '' +
deptCard +
cfCard +
- card('
项目经营详情 所有项目产生的签单,确收,毛利,回款,当期成本,当期流出,现金流
' + thead + '' + tbody + '
', 'p-4') +
+ card('
项目经营详情 所有项目产生的签单,确收,毛利,回款,成本,支出,现金流
' + thead + '' + tbody + '
', 'p-4') +
'
' +
card('
月度签约趋势
2026', 'p-4') +
card('
月度确收与毛利
2026', 'p-4') +
@@ -1316,7 +1316,7 @@ function renderPlanQuarterlyOverview() {
document.querySelector("#planQuarterlyOverview").innerHTML = '
' +
card('
部门损益情况 部门利润 = 所有项目产生的毛利 - 部门 1 级产生的人力成本,研发成本,差旅和其他支出
' + deptThead + '' + deptTbody + '
', 'p-4') +
card('
部门现金流 部门现金流=所有项目产生的现金流 - 部门一级因费用产生的现金流出或流入
' + deptThead + '' + cfTbody + '
', 'p-4') +
- card('
项目经营详情 所有项目产生的签单,确收,毛利,回款,当期成本,当期流出,现金流
' + thead + '' + tbody + '
', 'p-4') +
+ card('
项目经营详情 所有项目产生的签单,确收,毛利,回款,成本,支出,现金流
' + thead + '' + tbody + '
', 'p-4') +
'
';
if (window.lucide) window.lucide.createIcons();
}
diff --git a/templates/index.html b/templates/index.html
index 9a226b8..6b76759 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -84,7 +84,7 @@
-
OPC Manager v1.2.0.40
+
OPC Manager v1.2.0.41