HEL-204: 修复弹窗作用域、断档首屏与期初表单 reset

将 openModal/closeModal 提升为顶层定义;公司端启动调用 loadCompanyCoverageGaps;异步提交前保存 form 引用。

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
总工
2026-08-27 17:25:21 +00:00
co-authored by Cursor multica-agent
parent 27f2b0b69a
commit 0fa32e1571
+13 -10
View File
@@ -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");
});