Explorar o código

feat: 优化接口调用

BaiLuoYan hai 3 días
pai
achega
5f7e42bd3d

+ 7 - 4
src/pages/Admin/Product/Detail/tabs/MemberTab.tsx

@@ -27,7 +27,10 @@ export const MemberTab = ({ productCode }: MemberTabProps) => {
   const loadUsers = async () => {
     const res = await fetchUserList({ pageSize: 9999 });
     setUserOptions(
-      (res.data?.list ?? []).map((u) => ({ label: `${u.username}(${u.nickname})`, value: u.id })),
+      (res.data ?? []).map((u: API.UserItem) => ({
+        label: `${u.username}(${u.nickname})`,
+        value: u.id,
+      })),
     );
   };
 
@@ -103,9 +106,9 @@ export const MemberTab = ({ productCode }: MemberTabProps) => {
       actionRef={actionRef}
       columns={columns}
       rowKey="id"
-      request={async ({ current, pageSize }) => {
-        const res = await fetchMemberList({ productCode, page: current, pageSize });
-        return { data: res.data?.list ?? [], total: res.data?.total ?? 0, success: true };
+      search={false}
+      request={async (params, sorter, filter) => {
+        return fetchMemberList({ ...params, productCode }, sorter, filter);
       }}
       toolBarRender={() => [
         <DrawerForm

+ 1 - 1
src/pages/Admin/Product/Detail/tabs/PermTab.tsx

@@ -14,7 +14,7 @@ export const PermTab = ({ productCode }: PermTabProps) => {
   useEffect(() => {
     setLoading(true);
     fetchPermList({ productCode, pageSize: 9999 })
-      .then((res) => setPerms(res.data?.list ?? []))
+      .then((res) => setPerms(res.data ?? []))
       .finally(() => setLoading(false));
   }, [productCode]);
 

+ 1 - 1
src/pages/Admin/Product/Detail/tabs/RolePermDrawer.tsx

@@ -22,7 +22,7 @@ export const RolePermDrawer = ({ roleId, productCode, open, onClose }: RolePermD
     setLoading(true);
     Promise.all([fetchRoleDetail({ id: roleId }), fetchPermList({ productCode, pageSize: 9999 })])
       .then(([roleRes, permRes]) => {
-        setAllPerms(permRes.data?.list ?? []);
+        setAllPerms(permRes.data ?? []);
         setCheckedIds(roleRes.data?.permIds ?? []);
       })
       .finally(() => setLoading(false));

+ 3 - 3
src/pages/Admin/Product/Detail/tabs/RoleTab.tsx

@@ -109,9 +109,9 @@ export const RoleTab = ({ productCode }: RoleTabProps) => {
         actionRef={actionRef}
         columns={columns}
         rowKey="id"
-        request={async ({ current, pageSize }) => {
-          const res = await fetchRoleList({ productCode, page: current, pageSize });
-          return { data: res.data?.list ?? [], total: res.data?.total ?? 0, success: true };
+        search={false}
+        request={async (params, sorter, filter) => {
+          return fetchRoleList({ ...params, productCode }, sorter, filter);
         }}
         toolBarRender={() => [
           <RoleForm key="create" mode="add" trigger={<Button type="primary">新建角色</Button>} />,

+ 2 - 4
src/pages/Admin/Product/index.tsx

@@ -75,10 +75,8 @@ export default function ProductPage() {
         actionRef={actionRef}
         columns={columns}
         rowKey="id"
-        request={async ({ current, pageSize }) => {
-          const res = await fetchProductList({ page: current, pageSize });
-          return { data: res.data?.list ?? [], total: res.data?.total ?? 0, success: true };
-        }}
+        search={false}
+        request={fetchProductList}
         toolBarRender={() => [
           <ProductForm
             key="create"

+ 1 - 1
src/pages/Admin/User/components/BindRolesDrawer.tsx

@@ -21,7 +21,7 @@ export const BindRolesDrawer = ({ userId, productCode, open, onClose }: BindRole
     setLoading(true);
     Promise.all([fetchUserDetail({ id: userId }), fetchRoleList({ productCode, pageSize: 999 })])
       .then(([userRes, roleRes]) => {
-        setRoles(roleRes.data?.list ?? []);
+        setRoles(roleRes.data ?? []);
         setCheckedIds(userRes.data?.roleIds ?? []);
       })
       .finally(() => setLoading(false));

+ 2 - 2
src/pages/Admin/User/components/UserPermDrawer.tsx

@@ -30,13 +30,13 @@ export const UserPermDrawer = ({ userId, productCode, open, onClose }: UserPermD
         fetchPermList({ productCode, pageSize: 9999 }),
         fetchGetUserPerms({ userId }),
       ]);
-      const perms = permRes.data?.list ?? [];
+      const perms = permRes.data ?? [];
       setAllPerms(perms);
 
       // 用 GetUserPerms 返回的覆盖项重建 checkedIds:
       // ALLOW 项 = 用户独有授权,加入选中; DENY 项 = 用户主动撤销,不加入。
       // 角色继承的权限直接从 roleDetails 读出,最终 checkedIds = roleInherited ∪ ALLOW - DENY。
-      const idToId = new Map(perms.map((p) => [p.id, p.id]));
+      const idToId = new Map(perms.map((p: API.PermItem) => [p.id, p.id]));
       const userPerms = userPermsRes.data?.perms ?? [];
       const allowIds = new Set(
         userPerms

+ 3 - 5
src/pages/Admin/User/index.tsx

@@ -23,7 +23,7 @@ export default function UserPage() {
   });
 
   useEffect(() => {
-    fetchProductList({ pageSize: 999 }).then((res) => setProducts(res.data?.list ?? []));
+    fetchProductList({ pageSize: 999 }).then((res) => setProducts(res.data ?? []));
   }, []);
 
   const handleToggleStatus = async (r: API.UserItem) => {
@@ -102,10 +102,8 @@ export default function UserPage() {
         actionRef={actionRef}
         columns={columns}
         rowKey="id"
-        request={async ({ current, pageSize }) => {
-          const res = await fetchUserList({ page: current, pageSize });
-          return { data: res.data?.list ?? [], total: res.data?.total ?? 0, success: true };
-        }}
+        search={false}
+        request={fetchUserList}
         toolBarRender={() => [
           <UserForm
             key="create"

+ 7 - 3
src/services/member/index.ts

@@ -1,4 +1,4 @@
-import { postJson } from '@/request';
+import { pageList, postJson } from '@/request';
 
 export async function fetchAddMember(body: API.AddMemberReq) {
   return postJson<API.MemberAddResult>('/member/add', body);
@@ -12,6 +12,10 @@ export async function fetchRemoveMember(body: API.RemoveMemberReq) {
   return postJson<API.Result>('/member/remove', body);
 }
 
-export async function fetchMemberList(body: API.MemberListReq) {
-  return postJson<API.MemberListResult>('/member/list', body);
+export async function fetchMemberList(
+  params?: API.ReqList<API.MemberListReq>,
+  sorter?: { [key: string]: any },
+  filter?: { [key: string]: any },
+) {
+  return pageList<API.MemberListResult>('/member/list', params, sorter, filter);
 }

+ 1 - 1
src/services/member/typings.d.ts

@@ -29,6 +29,6 @@ declare namespace API {
     page?: number;
     pageSize?: number;
   }
-  type MemberListResult = SvrResultList<MemberItem>;
+  type MemberListResult = ResultList<MemberItem>;
   type MemberAddResult = Result<{ id: number }>;
 }

+ 7 - 3
src/services/perm/index.ts

@@ -1,5 +1,9 @@
-import { postJson } from '@/request';
+import { pageList } from '@/request';
 
-export async function fetchPermList(body: API.PermListReq) {
-  return postJson<API.PermListResult>('/perm/list', body);
+export async function fetchPermList(
+  params?: API.ReqList<API.PermListReq>,
+  sorter?: { [key: string]: any },
+  filter?: { [key: string]: any },
+) {
+  return pageList<API.PermListResult>('/perm/list', params, sorter, filter);
 }

+ 1 - 1
src/services/perm/typings.d.ts

@@ -15,5 +15,5 @@ declare namespace API {
     pageSize?: number;
   }
 
-  type PermListResult = SvrResultList<PermItem>;
+  type PermListResult = ResultList<PermItem>;
 }

+ 7 - 3
src/services/product/index.ts

@@ -1,4 +1,4 @@
-import { postJson } from '@/request';
+import { pageList, postJson } from '@/request';
 
 export async function fetchCreateProduct(body: API.CreateProductReq) {
   return postJson<API.CreateProductResult>('/product/create', body);
@@ -12,8 +12,12 @@ export async function fetchUpdateProduct(body: API.UpdateProductReq) {
   return postJson<API.Result>('/product/update', body);
 }
 
-export async function fetchProductList(body: API.ProductListReq) {
-  return postJson<API.ProductListResult>('/product/list', body);
+export async function fetchProductList(
+  params?: API.ReqList<API.ProductListReq>,
+  sorter?: { [key: string]: any },
+  filter?: { [key: string]: any },
+) {
+  return pageList<API.ProductListResult>('/product/list', params, sorter, filter);
 }
 
 export async function fetchProductDetail(body: API.ProductDetailReq) {

+ 1 - 1
src/services/product/typings.d.ts

@@ -51,5 +51,5 @@ declare namespace API {
   type CreateProductResult = Result<CreateProductResp>;
   type FetchCredentialsResult = Result<FetchInitialCredentialsResp>;
   type ProductDetailResult = Result<ProductItem>;
-  type ProductListResult = SvrResultList<ProductItem>;
+  type ProductListResult = ResultList<ProductItem>;
 }

+ 7 - 3
src/services/role/index.ts

@@ -1,4 +1,4 @@
-import { postJson } from '@/request';
+import { pageList, postJson } from '@/request';
 
 export async function fetchCreateRole(body: API.CreateRoleReq) {
   return postJson<API.RoleCreateResult>('/role/create', body);
@@ -12,8 +12,12 @@ export async function fetchDeleteRole(body: API.DeleteRoleReq) {
   return postJson<API.Result>('/role/delete', body);
 }
 
-export async function fetchRoleList(body: API.RoleListReq) {
-  return postJson<API.RoleListResult>('/role/list', body);
+export async function fetchRoleList(
+  params?: API.ReqList<API.RoleListReq>,
+  sorter?: { [key: string]: any },
+  filter?: { [key: string]: any },
+) {
+  return pageList<API.RoleListResult>('/role/list', params, sorter, filter);
 }
 
 export async function fetchRoleDetail(body: API.RoleDetailReq) {

+ 1 - 1
src/services/role/typings.d.ts

@@ -37,7 +37,7 @@ declare namespace API {
     roleId: number;
     permIds: number[];
   }
-  type RoleListResult = SvrResultList<RoleItem>;
+  type RoleListResult = ResultList<RoleItem>;
   type RoleDetailResult = Result<RoleItem>;
   type RoleCreateResult = Result<{ id: number }>;
 }

+ 7 - 3
src/services/user/index.ts

@@ -1,4 +1,4 @@
-import { postJson } from '@/request';
+import { pageList, postJson } from '@/request';
 
 export async function fetchCreateUser(body: API.CreateUserReq) {
   return postJson<API.UserCreateResult>('/user/create', body);
@@ -8,8 +8,12 @@ export async function fetchUpdateUser(body: API.UpdateUserReq) {
   return postJson<API.Result>('/user/update', body);
 }
 
-export async function fetchUserList(body: API.UserListReq) {
-  return postJson<API.UserListResult>('/user/list', body);
+export async function fetchUserList(
+  params?: API.ReqList<API.UserListReq>,
+  sorter?: { [key: string]: any },
+  filter?: { [key: string]: any },
+) {
+  return pageList<API.UserListResult>('/user/list', params, sorter, filter);
 }
 
 export async function fetchUserDetail(body: API.UserDetailReq) {

+ 1 - 1
src/services/user/typings.d.ts

@@ -62,7 +62,7 @@ declare namespace API {
     id: number;
     status: number;
   }
-  type UserListResult = SvrResultList<UserItem>;
+  type UserListResult = ResultList<UserItem>;
   type UserDetailResult = Result<UserItem>;
   type UserCreateResult = Result<{ id: number }>;
 }