From b7175105ed55a082d78d8fbed2500637ad145580 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Tue, 15 Sep 2026 16:54:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(studentMsg):=20=E6=8D=A2=E7=8F=AD=E7=BA=A7?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E6=94=AF=E6=8C=81=E5=8A=A0=E8=BD=BD=E5=A4=9A?= =?UTF-8?q?=E5=90=8D=E5=AD=A6=E7=94=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../xg/xsjcxx/studentMsg/studentMsg/index.vue | 90 ++++++++++--------- 1 file changed, 49 insertions(+), 41 deletions(-) diff --git a/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue b/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue index 4fb86497..b9cdbae5 100644 --- a/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue +++ b/web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue @@ -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([]); +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.newCollegeId = ''; + changeClassForm.newMajorId = ''; + changeClassForm.newClassId = ''; + changeClassForm.effectiveTime = ''; + changeClassForm.changeReason = ''; + majorOptions.value = []; + classOptions.value = []; + changeClassFailList.value = []; + changeClassProgress.value = { current: 0, total: 0 }; - // 填充原班级信息 - changeClassForm.originalCollegeId = studentData.collegeId; - changeClassForm.originalCollegeName = studentData.collegeName; - changeClassForm.originalMajorId = studentData.majorId; - changeClassForm.originalMajorName = studentData.majorName; - changeClassForm.originalClassId = studentData.classId; - changeClassForm.originalClassName = studentData.className; + changeClassDialog.title = + changeClassStudents.value.length === 1 + ? '换班级申请' + : `批量换班级(${changeClassStudents.value.length} 人)`; - // 重置新班级选择 - changeClassForm.newCollegeId = ''; - changeClassForm.newMajorId = ''; - changeClassForm.newClassId = ''; - changeClassForm.effectiveTime = ''; - changeClassForm.changeReason = ''; - - // 获取学院选项 - await loadCollegeOptions(); - - changeClassDialog.visible = true; - } else { - ElMessage.error(res?.msg || '获取学生信息失败'); - } - } catch (error) { - console.error('获取学生信息失败:', error); - ElMessage.error('获取学生信息失败,请重试'); - } + await loadCollegeOptions(); + changeClassDialog.visible = true; }; /** 加载学院选项 */