Преглед на файлове

✨ feat(areas): 添加省市区操作反馈提示

- 为创建、更新、删除和状态切换操作添加成功提示
- 为所有操作添加错误提示
- 优化子节点创建后对话框关闭逻辑
- 统一使用toast组件展示操作结果反馈
yourname преди 3 месеца
родител
ревизия
06967a01fa
променени са 1 файла, в които са добавени 32 реда и са изтрити 0 реда
  1. 32 0
      web/src/client/admin/pages/AreasTreePage.tsx

+ 32 - 0
web/src/client/admin/pages/AreasTreePage.tsx

@@ -11,6 +11,7 @@ import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent,
 import { AreaForm } from '../components/AreaForm';
 import { AreaTreeAsync } from '../components/AreaTreeAsync';
 import type { CreateAreaInput, UpdateAreaInput } from '@d8d/server/modules/areas/area.schema';
+import { toast } from 'sonner';
 
 // 类型提取规范
 type AreaResponse = InferResponseType<typeof areaClient.$get, 200>['data'][0];
@@ -91,8 +92,21 @@ export const AreasTreePage: React.FC = () => {
         queryClient.invalidateQueries({ queryKey: ['areas-subtree', variables.parentId] });
       }
 
+      // 显示成功提示
+      toast.success('省市区创建成功');
+
+      // 关闭对话框
       setIsCreateDialogOpen(false);
+
+      // 如果是创建子节点,还需要关闭子节点对话框
+      if (variables.parentId) {
+        setIsAddChildDialogOpen(false);
+        setParentAreaForChild(null);
+      }
     },
+    onError: () => {
+      toast.error('创建失败,请重试');
+    }
   });
 
   // 更新省市区
@@ -115,9 +129,15 @@ export const AreasTreePage: React.FC = () => {
         queryClient.invalidateQueries({ queryKey: ['areas-subtree', selectedArea.parentId] });
       }
 
+      // 显示成功提示
+      toast.success('省市区更新成功');
+
       setIsEditDialogOpen(false);
       setSelectedArea(null);
     },
+    onError: () => {
+      toast.error('更新失败,请重试');
+    }
   });
 
   // 删除省市区
@@ -139,9 +159,15 @@ export const AreasTreePage: React.FC = () => {
         queryClient.invalidateQueries({ queryKey: ['areas-subtree', selectedArea.parentId] });
       }
 
+      // 显示成功提示
+      toast.success('省市区删除成功');
+
       setIsDeleteDialogOpen(false);
       setSelectedArea(null);
     },
+    onError: () => {
+      toast.error('删除失败,请重试');
+    }
   });
 
   // 启用/禁用省市区
@@ -164,9 +190,15 @@ export const AreasTreePage: React.FC = () => {
         queryClient.invalidateQueries({ queryKey: ['areas-subtree', selectedArea.parentId] });
       }
 
+      // 显示成功提示
+      toast.success(`省市区${selectedArea?.isDisabled === 0 ? '禁用' : '启用'}成功`);
+
       setIsStatusDialogOpen(false);
       setSelectedArea(null);
     },
+    onError: () => {
+      toast.error('状态切换失败,请重试');
+    }
   });