Просмотр исходного кода

✨ feat(salary-management): 增强薪资管理操作的错误处理

- 为创建、更新和删除薪资的 API 调用添加详细的错误信息提取逻辑
- 当 API 响应状态码非 200 时,尝试解析响应体以获取具体的错误消息
- 如果解析失败,则回退到默认的错误提示信息,提升用户体验和调试便利性
yourname 2 недель назад
Родитель
Сommit
ca6b46e909
1 измененных файлов с 27 добавлено и 3 удалено
  1. 27 3
      allin-packages/salary-management-ui/src/components/SalaryManagement.tsx

+ 27 - 3
allin-packages/salary-management-ui/src/components/SalaryManagement.tsx

@@ -90,7 +90,15 @@ const SalaryManagement: React.FC = () => {
   const createMutation = useMutation({
   const createMutation = useMutation({
     mutationFn: async (data: CreateSalaryRequest) => {
     mutationFn: async (data: CreateSalaryRequest) => {
       const res = await salaryClientManager.get().create.$post({ json: data });
       const res = await salaryClientManager.get().create.$post({ json: data });
-      if (res.status !== 200) throw new Error('创建薪资失败');
+      if (res.status !== 200) {
+        // 尝试从响应中提取错误信息
+        try {
+          const errorData = await res.json();
+          throw new Error(errorData.message || '创建薪资失败');
+        } catch {
+          throw new Error('创建薪资失败');
+        }
+      }
       return await res.json();
       return await res.json();
     },
     },
     onSuccess: () => {
     onSuccess: () => {
@@ -112,7 +120,15 @@ const SalaryManagement: React.FC = () => {
         param: { id: data.id! },
         param: { id: data.id! },
         json: data
         json: data
       });
       });
-      if (res.status !== 200) throw new Error('更新薪资失败');
+      if (res.status !== 200) {
+        // 尝试从响应中提取错误信息
+        try {
+          const errorData = await res.json();
+          throw new Error(errorData.message || '更新薪资失败');
+        } catch {
+          throw new Error('更新薪资失败');
+        }
+      }
       return await res.json();
       return await res.json();
     },
     },
     onSuccess: () => {
     onSuccess: () => {
@@ -129,7 +145,15 @@ const SalaryManagement: React.FC = () => {
   const deleteMutation = useMutation({
   const deleteMutation = useMutation({
     mutationFn: async (id: number) => {
     mutationFn: async (id: number) => {
       const res = await salaryClientManager.get().delete[':id']['$delete']({ param: { id } });
       const res = await salaryClientManager.get().delete[':id']['$delete']({ param: { id } });
-      if (res.status !== 200) throw new Error('删除薪资失败');
+      if (res.status !== 200) {
+        // 尝试从响应中提取错误信息
+        try {
+          const errorData = await res.json();
+          throw new Error(errorData.message || '删除薪资失败');
+        } catch {
+          throw new Error('删除薪资失败');
+        }
+      }
       return await res.json();
       return await res.json();
     },
     },
     onSuccess: () => {
     onSuccess: () => {