fix: 分页条数切换后自动刷新 (#243)

This commit is contained in:
chengma
2026-08-15 15:32:01 +08:00
parent af1c056b8c
commit 8e4239bcfc
5 changed files with 92 additions and 13 deletions
+42 -7
View File
@@ -17,14 +17,14 @@
都不进入 sessionStorage。链接原始 href 保持模块根地址,因此脚本失效时
仍可正常导航。 */
var MODULE_QUERY_KEYS = {
"/shopee": ["q", "search_field", "status", "deleted", "unlinked", "page"],
"/pdd": ["q", "status", "page"],
"/syb": ["order_no", "shop", "stage", "page", "date_from", "date_to"],
"/shopee": ["q", "search_field", "status", "deleted", "unlinked", "page", "page_size"],
"/pdd": ["q", "status", "page", "page_size"],
"/syb": ["order_no", "shop", "stage", "page", "page_size", "date_from", "date_to"],
"/shops": [],
"/tasks": ["type", "status", "creator", "q", "page"],
"/clients": ["name", "page"],
"/inner-codes": ["date", "status", "q", "page"],
"/users": ["q", "status", "page"]
"/tasks": ["type", "status", "creator", "q", "page", "page_size"],
"/clients": ["name", "page", "page_size"],
"/inner-codes": ["date", "status", "q", "page", "page_size"],
"/users": ["q", "status", "page", "page_size"]
};
var MODULE_STATE_PREFIX = "cmautobuy:module-state:";
@@ -92,6 +92,40 @@
}
}
/* ── 每页条数立即生效 ─────────────────────────
普通 GET 表单仍是无 JavaScript 时的完整回退;脚本只做渐进增强,让采购员
选择 20/50/100 后不用再点一次“应用”。select 不能禁用,否则浏览器提交时
会丢掉 page_size。 */
function setupPageSizeForms() {
document.querySelectorAll("[data-page-size-form]").forEach(function (form) {
var select = form.querySelector("[data-page-size-select]");
var submit = form.querySelector("[data-page-size-submit]");
if (!select) return;
function beginSubmit() {
if (form.getAttribute("aria-busy") === "true") return false;
form.setAttribute("aria-busy", "true");
if (submit) {
submit.disabled = true;
submit.textContent = "加载中…";
}
return true;
}
form.addEventListener("submit", function () {
beginSubmit();
});
select.addEventListener("change", function () {
if (form.getAttribute("aria-busy") === "true") return;
if (typeof form.requestSubmit === "function") {
form.requestSubmit();
return;
}
if (beginSubmit()) form.submit();
});
});
}
/* ── 全选 / 反选 ──────────────────────────────
表头的勾选框控制本表格所有行的勾选框。 */
function setupCheckAll(root) {
@@ -853,6 +887,7 @@
document.addEventListener("DOMContentLoaded", function () {
setupModuleNavigationState();
setupPageSizeForms();
document.querySelectorAll("table").forEach(setupCheckAll);
setupConfirmDelete();
setupConfirmSubmit();