From a74cdcc85004862a844b5a3e8dec600acd52a251 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=B3?= Date: Mon, 8 Dec 2025 20:22:40 +0800 Subject: [PATCH] Fix career map missing info redirect flow --- packageA/pages/jobExpect/jobExpect.vue | 15 +++++++-- packageA/pages/personalInfo/personalInfo.vue | 14 ++++++-- pages/service/career-planning.vue | 34 ++++++++++++++++++-- 3 files changed, 57 insertions(+), 6 deletions(-) diff --git a/packageA/pages/jobExpect/jobExpect.vue b/packageA/pages/jobExpect/jobExpect.vue index 6ec0376..7542a16 100644 --- a/packageA/pages/jobExpect/jobExpect.vue +++ b/packageA/pages/jobExpect/jobExpect.vue @@ -81,10 +81,16 @@ const fromValue = reactive({ area: '', jobTitleId: [], }); -onLoad(async () => { +const needSkill = ref(false); + +onLoad(async (options) => { // 初始化字典数据 await getDictData(); initLoad(); + // 检查是否需要继续跳转到技能页面 + if (options && options.needSkill === 'true') { + needSkill.value = true; + } }); const confirm = () => { if (!fromValue.jobTitleId) { @@ -94,7 +100,12 @@ const confirm = () => { $api.msg('完成'); state.disbleDate = true; getUserResume().then(() => { - navBack(); + // 如果需要继续跳转到技能页面,则跳转到个人信息页面(携带 needSkill 标记,便于返回两级) + if (needSkill.value) { + navTo('/packageA/pages/personalInfo/personalInfo?needSkill=true'); + } else { + navBack(); + } }); }); }; diff --git a/packageA/pages/personalInfo/personalInfo.vue b/packageA/pages/personalInfo/personalInfo.vue index 10fe842..e67daa0 100644 --- a/packageA/pages/personalInfo/personalInfo.vue +++ b/packageA/pages/personalInfo/personalInfo.vue @@ -150,6 +150,8 @@ const openSelectPopup = (config) => { }; const percent = ref('0%'); +// 当从“先职位后技能”链路进入时,提交后需直接返回职业规划页 +const needGoBackTwoStep = ref(false); const state = reactive({ educationText: '', politicalAffiliationText: '', @@ -168,7 +170,10 @@ const fromValue = reactive({ // 移除重复的onLoad定义,已在上方实现 // 在onLoad中初始化数据,确保页面加载时就能获取技能信息 -onLoad(() => { +onLoad((options = {}) => { + if (options.needSkill === 'true') { + needGoBackTwoStep.value = true; + } // 初始化页面数据 initLoad(); }); @@ -369,7 +374,12 @@ const confirm = () => { $api.createRequest('/app/user/resume', params, 'post').then((resData) => { $api.msg('完成'); getUserResume().then(() => { - navBack(); + // 如果从“缺职位+技能”链路进入,回退两层直接返回职业规划页 + if (needGoBackTwoStep.value) { + navBack({ delta: 2 }); + } else { + navBack(); + } }); }); }; diff --git a/pages/service/career-planning.vue b/pages/service/career-planning.vue index f9bcdb3..c3abf8d 100644 --- a/pages/service/career-planning.vue +++ b/pages/service/career-planning.vue @@ -143,6 +143,11 @@ function openRemindPopup() { // 检查用户是否完善了个人信息(调用接口获取) let hasCheckedRemindInfo = false; +// 保存缺失信息的标识 +const missingInfo = ref({ + hasJobInfo: false, + hasSkills: false +}); async function getRemindInfo() { if (hasCheckedRemindInfo) { @@ -186,6 +191,10 @@ async function getRemindInfo() { return skillName && skillName.trim() !== ''; }); + // 保存缺失信息标识(只保存职位信息和技能标签,身份证信息跳转到个人信息页面) + missingInfo.value.hasJobInfo = hasJobInfo; + missingInfo.value.hasSkills = hasSkills; + // 判断信息是否完整(idCard、职位信息、技能标签都必须有) const isComplete = hasIdCard && hasJobInfo && hasSkills; @@ -250,6 +259,10 @@ async function getRemindInfo() { return skillName && skillName.trim() !== ''; }); + // 保存缺失信息标识 + missingInfo.value.hasJobInfo = hasJobInfo; + missingInfo.value.hasSkills = hasSkills; + // 判断信息是否完整(idCard、职位信息、技能标签都必须有) const isComplete = hasIdCard && hasJobInfo && hasSkills; @@ -299,8 +312,25 @@ function handleCancel() { async function handleConfirm() { remindPopup.value?.close(); - // 跳转到完善信息页面 - navTo('/packageA/pages/personalInfo/personalInfo'); + const { hasJobInfo, hasSkills } = missingInfo.value; + + // 如果同时缺少职位信息和技能标签:先跳转到职位信息页面,并传递参数表示完成后需要继续跳转到技能页面 + if (!hasJobInfo && !hasSkills) { + // 跳转到职位信息页面,传递参数表示完成后需要继续跳转到技能页面 + navTo('/packageA/pages/jobExpect/jobExpect?needSkill=true'); + } + // 如果只缺少技能标签:直接跳转到技能页面(个人信息页面的技能部分) + else if (!hasSkills) { + navTo('/packageA/pages/personalInfo/personalInfo'); + } + // 如果只缺少职位信息:直接跳转到职位信息页面 + else if (!hasJobInfo) { + navTo('/packageA/pages/jobExpect/jobExpect'); + } + // 如果只缺少身份证信息:跳转到个人信息页面 + else { + navTo('/packageA/pages/personalInfo/personalInfo'); + } } // 切换tab