From 8e688efb620d043de9431f43221ece068ba2d973 Mon Sep 17 00:00:00 2001 From: mac Date: Mon, 13 Jul 2026 13:41:48 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E8=A1=A8=E6=A0=BC?= =?UTF-8?q?=E5=88=97=E5=A4=B4=E4=B8=8E=E5=86=85=E5=AE=B9=E5=AF=B9=E9=BD=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - plan.js应付列移到成本/支出之前与表头一致 - plan.js theadCols 14→15匹配实际列数 - plan.js/finance.js UNSIGNED_COLS清理残留client_name和多余逗号 - v1.2.0.40 --- static/modules/finance.js | 1 - static/modules/plan.js | 6 ++---- templates/index.html | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/static/modules/finance.js b/static/modules/finance.js index 0d44f26..1e7863a 100644 --- a/static/modules/finance.js +++ b/static/modules/finance.js @@ -294,7 +294,6 @@ function renderFinance() { const UNSIGNED_COLS = [ { key: 'customer_name', label: '项目名称' }, { key: 'sign_amount', label: '签约金额' }, { key: 'sign_month', label: '签约月份' }, { key: 'gross', label: '毛利' }, { key: 'cost', label: '成本' }, - , ]; const renderView = (rows, sumRev, sumPay, sumCost, sumPaid, sumGross, signTotal, signCnt, emptyText) => { diff --git a/static/modules/plan.js b/static/modules/plan.js index 88bb88b..6e2ddf6 100644 --- a/static/modules/plan.js +++ b/static/modules/plan.js @@ -288,7 +288,6 @@ function renderPlan() { }; const SIGNED_COLS = [ { key: '_expand', label: '' }, - { key: 'client_name', label: '客户' }, { key: 'customer_name', label: '项目名称' }, { key: 'weight', label: '加权' }, { key: 'project_type', label: '项目类型' }, @@ -305,7 +304,6 @@ function renderPlan() { { key: 'cashflow', label: '现金流' }, ]; const UNSIGNED_COLS = [ - { key: 'client_name', label: '客户' }, { key: 'customer_name', label: '项目名称' }, { key: 'weight', label: '加权' }, { key: 'project_type', label: '项目类型' }, @@ -336,7 +334,7 @@ function renderPlan() { const cardHtml = (r, i) => '
' + r[0] + '
' + r[1] + '
'; const fs = '
' + cardHtml(rows_data[0],0) + cardHtml(rows_data[1],1) + cardHtml(rows_data[2],2) + '' + cardHtml(rows_data[3],3) + cardHtml(rows_data[4],4) + cardHtml(rows_data[5],5) + '' + cardHtml(rows_data[6],6) + cardHtml(rows_data[7],7) + cardHtml(rows_data[8],8) + '
'; const thead = isUnsigned ? buildThead(UNSIGNED_COLS, 'uns') : buildThead(SIGNED_COLS, 'sig'); - const theadCols = isUnsigned ? 8 : 14; + const theadCols = isUnsigned ? 8 : 15; const tbody = rows.length ? `${rows.join("")}` : `${emptyText}`; const subtitle = isUnsigned ? '合同 → 毛利 → 成本 → 项目利润' @@ -398,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}${fmtNoUnit(cost)}${fmtNoUnit(paid)}${payableVal}${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}${payableVal}${fmtNoUnit(cost)}${fmtNoUnit(paid)}${cf}${detailRows}
月份确收毛利回款当期成本当期流出现金流应收
`; }; // 待签约简版行 const tdRowUnsigned = (pf, cost, gross) => { diff --git a/templates/index.html b/templates/index.html index 6badee7..9a226b8 100644 --- a/templates/index.html +++ b/templates/index.html @@ -84,7 +84,7 @@
-

OPC Manager v1.2.0.39

+

OPC Manager v1.2.0.40

科普 OPC 工作台