feat(studentMsg): 换班级弹窗支持加载多名学生

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-09-15 16:54:10 +08:00
1 parent ae6ac58332
commit b7175105ed
1 file changed
+43 -35
@@ -1931,6 +1931,24 @@ const changeClassForm = reactive({
changeReason: ''
});
interface ChangeClassStudentItem {
studentId: string | number;
studentNo: string;
studentName: string;
gender?: string;
originalCollegeId: string | number;
originalCollegeName: string;
originalMajorId: string | number;
originalMajorName: string;
originalClassId: string | number;
originalClassName: string;
}
const changeClassStudents = ref<ChangeClassStudentItem[]>([]);
const changeClassSubmitting = ref(false);
const changeClassProgress = ref({ current: 0, total: 0 });
const changeClassFailList = ref<{ studentNo: string; studentName: string; reason: string }[]>([]);
// 计算属性:判断是否显示新增按钮(只有班级节点才显示)
const showAddButton = computed(() => {
if (!currentSelectedNode.value) {
@@ -3338,57 +3356,47 @@ const submitStatusChange = async () => {
/** 打开换班级弹窗 */
const openChangeClassModal = async () => {
if (ids.value.length !== 1) {
ElMessage.warning('请选择一个学生进行换班级操作');
if (ids.value.length === 0) {
ElMessage.warning('请选择要换班级的学生');
return;
}
const studentId = ids.value[0];
const selectedStudent = studentList.value.find((student) => student.id === studentId);
if (!selectedStudent) {
const selectedStudents = studentList.value.filter((s) => ids.value.includes(s.id));
if (selectedStudents.length === 0) {
ElMessage.error('未找到选中的学生信息');
return;
}
try {
// 获取学生详细信息
const res = await service.get(`/studentMsg/studentMsg/${studentId}`);
if (res && res.code === 200) {
const studentData = res.data;
changeClassStudents.value = selectedStudents.map((s) => ({
studentId: s.id,
studentNo: s.studentNo,
studentName: s.name,
gender: s.gender,
originalCollegeId: s.collegeId,
originalCollegeName: s.collegeName,
originalMajorId: s.majorId,
originalMajorName: s.majorName,
originalClassId: s.classId,
originalClassName: s.className
}));
// 填充学生基本信息
changeClassForm.studentId = studentData.id;
changeClassForm.studentNo = studentData.studentNo;
changeClassForm.studentName = studentData.name;
changeClassForm.gender = studentData.gender;
// 填充原班级信息
changeClassForm.originalCollegeId = studentData.collegeId;
changeClassForm.originalCollegeName = studentData.collegeName;
changeClassForm.originalMajorId = studentData.majorId;
changeClassForm.originalMajorName = studentData.majorName;
changeClassForm.originalClassId = studentData.classId;
changeClassForm.originalClassName = studentData.className;
// 重置新班级选择
changeClassForm.newCollegeId = '';
changeClassForm.newMajorId = '';
changeClassForm.newClassId = '';
changeClassForm.effectiveTime = '';
changeClassForm.changeReason = '';
majorOptions.value = [];
classOptions.value = [];
changeClassFailList.value = [];
changeClassProgress.value = { current: 0, total: 0 };
changeClassDialog.title =
changeClassStudents.value.length === 1
? '换班级申请'
: `批量换班级(${changeClassStudents.value.length} 人)`;
// 获取学院选项
await loadCollegeOptions();
changeClassDialog.visible = true;
} else {
ElMessage.error(res?.msg || '获取学生信息失败');
}
} catch (error) {
console.error('获取学生信息失败:', error);
ElMessage.error('获取学生信息失败,请重试');
}
};
/** 加载学院选项 */