|
|
@@ -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>
|
|
|
|