Przeglądaj źródła

♻️ refactor(admin): 优化客户列表区域显示逻辑

- 提取区域显示逻辑为getAreaDisplay函数,提高代码复用性
- 省份列显示顶级区域名称,子区域显示其父区域名称
- 地区列仅显示子区域名称,顶级区域显示为"-"
- 统一处理null值和未找到区域的情况,显示为"-"
yourname 8 miesięcy temu
rodzic
commit
fed201ca19
1 zmienionych plików z 30 dodań i 8 usunięć
  1. 30 8
      src/client/admin/pages/Clients.tsx

+ 30 - 8
src/client/admin/pages/Clients.tsx

@@ -44,6 +44,34 @@ const Clients: React.FC = () => {
       setAreas(areasData.data);
     }
   }, [areasData]);
+
+  // 获取区域显示名称
+  const getAreaDisplay = (areaId: number | null, type: 'province' | 'region') => {
+    if (!areaId) return '-';
+    
+    const area = areas.find(a => a.id === areaId);
+    if (!area) return '-';
+    
+    if (type === 'province') {
+      // 如果是顶级区域(省份)
+      if (!area.parentId) {
+        return area.name;
+      }
+      // 如果是子区域,查找父区域名称
+      const parentArea = areas.find(a => a.id === area.parentId);
+      return parentArea ? parentArea.name : area.name;
+    }
+    
+    if (type === 'region') {
+      // 如果是子区域,显示子区域名称
+      if (area.parentId) {
+        return area.name;
+      }
+      return '-';
+    }
+    
+    return '-';
+  };
   
   // 获取客户列表数据
   const { data: clientsData, isLoading: clientsLoading, error: clientsError } = useQuery({
@@ -215,20 +243,14 @@ const Clients: React.FC = () => {
       dataIndex: 'areaId',
       key: 'province',
       width: 100,
-      render: (areaId: number) => {
-        const area = areas.find(a => a.id === areaId);
-        return area ? area.name : '-';
-      },
+      render: (areaId: number) => getAreaDisplay(areaId, 'province'),
     },
     {
       title: '地区',
       dataIndex: 'areaId',
       key: 'region',
       width: 100,
-      render: (areaId: number) => {
-        const area = areas.find(a => a.id === areaId);
-        return area ? area.name : '-';
-      },
+      render: (areaId: number) => getAreaDisplay(areaId, 'region'),
     },
     {
       title: '登记审核',