diff --git a/static/modules/finance.js b/static/modules/finance.js index fff76df..8e54db1 100644 --- a/static/modules/finance.js +++ b/static/modules/finance.js @@ -266,10 +266,14 @@ function renderFinance() { { label: '付款率', hideUnsigned: true, value: ctx => ctx.sumCost && ctx.sumPaid ? Math.round(ctx.sumPaid / ctx.sumCost * 100) + '%' : '—', color: 'text-slate-500' }, ].filter(c => true); - // 列排序 - if (!state.finSort) state.finSort = { key: null, asc: true }; + // 列排序(默认按确收金额从高到低) + if (!state.finSort) state.finSort = { key: 'sig|rev', asc: false }; const sortData = (data, key) => { - if (!key || !state.finSort.key) return data; + if (!key) return data; + if (!state.finSort.key) { + // 默认按确收金额从高到低 + return data.slice().sort(function(a, b) { return (parseFloat(b.rev) || 0) - (parseFloat(a.rev) || 0); }); + } var asc = state.finSort.asc ? 1 : -1; return data.slice().sort(function(a, b) { var va = a[key], vb = b[key]; @@ -336,14 +340,19 @@ function renderFinance() { var expenseArr = []; try { budgetArr = JSON.parse(pf.budget_data || "[]"); } catch(e) {} try { expenseArr = JSON.parse(pf.expense_data || "[]"); } catch(e) {} - var detailRows = budgetArr.filter(function(b) { - var exp = expenseArr.find(function(e) { return e.month === (b.month || ''); }) || {}; + // 合并 budget 和 expense 的所有月份 + var allMonths = {}; + budgetArr.forEach(function(b) { allMonths[b.month || ''] = true; }); + expenseArr.forEach(function(e) { allMonths[e.month || ''] = true; }); + var detailRows = Object.keys(allMonths).filter(function(m) { + var b = budgetArr.find(function(x) { return x.month === m; }) || {}; + var exp = expenseArr.find(function(x) { return x.month === m; }) || {}; var bRev = parseFloat(b.rev || 0), bGross = parseFloat(b.gross || 0), bPay = parseFloat(b.payment || 0); var eCost = parseFloat(exp.cost || 0), ePaid = parseFloat(exp.paid || 0); return bRev || bGross || bPay || eCost || ePaid; - }).map(function(b) { - var m = b.month || ''; - var exp = expenseArr.find(function(e) { return e.month === m; }) || {}; + }).sort().map(function(m) { + var b = budgetArr.find(function(x) { return x.month === m; }) || {}; + var exp = expenseArr.find(function(x) { return x.month === m; }) || {}; var bRev = parseFloat(b.rev || 0), bGross = parseFloat(b.gross || 0), bPay = parseFloat(b.payment || 0); var eCost = parseFloat(exp.cost || 0), ePaid = parseFloat(exp.paid || 0); var bCf = bPay - ePaid; @@ -707,7 +716,7 @@ window.editPfSignMonth = (event, pfId) => { }; window.switchFinanceTab = (tab) => { - document.querySelectorAll(".finance-tab").forEach(b => b.classList.toggle("active", b.dataset.tab === tab)); + document.querySelectorAll("#financeModal .finance-tab").forEach(b => b.classList.toggle("active", b.dataset.tab === tab)); document.querySelector("#financeTabInfo").classList.toggle("hidden", tab !== "info"); document.querySelector("#financeTabRevpay").classList.toggle("hidden", tab !== "revpay"); document.querySelector("#financeTabCost").classList.toggle("hidden", tab !== "cost"); diff --git a/static/modules/plan.js b/static/modules/plan.js index a8d1d1f..d1e4b1f 100644 --- a/static/modules/plan.js +++ b/static/modules/plan.js @@ -264,10 +264,14 @@ function renderPlan() { { label: '付款率', hideUnsigned: true, value: ctx => ctx.sumCost && ctx.sumPaid ? Math.round(ctx.sumPaid / ctx.sumCost * 100) + '%' : '—', color: 'text-slate-500' }, ].filter(c => true); - // 列排序 - if (!state.planSort) state.planSort = { key: null, asc: true }; + // 列排序(默认按确收金额从高到低) + if (!state.planSort) state.planSort = { key: 'sig|rev', asc: false }; const sortData = (data, key) => { - if (!key || !state.planSort.key) return data; + if (!key) return data; + if (!state.planSort.key) { + // 默认按确收金额从高到低 + return data.slice().sort(function(a, b) { return (parseFloat(b.rev) || 0) - (parseFloat(a.rev) || 0); }); + } var asc = state.planSort.asc ? 1 : -1; return data.slice().sort(function(a, b) { var va = a[key], vb = b[key]; @@ -351,14 +355,19 @@ function renderPlan() { var expenseArr = []; try { budgetArr = JSON.parse(pf.budget_data || "[]"); } catch(e) {} try { expenseArr = JSON.parse(pf.expense_data || "[]"); } catch(e) {} - var detailRows = budgetArr.filter(function(b) { - var exp = expenseArr.find(function(e) { return e.month === (b.month || ''); }) || {}; + // 合并 budget 和 expense 的所有月份 + var allMonths = {}; + budgetArr.forEach(function(b) { allMonths[b.month || ''] = true; }); + expenseArr.forEach(function(e) { allMonths[e.month || ''] = true; }); + var detailRows = Object.keys(allMonths).filter(function(m) { + var b = budgetArr.find(function(x) { return x.month === m; }) || {}; + var exp = expenseArr.find(function(x) { return x.month === m; }) || {}; var bRev = parseFloat(b.rev || 0), bGross = parseFloat(b.gross || 0), bPay = parseFloat(b.payment || 0); var eCost = parseFloat(exp.cost || 0), ePaid = parseFloat(exp.paid || 0); return bRev || bGross || bPay || eCost || ePaid; - }).map(function(b) { - var m = b.month || ''; - var exp = expenseArr.find(function(e) { return e.month === m; }) || {}; + }).sort().map(function(m) { + var b = budgetArr.find(function(x) { return x.month === m; }) || {}; + var exp = expenseArr.find(function(x) { return x.month === m; }) || {}; var bRev = parseFloat(b.rev || 0), bGross = parseFloat(b.gross || 0), bPay = parseFloat(b.payment || 0); var eCost = parseFloat(exp.cost || 0), ePaid = parseFloat(exp.paid || 0); var bCf = bPay - ePaid; diff --git a/templates/index.html b/templates/index.html index 8058df8..b217408 100644 --- a/templates/index.html +++ b/templates/index.html @@ -76,7 +76,7 @@
-

OPC Manager v1.2.0.9

+

OPC Manager v1.2.0.10

科普 OPC 工作台