优化使用体验
This commit is contained in:
@@ -192,6 +192,26 @@ export default function DocumentsIndex() {
|
||||
// 添加一个状态来跟踪是否执行了删除操作
|
||||
const [isDeleting, setIsDeleting] = useState(false);
|
||||
|
||||
// 查询参数记忆 key 与保存/恢复方法
|
||||
const SEARCH_PARAMS_STORAGE_KEY = 'documents.searchParams';
|
||||
const persistSearchParams = (params: URLSearchParams) => {
|
||||
if (typeof window !== 'undefined') {
|
||||
sessionStorage.setItem(SEARCH_PARAMS_STORAGE_KEY, params.toString());
|
||||
}
|
||||
};
|
||||
|
||||
// 首次进入且 URL 无任何查询参数时,尝试从 sessionStorage 恢复
|
||||
useEffect(() => {
|
||||
if (typeof window === 'undefined') return;
|
||||
const hasAnyParam = Array.from(searchParams.keys()).length > 0;
|
||||
const stored = sessionStorage.getItem(SEARCH_PARAMS_STORAGE_KEY);
|
||||
if (!hasAnyParam && stored) {
|
||||
setSearchParams(new URLSearchParams(stored));
|
||||
}
|
||||
// 仅初始化检查一次
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
// 从URL获取当前筛选条件
|
||||
const search = searchParams.get("search") || "";
|
||||
const documentType = searchParams.get("documentType") || "";
|
||||
@@ -202,7 +222,7 @@ export default function DocumentsIndex() {
|
||||
const dateTo = searchParams.get("dateTo") || "";
|
||||
const currentPage = parseInt(searchParams.get("page") || "1", 10);
|
||||
const pageSize = parseInt(searchParams.get("pageSize") || "10", 10);
|
||||
|
||||
|
||||
// 客户端数据请求
|
||||
const fetchData = useCallback(async (storedReviewType: string) => {
|
||||
setIsLoadingData(true);
|
||||
@@ -323,15 +343,19 @@ export default function DocumentsIndex() {
|
||||
|
||||
// 分页处理函数
|
||||
const handlePageChange = (page: number) => {
|
||||
searchParams.set("page", page.toString());
|
||||
setSearchParams(searchParams);
|
||||
const params = new URLSearchParams(searchParams);
|
||||
params.set("page", page.toString());
|
||||
persistSearchParams(params);
|
||||
setSearchParams(params);
|
||||
};
|
||||
|
||||
// 每页条数变更处理函数
|
||||
const handlePageSizeChange = (size: number) => {
|
||||
searchParams.set("pageSize", size.toString());
|
||||
searchParams.set("page", "1"); // 重置到第一页
|
||||
setSearchParams(searchParams);
|
||||
const params = new URLSearchParams(searchParams);
|
||||
params.set("pageSize", size.toString());
|
||||
params.set("page", "1"); // 重置到第一页
|
||||
persistSearchParams(params);
|
||||
setSearchParams(params);
|
||||
};
|
||||
|
||||
// 处理文档名称搜索
|
||||
@@ -343,6 +367,7 @@ export default function DocumentsIndex() {
|
||||
params.delete("search");
|
||||
}
|
||||
params.set("page", "1"); // 重置页码
|
||||
persistSearchParams(params);
|
||||
setSearchParams(params);
|
||||
};
|
||||
|
||||
@@ -355,6 +380,7 @@ export default function DocumentsIndex() {
|
||||
params.delete("documentNumber");
|
||||
}
|
||||
params.set("page", "1"); // 重置页码
|
||||
persistSearchParams(params);
|
||||
setSearchParams(params);
|
||||
};
|
||||
|
||||
@@ -367,6 +393,7 @@ export default function DocumentsIndex() {
|
||||
params.delete("documentType");
|
||||
}
|
||||
params.set("page", "1"); // 重置页码
|
||||
persistSearchParams(params);
|
||||
setSearchParams(params);
|
||||
};
|
||||
|
||||
@@ -379,6 +406,7 @@ export default function DocumentsIndex() {
|
||||
params.delete("auditStatus");
|
||||
}
|
||||
params.set("page", "1"); // 重置页码
|
||||
persistSearchParams(params);
|
||||
setSearchParams(params);
|
||||
};
|
||||
|
||||
@@ -391,6 +419,7 @@ export default function DocumentsIndex() {
|
||||
params.delete(field);
|
||||
}
|
||||
params.set("page", "1"); // 重置页码
|
||||
persistSearchParams(params);
|
||||
setSearchParams(params);
|
||||
};
|
||||
|
||||
@@ -419,7 +448,10 @@ export default function DocumentsIndex() {
|
||||
resetInput('input[name="dateFrom"]');
|
||||
resetInput('input[name="dateTo"]');
|
||||
|
||||
// 重置URL参数
|
||||
// 重置URL参数并清除保存
|
||||
if (typeof window !== 'undefined') {
|
||||
sessionStorage.removeItem(SEARCH_PARAMS_STORAGE_KEY);
|
||||
}
|
||||
setSearchParams(new URLSearchParams({
|
||||
page: "1",
|
||||
pageSize: pageSize.toString()
|
||||
@@ -681,8 +713,10 @@ export default function DocumentsIndex() {
|
||||
return;
|
||||
}
|
||||
}
|
||||
// console.log('更新成功,开始跳转')
|
||||
// 导航到评查详情页
|
||||
// 导航到评查详情页前保存查询参数
|
||||
if (typeof window !== 'undefined') {
|
||||
sessionStorage.setItem(SEARCH_PARAMS_STORAGE_KEY, searchParams.toString());
|
||||
}
|
||||
navigate(`/reviews?id=${fileId}&previousRoute=documents`);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user