diff --git a/src/pages/simulate.vue b/src/pages/simulate.vue index fc7f661..3dc3f1b 100644 --- a/src/pages/simulate.vue +++ b/src/pages/simulate.vue @@ -20,11 +20,13 @@ interface MajorDetail { code: string name: string prob: number + batch: string score: number // 最低分 diff: number // 线差 plan: number // 计划数 req: string // 选科 tuition: string + rulesEnrollProbability: string //录取方式 } // --- 状态数据 --- @@ -256,42 +258,59 @@ async function openMajorModal(school: MajorItem) { selectedMajorCodes.value = [] showSaveConfirm.value = false - // 模拟获取该学校其他专业(更丰富的数据) - // TODO: 这里应该调用另外一个 API 获取详情 - setTimeout(() => { - // Mock data for now - modalMajors.value = [ - { - code: currentSchool.value!.majorCode, - name: currentSchool.value!.majorName, - prob: currentSchool.value!.enrollProbability, - score: currentSchool.value!.studentScore, + try { + const res = await getUserMajorList({ + schoolCode: school.schoolCode, + batch: currentBatchTab.value, + page: 1, + size: 100 // 获取该校所有推荐专业 + }) + + if (res && res.list && res.list.items) { + modalMajors.value = res.list.items.map(m => ({ + code: m.majorCode, + name: m.majorName, + prob: m.enrollProbability, + score: m.studentScore, + batch: m.batch != "高职高专" ? "本科": "高职高专", + rulesEnrollProbability: m.rulesEnrollProbability, diff: 0, - plan: currentSchool.value!.planNum, - req: currentSchool.value!.mainSubjects, - tuition: currentSchool.value!.tuition, - }, - ] + plan: m.planNum, + req: m.mainSubjects, + tuition: m.tuition, + enrollmentCode: m.enrollmentCode // 保持后端原始字段以便拼接 + })) + } + } catch (error) { + console.error('获取学校专业列表失败:', error) + } finally { modalLoading.value = false - }, 400) + } } // 2. 选择/取消专业 (点击行内按钮) -function toggleMajor(major: MajorDetail) { - const index = selectedMajorCodes.value.indexOf(major.code) +function toggleMajor(major: any) { + if (!currentSchool.value) return + + // 拼接格式: schoolCode_majorCode_enrollmentCode + const fullCode = `${currentSchool.value.schoolCode}_${major.code}_${major.enrollmentCode || currentSchool.value.enrollmentCode}` + const index = selectedMajorCodes.value.indexOf(fullCode) + if (index > -1) { // 已存在,移除 selectedMajorCodes.value.splice(index, 1) } else { // 不存在,加入 - selectedMajorCodes.value.push(major.code) + selectedMajorCodes.value.push(fullCode) } } // 获取按钮状态显示文本 -function getVolunteerBtnText(code: string) { - const index = selectedMajorCodes.value.indexOf(code) +function getVolunteerBtnText(major: any) { + if (!currentSchool.value) return '加入志愿单' + const fullCode = `${currentSchool.value.schoolCode}_${major.code}_${major.enrollmentCode || currentSchool.value.enrollmentCode}` + const index = selectedMajorCodes.value.indexOf(fullCode) if (index > -1) { return `志愿 ${index + 1}` } @@ -1209,10 +1228,10 @@ function deletePlan(planId: string) { 录取概率