简历详情样式微调

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
+6 -1
View File
@@ -620,7 +620,12 @@ body:not(#_) {
.border-red1{ .border-red1{
border: 0.01rem solid #C86667; border: 0.01rem solid #C86667;
} }
.border-EDF9FA-bottom-2{
border: 0.02rem solid #EDF9FA;
}
.border-F0F0F0-bottom-1{
border: 0.01rem solid #F0F0F0;
}
//圆角 //圆角
.border-ra0{border-radius: 0rem;} .border-ra0{border-radius: 0rem;}
.border-ra1{border-radius: 0.01rem;} .border-ra1{border-radius: 0.01rem;}
@@ -5,7 +5,7 @@
font-size: 0.14rem; font-size: 0.14rem;
position: fixed; position: fixed;
inset: 0; inset: 0;
z-index: 2000; z-index: 9999;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
+2 -3
View File
@@ -116,8 +116,7 @@
justify-content: space-between; justify-content: space-between;
background: $bg-white; background: $bg-white;
border-radius: 0.12rem; border-radius: 0.12rem;
padding: 0.18rem 0.24rem; padding: 0.28rem 0.32rem;
padding-top: 0.3rem;
margin-bottom: 0.16rem; margin-bottom: 0.16rem;
/* B/C/D 评级渐变背景 */ /* B/C/D 评级渐变背景 */
@@ -305,7 +304,7 @@
&__card { &__card {
background: $bg-white; background: $bg-white;
border-radius: 0.1rem; border-radius: 0.1rem;
margin: 0.4rem 0.18rem; margin: 0.24rem 0.18rem;
&:hover .resume-detail__section-header { &:hover .resume-detail__section-header {
background: #F0FAFA; background: #F0FAFA;
+14
View File
@@ -62,6 +62,8 @@
/> />
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl14 mt14"></div>
<!-- 教育经历 --> <!-- 教育经历 -->
<div ref="educationRef" class="profile-page-content__card"> <div ref="educationRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover"> <div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -97,6 +99,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 工作经历 --> <!-- 工作经历 -->
<div ref="workRef" class="profile-page-content__card"> <div ref="workRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover"> <div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -131,6 +135,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 实习经历 --> <!-- 实习经历 -->
<div ref="internshipRef" class="profile-page-content__card"> <div ref="internshipRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover"> <div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -165,6 +171,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 项目经历 --> <!-- 项目经历 -->
<div ref="projectRef" class="profile-page-content__card"> <div ref="projectRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover"> <div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -199,6 +207,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl14"></div>
<!-- 竞赛 --> <!-- 竞赛 -->
<div ref="competitionRef" class="profile-page-content__card"> <div ref="competitionRef" class="profile-page-content__card">
<div class="profile-page-content__card-header profile-page-content__header-hover"> <div class="profile-page-content__card-header profile-page-content__header-hover">
@@ -232,6 +242,8 @@
</div> </div>
</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' }"> <div ref="skillsRef" class="profile-page-content__card" :class="{ 'profile-page-content__card-hover': editingModule !== 'skills' }">
<template v-if="editingModule !== 'skills'"> <template v-if="editingModule !== 'skills'">
@@ -255,6 +267,8 @@
/> />
</div> </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' }"> <div ref="certificateRef" class="profile-page-content__card" :class="{ 'profile-page-content__card-hover': editingModule !== 'certificate' }">
<template v-if="editingModule !== 'certificate'"> <template v-if="editingModule !== 'certificate'">
+58 -6
View File
@@ -137,6 +137,17 @@
</Teleport> </Teleport>
<!-- 全屏加载遮罩 --> <!-- 全屏加载遮罩 -->
<FullscreenLoading :visible="fullLoading" :text="fullLoadingText" title="Nova 正在帮您努力处理~" /> <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> </template>
<script setup lang="ts"> <script setup lang="ts">
@@ -144,6 +155,7 @@ import { ref, watch, nextTick } from 'vue'
import type { DiagnosisIssue, DescriptionParagraph } from '@/api/resume' import type { DiagnosisIssue, DescriptionParagraph } from '@/api/resume'
import { polishDiagnosisIssue, resolveDiagnosisIssue } from '@/api/resume' import { polishDiagnosisIssue, resolveDiagnosisIssue } from '@/api/resume'
import FullscreenLoading from '@/components/FullscreenLoading.vue' import FullscreenLoading from '@/components/FullscreenLoading.vue'
import StepProgressOverlay from '@/components/StepProgressOverlay.vue'
// ==================== Props ==================== // ==================== Props ====================
@@ -417,24 +429,64 @@ async function handleAiPolishRecord(record: RecordState) {
return return
} }
fullLoadingText.value = 'AI 正在润色中…' // 显示步骤进度遮罩
fullLoading.value = true showPolishProgress.value = true
polishProgressDone.value = false
pendingPolishRecord.value = record
try { try {
const res = await polishDiagnosisIssue(content) const res = await polishDiagnosisIssue(content)
if (res.code === 0 && res.data?.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 { } else {
showPolishProgress.value = false
ElMessage.error(res.msg || '润色失败,请稍后重试') ElMessage.error(res.msg || '润色失败,请稍后重试')
} }
} catch { } catch {
showPolishProgress.value = false
ElMessage.error('请求失败,请稍后重试') 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 润色结果更新 */ /** 一键使用AI润色结果 — 所有模块强制使用 AI 润色结果更新 */
function handleUseAllAi() { function handleUseAllAi() {
const items: FixAllSubmitItem[] = [] const items: FixAllSubmitItem[] = []
+18 -2
View File
@@ -84,7 +84,7 @@
<div class="resume-detail__fixed-top"> <div class="resume-detail__fixed-top">
<!-- 简历评分区域 --> <!-- 简历评分区域 -->
<div class="resume-detail__score-bar" :class="scoreBarClass"> <div class="resume-detail__score-bar border-F0F0F0-bottom-1 border-ra0" :class="scoreBarClass">
<div class="resume-detail__score-left"> <div class="resume-detail__score-left">
<!-- 星星+底座组合 --> <!-- 星星+底座组合 -->
<div class="resume-detail__star-wrapper"> <div class="resume-detail__star-wrapper">
@@ -237,8 +237,10 @@
/> />
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 个人概述 --> <!-- 个人概述 -->
<div ref="resumeSectionSummaryRef" class="resume-detail__card" :class="{ 'resume-detail__card-hover': editModule !== 'summary' || !showEditDrawer }"> <div ref="resumeSectionSummaryRef" class="resume-detail__card mt14" :class="{ 'resume-detail__card-hover': editModule !== 'summary' || !showEditDrawer }">
<!-- 展示模式 --> <!-- 展示模式 -->
<template v-if="editModule !== 'summary' || !showEditDrawer"> <template v-if="editModule !== 'summary' || !showEditDrawer">
<div class="resume-detail__section-header pl0"> <div class="resume-detail__section-header pl0">
@@ -270,6 +272,8 @@
/> />
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 教育背景经历 --> <!-- 教育背景经历 -->
<div ref="resumeSectionEducationRef" class="resume-detail__card"> <div ref="resumeSectionEducationRef" class="resume-detail__card">
<div class="resume-detail__section-header"> <div class="resume-detail__section-header">
@@ -328,6 +332,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 工作经历 --> <!-- 工作经历 -->
<div ref="resumeSectionWorkRef" class="resume-detail__card"> <div ref="resumeSectionWorkRef" class="resume-detail__card">
<div class="resume-detail__section-header"> <div class="resume-detail__section-header">
@@ -367,6 +373,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 实习经历 --> <!-- 实习经历 -->
<div ref="resumeSectionInternshipRef" class="resume-detail__card"> <div ref="resumeSectionInternshipRef" class="resume-detail__card">
<div class="resume-detail__section-header"> <div class="resume-detail__section-header">
@@ -405,6 +413,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 项目经历 --> <!-- 项目经历 -->
<div ref="resumeSectionProjectRef" class="resume-detail__card"> <div ref="resumeSectionProjectRef" class="resume-detail__card">
<div class="resume-detail__section-header"> <div class="resume-detail__section-header">
@@ -443,6 +453,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 竞赛经历 --> <!-- 竞赛经历 -->
<div ref="resumeSectionCompetitionRef" class="resume-detail__card"> <div ref="resumeSectionCompetitionRef" class="resume-detail__card">
<div class="resume-detail__section-header"> <div class="resume-detail__section-header">
@@ -481,6 +493,8 @@
</div> </div>
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 技能 --> <!-- 技能 -->
<div ref="resumeSectionSkillsRef" class="resume-detail__card" :class="{ 'resume-detail__card-hover': editModule !== 'skills' || !showEditDrawer }"> <div ref="resumeSectionSkillsRef" class="resume-detail__card" :class="{ 'resume-detail__card-hover': editModule !== 'skills' || !showEditDrawer }">
<template v-if="editModule !== 'skills' || !showEditDrawer"> <template v-if="editModule !== 'skills' || !showEditDrawer">
@@ -510,6 +524,8 @@
/> />
</div> </div>
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
<!-- 证书 --> <!-- 证书 -->
<div ref="resumeSectionCertificateRef" class="resume-detail__card" :class="{ 'resume-detail__card-hover': editModule !== 'certificate' || !showEditDrawer }"> <div ref="resumeSectionCertificateRef" class="resume-detail__card" :class="{ 'resume-detail__card-hover': editModule !== 'certificate' || !showEditDrawer }">
<template v-if="editModule !== 'certificate' || !showEditDrawer"> <template v-if="editModule !== 'certificate' || !showEditDrawer">