fix: I2 add studentNo to class listing, I4 replace attendance edit placeholder with working edit modal

This commit is contained in:
2026-07-05 20:31:53 +08:00
parent b7117ddf2d
commit 66aadfe3ff
2 changed files with 43 additions and 1 deletions

View File

@@ -131,6 +131,31 @@ const AttendancePage: React.FC = () => {
const [studentSearchResults, setStudentSearchResults] = useState<{ id: number; name: string }[]>([]);
const [studentSearchLoading, setStudentSearchLoading] = useState(false);
// Edit modal
const [editModalOpen, setEditModalOpen] = useState(false);
const [editRecord, setEditRecord] = useState<AttendanceRecordItem | null>(null);
const [editForm] = Form.useForm();
// ── Edit record ──
const handleEdit = (record: AttendanceRecordItem) => {
setEditRecord(record);
editForm.setFieldsValue({ session: record.session, status: record.status, remark: record.remark });
setEditModalOpen(true);
};
const handleEditSubmit = async () => {
try {
const values = await editForm.validateFields();
await api.put(`/attendance-records/${editRecord!.id}`, values);
message.success('更新成功');
setEditModalOpen(false);
fetchRecords();
} catch (e: any) {
message.error(e?.message || '更新失败');
}
};
// ── Fetch classes ──
const fetchClasses = useCallback(async () => {
try {
@@ -343,7 +368,7 @@ const AttendancePage: React.FC = () => {
width: 80,
fixed: 'right' as const,
render: (_: unknown, record: AttendanceRecordItem) => (
<PermissionButton permission="attendance:edit" size="small" onClick={() => message.info('编辑功能开发中')}>
<PermissionButton permission="attendance:edit" size="small" onClick={() => handleEdit(record)}>
</PermissionButton>
),
@@ -625,6 +650,22 @@ const AttendancePage: React.FC = () => {
</Form.Item>
</Form>
</Modal>
{/* ── Edit modal ── */}
<Modal title="编辑考勤" open={editModalOpen} onOk={handleEditSubmit} onCancel={() => setEditModalOpen(false)}>
<Form form={editForm} layout="vertical">
<Form.Item name="session" label="时段" rules={[{ required: true }]}>
<Select options={SESSION_OPTIONS.map((s) => ({ value: s.value, label: s.label }))} />
</Form.Item>
<Form.Item name="status" label="状态" rules={[{ required: true }]}>
<Select options={STATUS_OPTIONS} />
</Form.Item>
<Form.Item name="remark" label="备注">
<Input.TextArea rows={2} />
</Form.Item>
</Form>
</Modal>
</div>
);
};