From 815b68c1fcbf1e8c172343281904075c8c5907c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=96=BD=E5=B7=A5=E5=91=98?= Date: Wed, 26 Aug 2026 03:37:44 +0000 Subject: [PATCH] =?UTF-8?q?HEL-156=20=E8=BF=94=E5=B7=A5=EF=BC=9A=E8=B5=B7?= =?UTF-8?q?=E7=AE=97=E6=97=A5=E8=AF=BB=20settings=E3=80=81=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E7=8A=B6=E6=80=81=E5=88=97=E5=A4=B4=E3=80=81=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E9=BB=98=E8=AE=A4=E6=94=B6=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 首页 from 取自 /api/admin/settings 的 start_date 并省略 cutoff; 状态列头按 period_month 显示;renderDashDetail 二级默认全部收起。 Co-authored-by: Cursor Co-authored-by: multica-agent --- web/app.js | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/web/app.js b/web/app.js index 095b75a..a8eb85c 100644 --- a/web/app.js +++ b/web/app.js @@ -1152,7 +1152,7 @@ function chevronSvg(expanded) { return ''; } -function renderDashDetail(payload, { expandFirst = true } = {}) { +function renderDashDetail(payload, { expandFirst = false } = {}) { const tbody = $("#dashDetailRows"); const title = $("#dashDetailTitle"); if (!tbody) return; @@ -1204,15 +1204,28 @@ function renderDashDetail(payload, { expandFirst = true } = {}) { tbody.replaceChildren(...rows); } +async function resolveDashStartDate() { + if (state.dashFrom) return state.dashFrom; + const response = await fetch("/api/admin/settings").catch(() => null); + if (response?.ok) { + const result = await response.json().catch(() => null); + const startDate = result?.settings?.start_date; + if (startDate) { + state.dashFrom = startDate; + return startDate; + } + } + return "2026-01-01"; +} + async function loadDashCompanyDetail(companyId) { if (!companyId) return; state.dashSelectedId = companyId; renderDashCompanyRows(state.dashCompanies || [], companyId); const tbody = $("#dashDetailRows"); if (tbody) tbody.innerHTML = '加载中…'; - const from = state.dashFrom || "2026-01-01"; - const cutoff = state.dashCutoff || "2026-08-20"; - const response = await fetch(`/api/admin/dashboard/companies/${companyId}?from=${encodeURIComponent(from)}&cutoff=${encodeURIComponent(cutoff)}`).catch(() => null); + const from = await resolveDashStartDate(); + const response = await fetch(`/api/admin/dashboard/companies/${companyId}?from=${encodeURIComponent(from)}`).catch(() => null); if (!response?.ok) { if (tbody) tbody.innerHTML = '明细加载失败'; return; @@ -1223,7 +1236,8 @@ async function loadDashCompanyDetail(companyId) { async function loadAdminDashboard() { if (!$("#dashCompanyRows")) return; - const response = await fetch("/api/admin/dashboard?from=2026-01-01&cutoff=2026-08-20").catch(() => null); + const from = await resolveDashStartDate(); + const response = await fetch(`/api/admin/dashboard?from=${encodeURIComponent(from)}`).catch(() => null); if (!response?.ok) { $("#dashCompanyRows").innerHTML = '总览加载失败'; return; @@ -1239,10 +1253,7 @@ async function loadAdminDashboard() { updateDashAuditCard(data.audit); state.dashAuditFromApi = true; const statusHead = $("#dashStatusHead"); - if (statusHead) { - // Align with the static「7 月账期」cards on the same page until monthly-close exists. - statusHead.textContent = "7月状态"; - } + if (statusHead && data.period_month) statusHead.textContent = `${data.period_month}月状态`; const listSub = $("#dashListSub"); if (listSub) listSub.textContent = `${data.from_date} 至 ${data.cutoff} · 单位:万元`; renderBarChart(state.dashCompanies);