feat(studentMsg): 换班级弹窗支持加载多名学生
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
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('获取学生信息失败,请重试');
|
||||
}
|
||||
};
|
||||
|
||||
/** 加载学院选项 */
|
||||
|
||||
Reference in new issue
Block a user