Compare commits

...
Author SHA1 Message Date
0fa32e1571 HEL-204: 修复弹窗作用域、断档首屏与期初表单 reset
将 openModal/closeModal 提升为顶层定义;公司端启动调用 loadCompanyCoverageGaps;异步提交前保存 form 引用。

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-08-27 17:25:21 +00:00
+13 -10
View File
@@ -1,6 +1,9 @@
const $ = (selector, scope = document) => scope.querySelector(selector); const $ = (selector, scope = document) => scope.querySelector(selector);
const $$ = (selector, scope = document) => [...scope.querySelectorAll(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 portal = document.body.dataset.portal || "entry";
const viewNames = portal === "admin" const viewNames = portal === "admin"
? { dashboard: "管理总览", pair: "往来查询", audit: "审核中心", flows: "流水管理", companies: "公司与账号", settings: "结账与期初", reminders: "提醒管理" } ? { dashboard: "管理总览", pair: "往来查询", audit: "审核中心", flows: "流水管理", companies: "公司与账号", settings: "结账与期初", reminders: "提醒管理" }
@@ -1818,8 +1821,6 @@ function initAdmin() {
})); }));
$("#auditCompany")?.addEventListener("change", filterAuditRows); $("#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("[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.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")); }); 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")); $("#openCompanyDialog")?.addEventListener("click", () => openModal("companyDialog"));
$("#companyForm")?.addEventListener("submit", async (event) => { $("#companyForm")?.addEventListener("submit", async (event) => {
event.preventDefault(); 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 companyName = String(data.get("companyName") || "").trim();
const loginName = String(data.get("loginName") || "").trim(); const loginName = String(data.get("loginName") || "").trim();
const createUser = data.get("createUser") !== null; const createUser = data.get("createUser") !== null;
@@ -2031,7 +2033,7 @@ function initAdmin() {
} }
const accountCreated = Boolean(result.username); const accountCreated = Boolean(result.username);
closeModal("companyDialog"); closeModal("companyDialog");
event.currentTarget.reset(); form.reset();
await loadAdminCompanies(); await loadAdminCompanies();
showToast( showToast(
accountCreated ? "公司与账号已创建" : "公司已创建", accountCreated ? "公司与账号已创建" : "公司已创建",
@@ -2246,7 +2248,8 @@ function initAdmin() {
$$("[data-close-opening]").forEach((button) => button.addEventListener("click", () => closeModal("openingDialog"))); $$("[data-close-opening]").forEach((button) => button.addEventListener("click", () => closeModal("openingDialog")));
$("#openingForm")?.addEventListener("submit", async (event) => { $("#openingForm")?.addEventListener("submit", async (event) => {
event.preventDefault(); event.preventDefault();
const data = new FormData(event.currentTarget); const form = event.currentTarget;
const data = new FormData(form);
const fromName = data.get("from"); const fromName = data.get("from");
const toName = data.get("to"); const toName = data.get("to");
if (fromName === toName) { if (fromName === toName) {
@@ -2280,7 +2283,7 @@ function initAdmin() {
return; return;
} }
closeModal("openingDialog"); closeModal("openingDialog");
event.currentTarget.reset(); form.reset();
await loadOpeningBalances(); await loadOpeningBalances();
await loadCalculationChanges(); await loadCalculationChanges();
await loadCalculationSettings(); await loadCalculationSettings();
@@ -3976,8 +3979,6 @@ function initCompany() {
loadCompanyAccounts(); loadCompanyAccounts();
loadImportBatches(); 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))); $$("[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"); })); $$(".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")); }); document.addEventListener("keydown", (e) => { if (e.key === "Escape") $$(".modal-backdrop.open").forEach((m) => m.classList.remove("open")); });
@@ -4115,6 +4116,7 @@ function initCompany() {
initReconcile(); initReconcile();
(async () => { (async () => {
await loadCompanyWorkspace(); await loadCompanyWorkspace();
await loadCompanyCoverageGaps();
await renderReconcileMatchStack(); await renderReconcileMatchStack();
})(); })();
@@ -4133,7 +4135,8 @@ function initCompany() {
}); });
$("#accountForm")?.addEventListener("submit", async (event) => { $("#accountForm")?.addEventListener("submit", async (event) => {
event.preventDefault(); event.preventDefault();
const data = new FormData(event.currentTarget); const form = event.currentTarget;
const data = new FormData(form);
const response = await fetch("/api/company/accounts", { const response = await fetch("/api/company/accounts", {
method: "POST", method: "POST",
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
@@ -4154,7 +4157,7 @@ function initCompany() {
return; return;
} }
closeModal("accountDialog"); closeModal("accountDialog");
event.currentTarget.reset(); form.reset();
await loadCompanyAccounts(); await loadCompanyAccounts();
showToast("银行账户已提交登记", "复核通过前不能上传流水,也不参与账户识别和覆盖计算", "success"); showToast("银行账户已提交登记", "复核通过前不能上传流水,也不参与账户识别和覆盖计算", "success");
}); });