简历详情样式微调

This commit is contained in:
2026-07-09 16:04:25 +08:00
parent 72339f332d
commit ec6ba7ee35
6 changed files with 100 additions and 14 deletions
+15 -1
View File
@@ -62,6 +62,8 @@
/>
</div>
<div class="h1 border-EDF9FA-bottom-2 mrl14 mt14"></div>
<!-- 教育经历 -->
<div ref="educationRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -97,6 +99,8 @@
</div>
</div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 工作经历 -->
<div ref="workRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -131,7 +135,9 @@
</div>
</div>
<!-- 实习经历 -->
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 实习经历 -->
<div ref="internshipRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover">
<h3 class="profile-page-content__card-title">实习经历</h3>
@@ -165,6 +171,8 @@
</div>
</div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 项目经历 -->
<div ref="projectRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -199,6 +207,8 @@
</div>
</div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 竞赛 -->
<div ref="competitionRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -232,6 +242,8 @@
</div>
</div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 技能 -->
<div ref="skillsRef" class="profile-page-content__card" :class="{ 'profile-page-content__card-hover': editingModule !== 'skills' }">
<template v-if="editingModule !== 'skills'">
@@ -255,6 +267,8 @@
/>
</div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 证书 -->
<div ref="certificateRef" class="profile-page-content__card" :class="{ 'profile-page-content__card-hover': editingModule !== 'certificate' }">
<template v-if="editingModule !== 'certificate'">
+58 -6
View File
@@ -137,6 +137,17 @@
</Teleport>
<!-- 全屏加载遮罩 -->
<FullscreenLoading :visible="fullLoading" :text="fullLoadingText" title="Nova 正在帮您努力处理~" />
<!-- AI润色步骤进度遮罩 -->
<StepProgressOverlay
v-if="showPolishProgress"
:title="polishProgressTitle"
:subtitle="polishProgressSubtitle"
:steps="polishProgressSteps"
:durations="polishProgressDurations"
:done="polishProgressDone"
@finished="handlePolishProgressFinished"
@close="handlePolishProgressClose"
/>
</template>
<script setup lang="ts">
@@ -144,6 +155,7 @@ import { ref, watch, nextTick } from 'vue'
import type { DiagnosisIssue, DescriptionParagraph } from '@/api/resume'
import { polishDiagnosisIssue, resolveDiagnosisIssue } from '@/api/resume'
import FullscreenLoading from '@/components/FullscreenLoading.vue'
import StepProgressOverlay from '@/components/StepProgressOverlay.vue'
// ==================== Props ====================
@@ -417,24 +429,64 @@ async function handleAiPolishRecord(record: RecordState) {
return
}
fullLoadingText.value = 'AI 正在润色中…'
fullLoading.value = true
// 显示步骤进度遮罩
showPolishProgress.value = true
polishProgressDone.value = false
pendingPolishRecord.value = record
try {
const res = await polishDiagnosisIssue(content)
if (res.code === 0 && res.data?.content) {
record.polishText = res.data.content.join('\n')
ElMessage.success('AI润色完成')
// 缓存结果,等进度走完后填充
pendingPolishResult.value = res.data.content.join('\n')
polishProgressDone.value = true
} else {
showPolishProgress.value = false
ElMessage.error(res.msg || '润色失败,请稍后重试')
}
} catch {
showPolishProgress.value = false
ElMessage.error('请求失败,请稍后重试')
} finally {
fullLoading.value = false
}
}
// ==================== AI润色步骤进度遮罩 ====================
/** 润色步骤进度遮罩是否显示 */
const showPolishProgress = ref(false)
/** 润色接口是否已完成 */
const polishProgressDone = ref(false)
/** 大标题 */
const polishProgressTitle = 'Nova正在润色中...'
/** 副标题 */
const polishProgressSubtitle = '正在根据岗位要求润色简历,突出你的核心优势'
/** 4个步骤名称 */
const polishProgressSteps = ['提取核心关键词...', '寻找符合的语义...', '排版文字格式...', '最终生成中...']
/** 每步时长1400毫秒 */
const polishProgressDurations = [1400, 1400, 1400, 1400]
/** 缓存当前润色的记录 */
const pendingPolishRecord = ref<RecordState | null>(null)
/** 缓存润色结果 */
const pendingPolishResult = ref('')
/** 润色进度走完后填充结果 */
function handlePolishProgressFinished() {
showPolishProgress.value = false
if (pendingPolishRecord.value && pendingPolishResult.value) {
pendingPolishRecord.value.polishText = pendingPolishResult.value
ElMessage.success('AI润色完成')
}
pendingPolishRecord.value = null
pendingPolishResult.value = ''
}
/** 关闭润色进度遮罩 */
function handlePolishProgressClose() {
showPolishProgress.value = false
pendingPolishRecord.value = null
pendingPolishResult.value = ''
}
/** 一键使用AI润色结果 — 所有模块强制使用 AI 润色结果更新 */
function handleUseAllAi() {
const items: FixAllSubmitItem[] = []