Explorar o código

♻️ refactor(areas): 修改区域树数据请求方式

- 将区域树数据获取方式从tree接口迁移到基础列表接口
- 添加查询参数支持:分页、筛选、排序
- 调整子树加载逻辑以适应新的数组响应格式
- 优化代码格式,添加箭头函数参数括号
yourname hai 3 meses
pai
achega
b069562d59

+ 11 - 5
web/src/client/admin/components/AreaTreeAsync.tsx

@@ -55,8 +55,14 @@ const SubTreeLoader: React.FC<SubTreeLoaderProps> = ({
   const { data: subTreeData, isLoading: isSubTreeLoading } = useQuery({
     queryKey: ['areas-subtree', nodeId],
     queryFn: async () => {
-      const res = await areaClient.tree[':id'].$get({
-        param: { id: nodeId }
+      const res = await areaClient.$get({
+        query: { 
+          page: 1, 
+          pageSize: 100 , 
+          filters: JSON.stringify({ parentId: nodeId}),
+          sortBy: 'id',
+          sortOrder: 'ASC'
+        }
       });
       if (res.status !== 200) throw new Error('获取子树失败');
       const response = await res.json();
@@ -84,8 +90,8 @@ const SubTreeLoader: React.FC<SubTreeLoaderProps> = ({
     );
   }
 
-  // subTreeData 是一个 AreaNode 对象,我们需要处理其 children 数组
-  const childNodes = subTreeData.children || [];
+  // subTreeData 是一个 AreaNode 数组,直接使用
+  const childNodes = subTreeData || [];
 
   if (childNodes.length === 0) {
     return (
@@ -97,7 +103,7 @@ const SubTreeLoader: React.FC<SubTreeLoaderProps> = ({
 
   return (
     <div>
-      {childNodes.map(node => (
+      {childNodes.map((node) => (
         <TreeNode
           key={node.id}
           node={node}

+ 8 - 2
web/src/client/admin/pages/AreasTreePage.tsx

@@ -57,8 +57,14 @@ export const AreasTreePage: React.FC = () => {
   const { data: provinceData, isLoading: isProvinceLoading } = useQuery({
     queryKey: ['areas-tree-province'],
     queryFn: async () => {
-      const res = await areaClient.tree.level[':level'].$get({
-        param: { level: 1 }
+      const res = await areaClient.$get({
+        query: { 
+          page: 1, 
+          pageSize: 100 , 
+          filters: JSON.stringify({ level: 1}),
+          sortBy: 'id',
+          sortOrder: 'ASC'
+        }
       });
       if (res.status !== 200) throw new Error('获取省级数据失败');
       const response = await res.json();