feat(admin): 报读记录操作列补归档按钮
CI / check (pull_request) Failing after 28m34s
Dependency Check / check (pull_request) Failing after 13m52s

active 记录操作列原本恒为空(仅 archived 显示永久删除)。
新增归档操作: 调用 DELETE /archive/enrollments/:id(权限 student:edit),
确认弹窗提示会联动花名册移出, 归档后显示删除按钮。
This commit is contained in:
2026-08-12 12:05:37 +08:00
parent 6f9316709f
commit 6046a6939e
@@ -70,6 +70,10 @@ export const EnrollmentsTab: React.FC<TabProps & { data: EnrollmentRecord[] }> =
async (id: number) => api.delete(`/archive/enrollments/${id}/permanent`),
{ invalidate: [['archive', studentId]] },
);
const archiveEnrollmentMutation = useApiMutation(
async (id: number) => api.delete(`/archive/enrollments/${id}`),
{ invalidate: [['archive', studentId]] },
);
const {
data: classes = [],
@@ -181,6 +185,23 @@ export const EnrollmentsTab: React.FC<TabProps & { data: EnrollmentRecord[] }> =
}
};
const handleArchive = (record: EnrollmentRecord) => {
modal.confirm({
title: `归档报读记录(${formatEnrollmentDisplayName(record)})?`,
content: '归档后该生将从对应班级花名册移出(若无其他在读报读),报读记录保留可查。',
okText: '归档',
cancelText: '取消',
onOk: async () => {
try {
await archiveEnrollmentMutation.mutateAsync(record.id);
message.success('已归档');
} catch {
// 错误提示由 useApiMutation 统一处理
}
},
});
};
const handlePurge = (record: EnrollmentRecord) => {
modal.confirm({
title: `永久删除报读记录(${formatEnrollmentDisplayName(record)})?`,
@@ -303,9 +324,15 @@ export const EnrollmentsTab: React.FC<TabProps & { data: EnrollmentRecord[] }> =
{
title: '操作',
render: (_: unknown, r: EnrollmentRecord) =>
r.status === 'archived' && canPurgeArchive ? (
<Button size="small" danger type="link" onClick={() => handlePurge(r)}>
r.status === 'archived' ? (
canPurgeArchive && (
<Button size="small" danger type="link" onClick={() => handlePurge(r)}>
</Button>
)
) : hasPermission('student:edit') ? (
<Button size="small" type="link" onClick={() => handleArchive(r)}>
</Button>
) : null,
},