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

feat(salary-ui): 添加暂无数据显示功能

- 当薪资数据为空时显示"暂无数据"提示
- 使用colSpan跨所有表格列居中显示
- 保持与其他管理界面一致的用户体验

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 месяц назад
Родитель
Сommit
94f68636e3
1 измененных файлов с 40 добавлено и 32 удалено
  1. 40 32
      allin-packages/salary-management-ui/src/components/SalaryManagement.tsx

+ 40 - 32
allin-packages/salary-management-ui/src/components/SalaryManagement.tsx

@@ -303,40 +303,48 @@ const SalaryManagement: React.FC = () => {
                 </TableRow>
               </TableHeader>
               <TableBody>
-                {data?.data?.map((salary: SalaryResponse) => (
-                  <TableRow key={salary.id} data-testid={`salary-row-${salary.id}`}>
-                    <TableCell>{salary.id}</TableCell>
-                    <TableCell>{salary.province?.name || salary.provinceId}</TableCell>
-                    <TableCell>{salary.city?.name || salary.cityId}</TableCell>
-                    <TableCell>{salary.district?.name || salary.districtId || '-'}</TableCell>
-                    <TableCell>¥{salary.basicSalary.toFixed(2)}</TableCell>
-                    <TableCell>¥{(salary.allowance || 0).toFixed(2)}</TableCell>
-                    <TableCell>¥{(salary.insurance || 0).toFixed(2)}</TableCell>
-                    <TableCell>¥{(salary.housingFund || 0).toFixed(2)}</TableCell>
-                    <TableCell className="font-semibold">¥{salary.totalSalary.toFixed(2)}</TableCell>
-                    <TableCell>{format(new Date(salary.updateTime), 'yyyy-MM-dd HH:mm')}</TableCell>
-                    <TableCell>
-                      <div className="flex gap-2">
-                        <Button
-                          variant="ghost"
-                          size="sm"
-                          onClick={() => showEditModal(salary)}
-                          data-testid={`edit-salary-${salary.id}`}
-                        >
-                          <Edit className="h-4 w-4" />
-                        </Button>
-                        <Button
-                          variant="ghost"
-                          size="sm"
-                          onClick={() => showDeleteDialog(salary.id)}
-                          data-testid={`delete-salary-${salary.id}`}
-                        >
-                          <Trash2 className="h-4 w-4" />
-                        </Button>
-                      </div>
+                {data?.data && data.data.length > 0 ? (
+                  data.data.map((salary: SalaryResponse) => (
+                    <TableRow key={salary.id} data-testid={`salary-row-${salary.id}`}>
+                      <TableCell>{salary.id}</TableCell>
+                      <TableCell>{salary.province?.name || salary.provinceId}</TableCell>
+                      <TableCell>{salary.city?.name || salary.cityId}</TableCell>
+                      <TableCell>{salary.district?.name || salary.districtId || '-'}</TableCell>
+                      <TableCell>¥{salary.basicSalary.toFixed(2)}</TableCell>
+                      <TableCell>¥{(salary.allowance || 0).toFixed(2)}</TableCell>
+                      <TableCell>¥{(salary.insurance || 0).toFixed(2)}</TableCell>
+                      <TableCell>¥{(salary.housingFund || 0).toFixed(2)}</TableCell>
+                      <TableCell className="font-semibold">¥{salary.totalSalary.toFixed(2)}</TableCell>
+                      <TableCell>{format(new Date(salary.updateTime), 'yyyy-MM-dd HH:mm')}</TableCell>
+                      <TableCell>
+                        <div className="flex gap-2">
+                          <Button
+                            variant="ghost"
+                            size="sm"
+                            onClick={() => showEditModal(salary)}
+                            data-testid={`edit-salary-${salary.id}`}
+                          >
+                            <Edit className="h-4 w-4" />
+                          </Button>
+                          <Button
+                            variant="ghost"
+                            size="sm"
+                            onClick={() => showDeleteDialog(salary.id)}
+                            data-testid={`delete-salary-${salary.id}`}
+                          >
+                            <Trash2 className="h-4 w-4" />
+                          </Button>
+                        </div>
+                      </TableCell>
+                    </TableRow>
+                  ))
+                ) : (
+                  <TableRow>
+                    <TableCell colSpan={11} className="text-center py-8">
+                      <p className="text-muted-foreground">暂无数据</p>
                     </TableCell>
                   </TableRow>
-                ))}
+                )}
               </TableBody>
             </Table>