简历详情样式微调
This commit is contained in:
@@ -620,7 +620,12 @@ body:not(#_) {
|
||||
.border-red1{
|
||||
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-ra1{border-radius: 0.01rem;}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
font-size: 0.14rem;
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 2000;
|
||||
z-index: 9999;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
@@ -116,8 +116,7 @@
|
||||
justify-content: space-between;
|
||||
background: $bg-white;
|
||||
border-radius: 0.12rem;
|
||||
padding: 0.18rem 0.24rem;
|
||||
padding-top: 0.3rem;
|
||||
padding: 0.28rem 0.32rem;
|
||||
margin-bottom: 0.16rem;
|
||||
|
||||
/* B/C/D 评级渐变背景 */
|
||||
@@ -305,7 +304,7 @@
|
||||
&__card {
|
||||
background: $bg-white;
|
||||
border-radius: 0.1rem;
|
||||
margin: 0.4rem 0.18rem;
|
||||
margin: 0.24rem 0.18rem;
|
||||
|
||||
&:hover .resume-detail__section-header {
|
||||
background: #F0FAFA;
|
||||
|
||||
@@ -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,6 +135,8 @@
|
||||
</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">
|
||||
@@ -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'">
|
||||
|
||||
@@ -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[] = []
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
<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__star-wrapper">
|
||||
@@ -237,8 +237,10 @@
|
||||
/>
|
||||
</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">
|
||||
<div class="resume-detail__section-header pl0">
|
||||
@@ -270,6 +272,8 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
|
||||
|
||||
<!-- 教育背景经历 -->
|
||||
<div ref="resumeSectionEducationRef" class="resume-detail__card">
|
||||
<div class="resume-detail__section-header">
|
||||
@@ -328,6 +332,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
|
||||
|
||||
<!-- 工作经历 -->
|
||||
<div ref="resumeSectionWorkRef" class="resume-detail__card">
|
||||
<div class="resume-detail__section-header">
|
||||
@@ -367,6 +373,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
|
||||
|
||||
<!-- 实习经历 -->
|
||||
<div ref="resumeSectionInternshipRef" class="resume-detail__card">
|
||||
<div class="resume-detail__section-header">
|
||||
@@ -405,6 +413,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
|
||||
|
||||
<!-- 项目经历 -->
|
||||
<div ref="resumeSectionProjectRef" class="resume-detail__card">
|
||||
<div class="resume-detail__section-header">
|
||||
@@ -443,6 +453,8 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="h1 border-EDF9FA-bottom-2 mrl32"></div>
|
||||
|
||||
<!-- 竞赛经历 -->
|
||||
<div ref="resumeSectionCompetitionRef" class="resume-detail__card">
|
||||
<div class="resume-detail__section-header">
|
||||
@@ -481,6 +493,8 @@
|
||||
</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 }">
|
||||
<template v-if="editModule !== 'skills' || !showEditDrawer">
|
||||
@@ -510,6 +524,8 @@
|
||||
/>
|
||||
</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 }">
|
||||
<template v-if="editModule !== 'certificate' || !showEditDrawer">
|
||||
|
||||
Reference in New Issue
Block a user