From 0fa32e1571d929463ff2af79773dee28071e864d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=80=BB=E5=B7=A5?= Date: Thu, 27 Aug 2026 17:25:21 +0000 Subject: [PATCH] =?UTF-8?q?HEL-204:=20=E4=BF=AE=E5=A4=8D=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E4=BD=9C=E7=94=A8=E5=9F=9F=E3=80=81=E6=96=AD=E6=A1=A3=E9=A6=96?= =?UTF-8?q?=E5=B1=8F=E4=B8=8E=E6=9C=9F=E5=88=9D=E8=A1=A8=E5=8D=95=20reset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 openModal/closeModal 提升为顶层定义;公司端启动调用 loadCompanyCoverageGaps;异步提交前保存 form 引用。 Co-authored-by: Cursor Co-authored-by: multica-agent --- web/app.js | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/web/app.js b/web/app.js index 0adf554..fa8d9a6 100644 --- a/web/app.js +++ b/web/app.js @@ -1,6 +1,9 @@ const $ = (selector, scope = document) => scope.querySelector(selector); const $$ = (selector, scope = document) => [...scope.querySelectorAll(selector)]; +function openModal(id) { $("#" + id)?.classList.add("open"); } +function closeModal(id) { $("#" + id)?.classList.remove("open"); } + const portal = document.body.dataset.portal || "entry"; const viewNames = portal === "admin" ? { dashboard: "管理总览", pair: "往来查询", audit: "审核中心", flows: "流水管理", companies: "公司与账号", settings: "结账与期初", reminders: "提醒管理" } @@ -1818,8 +1821,6 @@ function initAdmin() { })); $("#auditCompany")?.addEventListener("change", filterAuditRows); - function openModal(id) { $("#" + id)?.classList.add("open"); } - function closeModal(id) { $("#" + id)?.classList.remove("open"); } document.querySelectorAll("[data-close]").forEach((el) => el.addEventListener("click", () => closeModal(el.dataset.close))); document.querySelectorAll(".modal-backdrop").forEach((bd) => bd.addEventListener("click", (e) => { if (e.target === bd) bd.classList.remove("open"); })); document.addEventListener("keydown", (e) => { if (e.key === "Escape") document.querySelectorAll(".modal-backdrop.open").forEach((m) => m.classList.remove("open")); }); @@ -2003,7 +2004,8 @@ function initAdmin() { $("#openCompanyDialog")?.addEventListener("click", () => openModal("companyDialog")); $("#companyForm")?.addEventListener("submit", async (event) => { event.preventDefault(); - const data = new FormData(event.currentTarget); + const form = event.currentTarget; + const data = new FormData(form); const companyName = String(data.get("companyName") || "").trim(); const loginName = String(data.get("loginName") || "").trim(); const createUser = data.get("createUser") !== null; @@ -2031,7 +2033,7 @@ function initAdmin() { } const accountCreated = Boolean(result.username); closeModal("companyDialog"); - event.currentTarget.reset(); + form.reset(); await loadAdminCompanies(); showToast( accountCreated ? "公司与账号已创建" : "公司已创建", @@ -2246,7 +2248,8 @@ function initAdmin() { $$("[data-close-opening]").forEach((button) => button.addEventListener("click", () => closeModal("openingDialog"))); $("#openingForm")?.addEventListener("submit", async (event) => { event.preventDefault(); - const data = new FormData(event.currentTarget); + const form = event.currentTarget; + const data = new FormData(form); const fromName = data.get("from"); const toName = data.get("to"); if (fromName === toName) { @@ -2280,7 +2283,7 @@ function initAdmin() { return; } closeModal("openingDialog"); - event.currentTarget.reset(); + form.reset(); await loadOpeningBalances(); await loadCalculationChanges(); await loadCalculationSettings(); @@ -3976,8 +3979,6 @@ function initCompany() { loadCompanyAccounts(); loadImportBatches(); - function openModal(id) { $("#" + id)?.classList.add("open"); } - function closeModal(id) { $("#" + id)?.classList.remove("open"); } $$("[data-close]").forEach((el) => el.addEventListener("click", () => closeModal(el.dataset.close))); $$(".modal-backdrop").forEach((bd) => bd.addEventListener("click", (e) => { if (e.target === bd) bd.classList.remove("open"); })); document.addEventListener("keydown", (e) => { if (e.key === "Escape") $$(".modal-backdrop.open").forEach((m) => m.classList.remove("open")); }); @@ -4115,6 +4116,7 @@ function initCompany() { initReconcile(); (async () => { await loadCompanyWorkspace(); + await loadCompanyCoverageGaps(); await renderReconcileMatchStack(); })(); @@ -4133,7 +4135,8 @@ function initCompany() { }); $("#accountForm")?.addEventListener("submit", async (event) => { event.preventDefault(); - const data = new FormData(event.currentTarget); + const form = event.currentTarget; + const data = new FormData(form); const response = await fetch("/api/company/accounts", { method: "POST", headers: { "Content-Type": "application/json" }, @@ -4154,7 +4157,7 @@ function initCompany() { return; } closeModal("accountDialog"); - event.currentTarget.reset(); + form.reset(); await loadCompanyAccounts(); showToast("银行账户已提交登记", "复核通过前不能上传流水,也不参与账户识别和覆盖计算", "success"); });