فهرست منبع

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

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 1 ماه پیش
والد
کامیت
b7175105ed
1فایلهای تغییر یافته به همراه52 افزوده شده و 44 حذف شده
  1. 52 44
      web/src/views/xg/xsjcxx/studentMsg/studentMsg/index.vue

+ 52 - 44
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<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;
-
-      // 填充学生基本信息
-      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 = '';
-
-      // 获取学院选项
-      await loadCollegeOptions();
-
-      changeClassDialog.visible = true;
-    } else {
-      ElMessage.error(res?.msg || '获取学生信息失败');
-    }
-  } catch (error) {
-    console.error('获取学生信息失败:', error);
-    ElMessage.error('获取学生信息失败,请重试');
-  }
+  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.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;
 };
 
 /** 加载学院选项 */