diff --git a/apps/admin/src/pages/Classes/detail.tsx b/apps/admin/src/pages/Classes/detail.tsx index fef152e6..52a6d35a 100644 --- a/apps/admin/src/pages/Classes/detail.tsx +++ b/apps/admin/src/pages/Classes/detail.tsx @@ -176,11 +176,16 @@ const ClassDetailPage: React.FC = () => { } setAddingTeacher(true); try { - await api.post(`/classes/${id}/teachers`, { + const result = await api.post(`/classes/${id}/teachers`, { userId: teacherUserId, roleType: teacherRole, subjects: teacherSubjects, }); + // 后端对全部科目已存在的情况返回空数组(不写审计/通知),前端如实提示避免误以为有新增 + if (result.length === 0) { + message.warning('该教师已分配相同科目,未新增'); + return; + } setTeacherModalOpen(false); fetchDetail(); message.success('已添加'); diff --git a/apps/admin/src/pages/Schedules/ScheduleModals.tsx b/apps/admin/src/pages/Schedules/ScheduleModals.tsx index f5d2a972..6b50136d 100644 --- a/apps/admin/src/pages/Schedules/ScheduleModals.tsx +++ b/apps/admin/src/pages/Schedules/ScheduleModals.tsx @@ -185,6 +185,12 @@ export const ScheduleModal: React.FC = ({ > {mode !== 'detail' ? (
+ {/* teacherId 由父组件 handleTeacherChange 通过 setFieldValue 写入(下拉为复合 key 受控组件, + 不直接绑 name);用隐藏字段注册,保证 validateFields 返回、resetFields 清理(否则 + 提交丢失 teacherId,且新开创建弹窗残留上次编辑的老师) */} +