Stop embed form interceptor from blanking trade records after journal save.

Exclude journal-form from InstanceEmbed submit reload, stopImmediatePropagation on AJAX save, and force-reload trades when the table is stuck on loading.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-18 15:28:52 +08:00
parent a244850b25
commit 27c116f872
5 changed files with 24 additions and 9 deletions
+7 -2
View File
@@ -25,8 +25,13 @@
const tabPanes = new Map();
const tabBooted = new Set();
/** 自带校验后 form.submit() 的表单,勿在捕获阶段再 fetch 一份(会双发 POST) */
const CUSTOM_SUBMIT_FORM_IDS = new Set(["add-order-form", "key-form", "roll-form"]);
/** 自带 AJAX/校验提交的表单,勿在捕获阶段再 fetch+reloadCurrentTab(会卡在「加载中…」) */
const CUSTOM_SUBMIT_FORM_IDS = new Set([
"add-order-form",
"key-form",
"roll-form",
"journal-form",
]);
function isEmbedShell() {
return document.body && document.body.getAttribute("data-embed-shell") === "1";
+2
View File
@@ -141,10 +141,12 @@
if (typeof global.validateJournalEntryReason === "function") {
if (!global.validateJournalEntryReason()) {
ev.preventDefault();
if (typeof ev.stopImmediatePropagation === "function") ev.stopImmediatePropagation();
return;
}
}
ev.preventDefault();
if (typeof ev.stopImmediatePropagation === "function") ev.stopImmediatePropagation();
submitAjax(form);
}
+10 -2
View File
@@ -567,14 +567,22 @@
function init(opts) {
opts = opts || {};
if (!$("records-panel-root")) return;
var tbody = $("rr-trades-tbody");
var stuckLoading =
!!tbody &&
tbody.querySelectorAll("tr").length <= 1 &&
/加载中/.test(String(tbody.textContent || ""));
if (booted) {
if (opts.refresh) {
loadTradeRecords({ soft: true });
if (opts.refresh || stuckLoading) {
loadTradeRecords({ soft: !stuckLoading });
loadJournalsPaged();
loadReviewsPaged();
}
patchFillJournalFromTrade();
patchDeleteTradeRecord();
if (global.JournalFormSave && typeof global.JournalFormSave.init === "function") {
global.JournalFormSave.init();
}
return;
}
booted = true;