From 347c8aa81898d9dd8b47725cc809cf138895bc4b Mon Sep 17 00:00:00 2001 From: mac Date: Wed, 8 Jul 2026 14:16:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=AD=9B=E9=80=89=E6=A0=8F=E6=94=B9?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E5=BC=8F+=E8=AE=A1=E5=88=92=E6=80=BB?= =?UTF-8?q?=E8=A7=88=E5=9B=BE=E8=A1=A8=E4=BF=AE=E5=A4=8D+tip=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 计划/实际模块筛选栏: 下拉框改为标签按钮(总视图|按季度|按月度) - utils.js新增setFinQuarter/setFinMonth/setPlanQuarter/setPlanMonth - 计划总览图表: 修复canvas ID和渲染函数调用 - 计划模块tab和tip位置对换(tab在上,tip在下) - 版本号 v1.0.0.24 --- static/modules/finance.js | 15 ++++++--------- static/modules/plan.js | 27 ++++++++++++--------------- static/modules/utils.js | 4 ++++ templates/index.html | 2 +- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/static/modules/finance.js b/static/modules/finance.js index 3b5f922..c4e5ce5 100644 --- a/static/modules/finance.js +++ b/static/modules/finance.js @@ -105,15 +105,12 @@ function renderFinance() { const defaultMonth2 = now2.getFullYear() + "-" + String(now2.getMonth()+1).padStart(2,"0"); if (!state.finMonth) state.finMonth = defaultMonth2; if (state.finQuarter === undefined) state.finQuarter = Math.floor(now2.getMonth() / 3); - const monthSet2 = new Set([defaultMonth2]); - pfs.forEach(pf => { let bd = []; try { bd = JSON.parse(pf.budget_data || "[]"); } catch(e) {} bd.forEach(b => { if (b.month) monthSet2.add(b.month); }); }); - const allMonths = [...monthSet2].sort().reverse(); - const qLabels2 = ["Q1 (1-3月)","Q2 (4-6月)","Q3 (7-9月)","Q4 (10-12月)"]; - const toolMonthSelect = allMonths.map(m => '').join(""); - const toolQuarterSelect = qLabels2.map((l,i) => '').join(""); - const toolDateSelect = state.finView==='monthly'?'月份:':state.finView==='quarterly'?'季度:':''; - - const finHeaderBase = `视图:${toolDateSelect}`; + const qLabels = ['Q1','Q2','Q3','Q4']; + const qMonths = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]; + const nowD = new Date(); + const activeQ = state.finQuarter !== undefined ? state.finQuarter : Math.floor(nowD.getMonth() / 3); + const activeMonths = qMonths[activeQ]; + const finHeaderBase = `
|按季度:${qLabels.map((q,i) => ``).join('')}|按月度:${activeMonths.map(m => { const ms = `2026-${String(m).padStart(2,'0')}`; return ``; }).join('')}
`; const finAddBtn = ``; const finFilterTabs = `
`; diff --git a/static/modules/plan.js b/static/modules/plan.js index 5375c60..f1104f8 100644 --- a/static/modules/plan.js +++ b/static/modules/plan.js @@ -103,25 +103,22 @@ function renderPlan() { const defaultMonth2 = now2.getFullYear() + "-" + String(now2.getMonth()+1).padStart(2,"0"); if (!state.planMonth) state.planMonth = defaultMonth2; if (state.planQuarter === undefined) state.planQuarter = Math.floor(now2.getMonth() / 3); - const monthSet2 = new Set([defaultMonth2]); - pfs.forEach(pf => { let bd = []; try { bd = JSON.parse(pf.budget_data || "[]"); } catch(e) {} bd.forEach(b => { if (b.month) monthSet2.add(b.month); }); }); - const allMonths = [...monthSet2].sort().reverse(); - const qLabels2 = ["Q1 (1-3月)","Q2 (4-6月)","Q3 (7-9月)","Q4 (10-12月)"]; - const toolMonthSelect = allMonths.map(m => '').join(""); - const toolQuarterSelect = qLabels2.map((l,i) => '').join(""); - const toolDateSelect = state.planView==='monthly'?'月份:':state.planView==='quarterly'?'季度:':''; - - const finHeaderBase = `视图:${toolDateSelect}`; + const qLabels = ['Q1','Q2','Q3','Q4']; + const qMonths = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]; + const nowD = new Date(); + const activeQ = state.planQuarter !== undefined ? state.planQuarter : Math.floor(nowD.getMonth() / 3); + const activeMonths = qMonths[activeQ]; + const finHeaderBase = `
|按季度:${qLabels.map((q,i) => ``).join('')}|按月度:${activeMonths.map(m => { const ms = `2026-${String(m).padStart(2,'0')}`; return ``; }).join('')}
`; const finAddBtn = ``; const planFilterTabs = `
`; document.querySelector("#plan").innerHTML = `
+ ${planFilterTabs}
计划提醒:计划也是预算,只有真正能够列出计划的预算,才有靠谱的落地可能性
- ${planFilterTabs} ${state.planFilter !== 'expense' && state.planFilter !== 'overview' ? card(`
${finHeaderBase}
${finAddBtn}
`, "p-4") : ''}