|
|
@@ -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;
|