refactor: 统一管理页面布局 — FilterToolbar + usePageSearchParams + parseListParams

This commit is contained in:
2026-06-04 17:25:36 +08:00
parent 61b479e2be
commit 6f547560d1
40 changed files with 1805 additions and 628 deletions

View File

@@ -43,12 +43,16 @@ export async function fetchProjectList(params: {
keyword?: string;
page?: number;
pageSize?: number;
sortBy?: string;
sortOrder?: string;
status?: ProjectStatus;
}): Promise<ProjectListResponse> {
const searchParams = new URLSearchParams();
if (params.page) searchParams.set("page", String(params.page));
if (params.pageSize) searchParams.set("pageSize", String(params.pageSize));
if (params.keyword) searchParams.set("keyword", params.keyword);
if (params.sortBy) searchParams.set("sortBy", params.sortBy);
if (params.sortOrder) searchParams.set("sortOrder", params.sortOrder);
if (params.status) searchParams.set("status", params.status);
const qs = searchParams.toString();
const url = `/api/projects${qs ? `?${qs}` : ""}`;
@@ -115,7 +119,14 @@ export function useProject(id: string) {
});
}
export function useProjectList(params: { keyword?: string; page?: number; pageSize?: number; status?: ProjectStatus }) {
export function useProjectList(params: {
keyword?: string;
page?: number;
pageSize?: number;
sortBy?: string;
sortOrder?: string;
status?: ProjectStatus;
}) {
return useQuery({
queryFn: () => fetchProjectList(params),
queryKey: [...PROJECTS_KEY, "list", params],