详情处理返回时不重置页面搜索条件

master
2358328281@qq.com 1 day ago
parent 96c4f2fe6d
commit 000429d0dd

@ -416,7 +416,7 @@ import {
ref,
shallowRef,
} from "vue";
import { useRouter } from "vue-router";
import { onBeforeRouteLeave, useRouter } from "vue-router";
import { ElMessage } from "element-plus";
import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
import "@wangeditor/editor/dist/css/style.css";
@ -551,9 +551,72 @@ const onReset = () => {
onSearch();
};
// sessionStorage key/
const LIST_STATE_KEY = "admin_orders_list_state";
const saveListState = () => {
try {
const state = {
filters: { ...filters },
dateRange: Array.isArray(dateRange.value) ? [...dateRange.value] : [],
page: page.value,
pageSize: pageSize.value,
activeStat: activeStat.value,
};
sessionStorage.setItem(LIST_STATE_KEY, JSON.stringify(state));
} catch (_) {
//
}
};
const restoreListState = () => {
try {
const raw = sessionStorage.getItem(LIST_STATE_KEY);
if (!raw) return;
const state = JSON.parse(raw);
if (!state || typeof state !== "object") return;
if (state.filters && typeof state.filters === "object") {
Object.assign(filters, state.filters);
}
if (Array.isArray(state.dateRange)) {
dateRange.value = state.dateRange;
}
if (typeof state.page === "number" && state.page > 0) {
page.value = state.page;
}
if (typeof state.pageSize === "number" && state.pageSize > 0) {
pageSize.value = state.pageSize;
}
if (typeof state.activeStat === "string") {
activeStat.value = state.activeStat;
}
} catch (_) {
//
}
};
const clearListState = () => {
try {
sessionStorage.removeItem(LIST_STATE_KEY);
} catch (_) {
/* noop */
}
};
const goDetail = (id) => router.push(`/admin/orders/detail/${id}`);
const goProcess = (id) => router.push(`/admin/orders/process/${id}`);
// /
onBeforeRouteLeave((to) => {
const path = to?.path || "";
if (
path.startsWith("/admin/orders/detail") ||
path.startsWith("/admin/orders/process")
) {
saveListState();
}
});
// Hex
const colorOptions = [
{ label: "蓝", value: "#667eea" },
@ -847,6 +910,9 @@ const submitQuick = async () => {
onMounted(() => {
loadHospitals();
// /
restoreListState();
clearListState();
loadList();
document.addEventListener("click", onDocClick);
});

Loading…
Cancel
Save