Compare commits
2 Commits
1d656a80e7
...
1da763109b
| Author | SHA1 | Date | |
|---|---|---|---|
| 1da763109b | |||
| 4d77848bf7 |
@@ -42,7 +42,6 @@ interface ClassStudent {
|
||||
interface ClassTeacher {
|
||||
id: number;
|
||||
userId: number;
|
||||
name: string | null;
|
||||
username: string;
|
||||
roleType: string;
|
||||
subject: string | null;
|
||||
@@ -190,9 +189,19 @@ const ClassDetailPage: React.FC = () => {
|
||||
}
|
||||
}, [id]);
|
||||
|
||||
const fetchUsers = useCallback(async () => {
|
||||
try {
|
||||
const res = (await api.get('/rbac/users')) as UserItem[];
|
||||
setAllUsers(res || []);
|
||||
} catch {
|
||||
setAllUsers([]);
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
fetchDetail();
|
||||
}, [fetchDetail]);
|
||||
fetchUsers();
|
||||
}, [fetchDetail, fetchUsers]);
|
||||
|
||||
const fetchSchedules = useCallback(async () => {
|
||||
if (!id) return;
|
||||
@@ -321,8 +330,7 @@ const ClassDetailPage: React.FC = () => {
|
||||
|
||||
const openTeacherModal = async () => {
|
||||
try {
|
||||
const res = (await api.get('/rbac/users')) as UserItem[];
|
||||
setAllUsers(res || []);
|
||||
await fetchUsers();
|
||||
setTeacherUserId(undefined);
|
||||
setTeacherRole('subject_teacher');
|
||||
setTeacherSubject('');
|
||||
@@ -333,6 +341,9 @@ const ClassDetailPage: React.FC = () => {
|
||||
}
|
||||
};
|
||||
|
||||
const getTeacherName = (teacher: ClassTeacher) =>
|
||||
allUsers.find((user) => user.id === teacher.userId)?.name?.trim() || '-';
|
||||
|
||||
if (!detail) return null;
|
||||
|
||||
const studentColumns: ColumnsType<ClassStudent> = [
|
||||
@@ -361,7 +372,7 @@ const ClassDetailPage: React.FC = () => {
|
||||
];
|
||||
|
||||
const teacherColumns: ColumnsType<ClassTeacher> = [
|
||||
{ title: '姓名', dataIndex: 'name', render: (name: string | null) => name || '-' },
|
||||
{ title: '姓名', render: (_: unknown, teacher) => getTeacherName(teacher) },
|
||||
{
|
||||
title: '角色',
|
||||
dataIndex: 'roleType',
|
||||
@@ -510,7 +521,12 @@ const ClassDetailPage: React.FC = () => {
|
||||
{detail.studentCount}/{detail.maxStudents || '-'}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="班主任">
|
||||
{teachers.find((t) => t.roleType === 'head_teacher')?.name || '-'}
|
||||
{(() => {
|
||||
const headTeacher = teachers.find(
|
||||
(teacher) => teacher.roleType === 'head_teacher',
|
||||
);
|
||||
return headTeacher ? getTeacherName(headTeacher) : '-';
|
||||
})()}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="备注">{detail.notes || '-'}</Descriptions.Item>
|
||||
</Descriptions>
|
||||
|
||||
Reference in New Issue
Block a user