个人资料,简历

This commit is contained in:
2026-07-08 18:58:27 +08:00
parent 851310a901
commit c94a96d14e
19 changed files with 1142 additions and 183 deletions
+49 -5
View File
@@ -171,6 +171,18 @@
<MemberDialog v-model="showMemberDialog" />
<!-- 全屏加载遮罩 -->
<FullscreenLoading :visible="fullLoading" :text="fullLoadingText" title="Nova 正在帮您努力处理~" />
<!-- 岗位简历生成步骤进度遮罩 -->
<StepProgressOverlay
v-if="showStepProgress"
:title="stepProgressTitle"
:subtitle="stepProgressSubtitle"
:steps="stepProgressSteps"
:durations="stepProgressDurations"
:done="stepProgressDone"
@finished="handleStepProgressFinished"
@close="handleStepProgressClose"
/>
</div>
</template>
@@ -186,6 +198,7 @@ import JobResumeCustomDialog from '@/components/JobResumeCustomDialog.vue'
import MemberAccessDialog from '@/components/MemberAccessDialog.vue'
import FullscreenLoading from '@/components/FullscreenLoading.vue'
import MemberDialog from '@/components/MemberDialog.vue'
import StepProgressOverlay from '@/components/StepProgressOverlay.vue'
import { fetchJobDetail, toggleJobFavorite, removeJobFavorite, fetchSkillGap } from '@/api/jobs'
import { fetchMemberStatus } from '@/api/member'
import type { JobDetailData, SkillGapData } from '@/api/jobs'
@@ -475,23 +488,54 @@ async function handleGenerateResume() {
// 接口异常时不阻断,继续执行
}
fullLoadingText.value = '正在分析岗位匹配度...'
fullLoading.value = true
// 显示步骤进度遮罩
showStepProgress.value = true
stepProgressDone.value = false
try {
const res = await fetchSkillGap(jobId)
if (res.code === 0 && res.data) {
skillGapData.value = res.data
// 通知组件接口已完成
stepProgressDone.value = true
} else {
// 接口返回异常,关闭遮罩提示错误
showStepProgress.value = false
ElMessage.error('分析失败,请稍后重试')
}
} catch (e) {
console.error('技能差距分析失败', e)
showStepProgress.value = false
ElMessage.error('分析失败,请稍后重试')
return
} finally {
fullLoading.value = false
}
}
// ==================== 步骤进度遮罩相关 ====================
/** 步骤进度遮罩是否显示 */
const showStepProgress = ref(false)
/** 接口是否已完成 */
const stepProgressDone = ref(false)
/** 步骤进度大标题 */
const stepProgressTitle = '分析简历中,请耐心等待'
/** 步骤进度副标题 */
const stepProgressSubtitle = '正在根据岗位所需技能、简历详情发现问题'
/** 步骤名称 */
const stepProgressSteps = ['岗位技能解析...', '岗位职责解析...', '简历经历技能匹配...', '优化建议最终生成...']
/** 每步模拟时长(毫秒) */
const stepProgressDurations = [2000, 2000, 2000, 2000]
/** 步骤进度走完后打开简历定制弹窗 */
function handleStepProgressFinished() {
showStepProgress.value = false
showResumeCustomDialog.value = true
}
/** 关闭步骤进度遮罩 */
function handleStepProgressClose() {
showStepProgress.value = false
}
/** 不优化直接投递 */
function handleSkipToApply() {
if (job.sourceUrl) {