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

@@ -37,16 +37,22 @@ export async function fetchModel(id: string): Promise<Model> {
}
export async function fetchModelList(params: {
capabilities?: string;
keyword?: string;
page?: number;
pageSize?: number;
providerId?: string;
sortBy?: string;
sortOrder?: string;
}): Promise<ModelListResponse> {
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.providerId) searchParams.set("providerId", params.providerId);
if (params.sortBy) searchParams.set("sortBy", params.sortBy);
if (params.sortOrder) searchParams.set("sortOrder", params.sortOrder);
if (params.capabilities) searchParams.set("capabilities", params.capabilities);
const qs = searchParams.toString();
const url = `/api/models${qs ? `?${qs}` : ""}`;
const response = await fetch(url);
@@ -110,7 +116,15 @@ export function useModel(id: string) {
});
}
export function useModelList(params: { keyword?: string; page?: number; pageSize?: number; providerId?: string }) {
export function useModelList(params: {
capabilities?: string;
keyword?: string;
page?: number;
pageSize?: number;
providerId?: string;
sortBy?: string;
sortOrder?: string;
}) {
return useQuery({
queryFn: () => fetchModelList(params),
queryKey: [...MODELS_KEY, "list", params],