Просмотр исходного кода

修复卡管理,专业类别

jinxia.mo 1 день назад
Родитель
Сommit
b99ae88f62
1 измененных файлов с 21 добавлено и 20 удалено
  1. 21 20
      back-ui/src/views/dz/cards/components/EditDialog.vue

+ 21 - 20
back-ui/src/views/dz/cards/components/EditDialog.vue

@@ -181,14 +181,20 @@ watch([selectedExamType, () => form.value.location], ([examType, location], [old
   if (oldExamType === undefined && oldLocation === undefined) {
     return;
   }
-  // 如果考生类型变为 VHS 且有省份,加载专业类别列表
-  if (examType === 'VHS' && location) {
-    loadExamMajorList(location, examType).then(() => {
-      // 如果列表加载完成但 selectedExamMajor 还没有值,保持原值不变
-      // 这里不需要重新设置 selectedExamMajor,因为它在 getUserInfo 中已经设置过了
-    });
-  } else if (examType !== 'VHS') {
-    // 如果考生类型不是 VHS,清空专业类别相关数据
+  // 只有 location 与 examType 有值或这2个值有变化时才调用
+  if (examType && location) {
+    // 如果考生类型变为 VHS,加载专业类别列表
+    if (examType === 'VHS') {
+      loadExamMajorList(location, examType);
+    } else {
+      // 如果考生类型不是 VHS,清空专业类别相关数据
+      examMajorList.value = [];
+      selectedExamMajor.value = null;
+      form.value.examMajor = null;
+      form.value.examMajorName = null;
+    }
+  } else {
+    // 如果 location 或 examType 为空,清空专业类别相关数据
     examMajorList.value = [];
     selectedExamMajor.value = null;
     form.value.examMajor = null;
@@ -200,8 +206,8 @@ watch([selectedExamType, () => form.value.location], ([examType, location], [old
 const loadExamMajorList = async (location, examType) => {
   try {
     const res = await listAllSubject({
-      location: location,
-      examType: examType
+      locations: location,
+      examTypes: examType
     });
     // 转换数据格式,dictValue 对应 subject_id,dictLabel 对应 subject_name
     // 确保 dictValue 是 Number 类型,与 examMajor 的 Integer 类型匹配
@@ -269,19 +275,14 @@ const getUserInfo = (cardInfo) => {
       area.selected = targetArea.areaId;
       area.selectedItem = targetArea;
     }
-    // 先初始化专业类别(在设置 selectedExamType 之前,避免触发 watch)
-    if (res.data.examType === 'VHS' && form.value.location) {
-      await loadExamMajorList(form.value.location, res.data.examType);
-      // 确保类型一致,将 examMajor 转换为 Number 类型
-      if (res.data.examMajor != null) {
-        selectedExamMajor.value = Number(res.data.examMajor);
-      } else {
-        selectedExamMajor.value = null;
-      }
+    // 初始化时设置 examMajor 值(不调用接口,由 watch 监听变化后调用)
+    // 确保类型一致,将 examMajor 转换为 Number 类型
+    if (res.data.examMajor != null) {
+      selectedExamMajor.value = Number(res.data.examMajor);
     } else {
       selectedExamMajor.value = null;
     }
-    // 然后设置考生类型(这会触发 watch,但此时数据已经加载完成
+    // 设置考生类型和省份(这会触发 watch,当 location 和 examType 都有值时会调用接口)
     selectedExamType.value = res.data.examType;
     selectedCampus.value = res.data.campusSchoolId;
     selectedCampusClass.value = res.data.campusClassId;