fix(admin): 报读操作统一失效档案与班级查询缓存
报读增删改/归档都会经 syncRosterMembership 变更班级花名册,4 个 mutation 统一失效 ['archive', studentId] + queryKeys.classes.all(抽 ENROLLMENT_INVALIDATE 常量),避免班级详情/花名册读到陈旧数据;操作列拍平嵌套三元。
This commit was merged in pull request #85.
This commit is contained in:
@@ -56,23 +56,26 @@ export const EnrollmentsTab: React.FC<TabProps & { data: EnrollmentRecord[] }> =
|
||||
const [saving, setSaving] = useState(false);
|
||||
const [selectedClassId, setSelectedClassId] = useState<number>();
|
||||
|
||||
// 报读相关操作都会经 syncRosterMembership 变更班级花名册(加人/移出/改班),
|
||||
// 统一失效档案 + 班级侧查询,避免增删 key 时漏改
|
||||
const ENROLLMENT_INVALIDATE = [['archive', studentId], queryKeys.classes.all];
|
||||
const addEnrollmentMutation = useApiMutation(
|
||||
async (payload: Record<string, unknown>) =>
|
||||
api.post(`/archive/${studentId}/enrollments`, payload),
|
||||
{ invalidate: [['archive', studentId]] },
|
||||
{ invalidate: ENROLLMENT_INVALIDATE },
|
||||
);
|
||||
const saveEnrollmentCellMutation = useApiMutation(
|
||||
async ({ id, payload }: { id: number; payload: Record<string, unknown> }) =>
|
||||
api.put(`/archive/enrollments/${id}`, payload),
|
||||
{ invalidate: [['archive', studentId]] },
|
||||
{ invalidate: ENROLLMENT_INVALIDATE },
|
||||
);
|
||||
const purgeEnrollmentMutation = useApiMutation(
|
||||
async (id: number) => api.delete(`/archive/enrollments/${id}/permanent`),
|
||||
{ invalidate: [['archive', studentId]] },
|
||||
{ invalidate: ENROLLMENT_INVALIDATE },
|
||||
);
|
||||
const archiveEnrollmentMutation = useApiMutation(
|
||||
async (id: number) => api.delete(`/archive/enrollments/${id}`),
|
||||
{ invalidate: [['archive', studentId]] },
|
||||
{ invalidate: ENROLLMENT_INVALIDATE },
|
||||
);
|
||||
|
||||
const {
|
||||
@@ -323,18 +326,20 @@ export const EnrollmentsTab: React.FC<TabProps & { data: EnrollmentRecord[] }> =
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
render: (_: unknown, r: EnrollmentRecord) =>
|
||||
r.status === 'archived' ? (
|
||||
canPurgeArchive && (
|
||||
render: (_: unknown, r: EnrollmentRecord) => {
|
||||
if (r.status === 'archived') {
|
||||
return canPurgeArchive ? (
|
||||
<Button size="small" danger type="link" onClick={() => handlePurge(r)}>
|
||||
删除
|
||||
</Button>
|
||||
)
|
||||
) : hasPermission('student:edit') ? (
|
||||
) : null;
|
||||
}
|
||||
return hasPermission('student:edit') ? (
|
||||
<Button size="small" type="link" onClick={() => handleArchive(r)}>
|
||||
归档
|
||||
</Button>
|
||||
) : null,
|
||||
) : null;
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user