diff --git a/components.d.ts b/components.d.ts index 558fe2b..d835eff 100644 --- a/components.d.ts +++ b/components.d.ts @@ -57,7 +57,9 @@ declare module 'vue' { RegionSelector: typeof import('./src/components/tools/RegionSelector.vue')['default'] ResumeAnalysisReportDrawer: typeof import('./src/components/ResumeAnalysisReportDrawer.vue')['default'] ResumeEditNameDialog: typeof import('./src/components/ResumeEditNameDialog.vue')['default'] + ResumeExpInlineEdit: typeof import('./src/components/ResumeExpInlineEdit.vue')['default'] ResumeExportDialog: typeof import('./src/components/ResumeExportDialog.vue')['default'] + ResumeIssueFixAllDrawer: typeof import('./src/components/ResumeIssueFixAllDrawer.vue')['default'] ResumeIssueFixDrawer: typeof import('./src/components/ResumeIssueFixDrawer.vue')['default'] ResumeUploadDialog: typeof import('./src/components/ResumeUploadDialog.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/src/api/agent.ts b/src/api/agent.ts index 25418e8..f6ad4eb 100644 --- a/src/api/agent.ts +++ b/src/api/agent.ts @@ -21,6 +21,8 @@ export interface AgentConfig { weeklyTarget?: number /** 投递时自动针对岗位优化简历 0=关闭 1=开启 */ autoOptimizeResume?: number + /** 自动匹配分析 0=关闭 1=开启 */ + autoMatchAnalysis?: number /** 是否愿意接受部门调剂 */ acceptDeptTransfer?: string /** 是否接受地点调剂 */ diff --git a/src/api/jobs.ts b/src/api/jobs.ts index f9d0ceb..808ca31 100644 --- a/src/api/jobs.ts +++ b/src/api/jobs.ts @@ -303,6 +303,8 @@ export interface JobDetailData { salary: string /** 工作类型 0=全职 1=兼职 */ employmentType: number + /** 招聘分类 0=社招 1=校招 2=实习 3=其他 */ + recruitCategory: number /** 学历要求 0=不限 1=大专 2=本科 3=硕士 4=博士 */ education: number /** 最低工作年限 */ diff --git a/src/api/resume.ts b/src/api/resume.ts index 0a22f5c..3717e21 100644 --- a/src/api/resume.ts +++ b/src/api/resume.ts @@ -531,6 +531,16 @@ export function deleteResume(resumeId: string) { }) } +/** + * 设为默认简历 + * POST /resume/setDefault + */ +export function setDefaultResume(resumeId: string) { + return request.post('/resume/setDefault', null, { + params: { resumeId }, + }) +} + // ==================== 简历诊断相关 ==================== /** 诊断报告数据 */ @@ -644,13 +654,12 @@ export interface PolishIssueData { } /** - * 对诊断问题进行 AI 润色(AI 接口) - * POST /resume/diagnose/issue/{issue_id}/polish - * @param issueId 问题 ID - * @param content 用户编辑后的文本段落数组 + * AI 润色简历段落(Python 后端接口) + * POST /resume/polish + * @param content 待润色的简历段落文本数组 */ -export function polishDiagnosisIssue(issueId: string, content: string[]) { - return aiService.post>(`/resume/diagnose/issue/${issueId}/polish`, { content }, { +export function polishDiagnosisIssue(content: string[]) { + return aiService.post>('/resume/polish', { content }, { transformResponse: [(data: string) => { try { const processed = data.replace(/:\s*(\d{16,})/g, ':"$1"') diff --git a/src/assets/images/agent-setting/2-1.png b/src/assets/images/agent-setting/2-1.png new file mode 100644 index 0000000..ec7c263 Binary files /dev/null and b/src/assets/images/agent-setting/2-1.png differ diff --git a/src/assets/images/agent-setting/2-2.png b/src/assets/images/agent-setting/2-2.png new file mode 100644 index 0000000..2ddca1e Binary files /dev/null and b/src/assets/images/agent-setting/2-2.png differ diff --git a/src/assets/images/agent-setting/2-3.png b/src/assets/images/agent-setting/2-3.png new file mode 100644 index 0000000..cca9e7b Binary files /dev/null and b/src/assets/images/agent-setting/2-3.png differ diff --git a/src/assets/images/agent-setting/3-1.png b/src/assets/images/agent-setting/3-1.png new file mode 100644 index 0000000..6243b29 Binary files /dev/null and b/src/assets/images/agent-setting/3-1.png differ diff --git a/src/assets/images/agent-setting/4-1.png b/src/assets/images/agent-setting/4-1.png new file mode 100644 index 0000000..3f79bd0 Binary files /dev/null and b/src/assets/images/agent-setting/4-1.png differ diff --git a/src/assets/styles/components/agent-chat-job-list.scss b/src/assets/styles/components/agent-chat-job-list.scss index 0be9f87..698686a 100644 --- a/src/assets/styles/components/agent-chat-job-list.scss +++ b/src/assets/styles/components/agent-chat-job-list.scss @@ -1,19 +1,26 @@ @use '../variables' as *; -// ==================== Agent会话岗位列表组件样式 ==================== +// ==================== Agent推荐岗位列表组件样式 ==================== .agent-chat-job-list { background: $bg-middle; border-radius: 0.12rem; - padding: 0.2rem; - margin-top: 0.16rem; + padding: 0.24rem; + font-size: 0.14rem; + + // 标题 + &__header { + font-size: 0.18rem; + font-weight: 700; + color: $text-dark; + margin-bottom: 0.06rem; + } // 推荐说明文字 &__summary { font-size: 0.13rem; - color: $text-dark; - font-weight: 500; - margin-bottom: 0.14rem; - line-height: 1.6; + color: $text-middle; + margin-bottom: 0.18rem; + line-height: 1.5; } // 单个岗位项 @@ -23,68 +30,82 @@ justify-content: space-between; background: $bg-white; border-radius: 0.1rem; - padding: 0.14rem 0.16rem; - margin-bottom: 0.08rem; - cursor: pointer; + padding: 0.16rem 0.2rem; + margin-bottom: 0.1rem; &:last-of-type { margin-bottom: 0; } } - // 左侧信息区域 + // 左侧信息区域(可点击) &__info { display: flex; align-items: center; - gap: 0.12rem; + gap: 0.14rem; flex: 1; min-width: 0; + cursor: pointer; } - // 公司 Logo - &__logo { - width: 0.36rem; - height: 0.36rem; - border-radius: 0.06rem; - background: $bg-main; - display: flex; - align-items: center; - justify-content: center; + // 匹配度环形容器 + &__score { + position: relative; + width: 0.48rem; + height: 0.48rem; flex-shrink: 0; - color: $text-middle; - overflow: hidden; + } - img { - width: 100%; - height: 100%; - object-fit: cover; - } + // 环形 SVG + &__ring { + width: 100%; + height: 100%; + } - svg { - width: 0.2rem; - height: 0.2rem; - } + // 匹配度数字 + &__score-text { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + font-size: 0.11rem; + font-weight: 700; + color: $text-dark; } // 岗位详情 &__detail { min-width: 0; + flex: 1; } - // 公司名称 - &__company { - font-size: 0.14rem; + // 岗位标题行(岗位名 + 公司名) + &__title-row { + display: flex; + align-items: center; + gap: 0.08rem; + margin-bottom: 0.04rem; + } + + // 岗位名称 + &__title { + font-size: 0.15rem; font-weight: 600; color: $text-dark; line-height: 1.4; } - // 岗位名称 - &__title { - font-size: 0.12rem; + // 公司名前的圆点 + &__company-dot { + font-size: 0.08rem; + color: $text-light; + } + + // 公司名称 + &__company { + font-size: 0.13rem; color: $text-middle; - line-height: 1.4; - margin-bottom: 0.04rem; + white-space: nowrap; } // 标签行 @@ -103,55 +124,109 @@ border-radius: 0.03rem; } - // 匹配度环形容器 - &__score { - position: relative; - width: 0.44rem; - height: 0.44rem; + // 右侧操作按钮区域 + &__actions { + display: flex; + align-items: center; + gap: 0.14rem; flex-shrink: 0; - margin-left: 0.12rem; + margin-left: 0.16rem; } - // 环形 SVG - &__ring { - width: 100%; - height: 100%; + // 不再推荐按钮 + &__dismiss-btn { + font-size: 0.12rem; + color: $text-light; + cursor: pointer; + white-space: nowrap; + transition: color 0.2s ease; + + &:hover { + color: $text-middle; + } } - // 匹配度数字 - &__score-text { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - font-size: 0.11rem; - font-weight: 600; - color: $text-dark; + // 加入投递按钮 + &__add-btn { + height: 0.32rem; + padding: 0 0.16rem; + background: $accent; + color: $bg-white; + border: none; + border-radius: 0.16rem; + font-size: 0.12rem; + font-weight: 500; + cursor: pointer; + white-space: nowrap; + transition: all 0.2s ease; + line-height: 0.32rem; + + &:hover { + opacity: 0.85; + } + + &:disabled { + cursor: not-allowed; + opacity: 0.7; + } + + // 已加入状态 + &--added { + background: $bg-main; + color: $text-middle; + border: 1px solid $border-color; + } } // 底部按钮区域 &__footer { display: flex; justify-content: center; - margin-top: 0.14rem; + gap: 0.16rem; + margin-top: 0.2rem; } - // 查看全部岗位按钮 - &__view-all-btn { - height: 0.38rem; - padding: 0 0.32rem; - background: $btn-dark; - color: $bg-white; - border: none; - border-radius: 0.19rem; - font-size: 0.13rem; + // 换一批按钮 + &__refresh-btn { + height: 0.4rem; + padding: 0 0.4rem; + background: $bg-white; + color: $text-dark; + border: 1px solid $border-color; + border-radius: 0.2rem; + font-size: 0.14rem; font-weight: 500; cursor: pointer; - transition: all 0.25s ease; - line-height: 0.38rem; + transition: all 0.2s ease; + line-height: 0.4rem; &:hover { - background: $btn-dark-hover; + border-color: $accent; + color: $accent; + } + + &:disabled { + cursor: not-allowed; + opacity: 0.6; + } + } + + // 全部添加按钮 + &__add-all-btn { + height: 0.4rem; + padding: 0 0.4rem; + background: $accent; + color: $bg-white; + border: none; + border-radius: 0.2rem; + font-size: 0.14rem; + font-weight: 500; + cursor: pointer; + transition: all 0.2s ease; + line-height: 0.4rem; + + &:hover { + opacity: 0.85; } &:active { diff --git a/src/assets/styles/components/agent-setting-panel.scss b/src/assets/styles/components/agent-setting-panel.scss index a23694f..272a323 100644 --- a/src/assets/styles/components/agent-setting-panel.scss +++ b/src/assets/styles/components/agent-setting-panel.scss @@ -1,326 +1,185 @@ @use '../variables' as *; -/* Agent设置面板样式 */ +// ==================== Agent设置面板样式(精简版) ==================== .agent-setting-panel { - display: flex; - flex-direction: column; height: 100%; - background: $bg-white; - border-radius: 0.2rem; - overflow: hidden; + background: $bg-middle; + border-radius: 0.12rem; + font-size: 0.14rem; + overflow-y: auto; - /* 顶部标题栏 */ - &__header { - display: flex; - align-items: center; - justify-content: space-between; - padding: 0.16rem 0.2rem; - border-bottom: 1px solid $border-color; + // 隐藏滚动条 + scrollbar-width: none; + -ms-overflow-style: none; + &::-webkit-scrollbar { display: none; } + + // 内容区域 + &__body { + padding: 0.28rem 0.24rem; } - &__title { + // 每个设置区块 + &__section { + margin-bottom: 0.28rem; + + &:last-child { + margin-bottom: 0; + } + } + + // 区块头部(标题 + 编辑按钮) + &__section-header { + display: flex; + align-items: center; + gap: 0.1rem; + margin-bottom: 0.12rem; + } + + // 区块标题 + &__section-title { font-size: 0.16rem; - font-weight: 600; + font-weight: 700; color: $text-dark; } - /* 关闭按钮 */ - &__close-btn { - width: 0.28rem; - height: 0.28rem; - border: none; - background: none; + // 编辑按钮 + &__edit-btn { + font-size: 0.13rem; + color: $accent; cursor: pointer; - padding: 0; + white-space: nowrap; + + &:hover { + opacity: 0.7; + } + } + + // 个人资料信息 + &__profile-info { + padding-left: 0.02rem; + } + + &__profile-name { + font-size: 0.18rem; + font-weight: 600; + color: $text-dark; + margin-bottom: 0.04rem; + } + + &__profile-sub { + font-size: 0.13rem; + color: $text-middle; + } + + // 求职目标标签 + &__goal-tags { + display: flex; + flex-wrap: wrap; + gap: 0.08rem; + } + + &__goal-tag { + padding: 0.06rem 0.14rem; + border: 1px solid $accent; + border-radius: 0.16rem; + font-size: 0.13rem; + color: $accent; + background: transparent; + } + + // 空状态文字 + &__empty-text { + font-size: 0.13rem; + color: $text-light; + } + + // 简历选择下拉 + &__resume-select { + width: 100%; + margin-top: 0.06rem; + + .el-input__wrapper { + border-radius: 0.08rem; + } + } + + // 投递偏好项 + &__pref-item { + display: flex; + align-items: flex-start; + justify-content: space-between; + padding: 0.12rem 0; + + & + & { + border-top: none; + } + } + + &__pref-left { + display: flex; + align-items: flex-start; + gap: 0.1rem; + flex: 1; + min-width: 0; + } + + // 勾选图标 + &__pref-check { + width: 0.2rem; + height: 0.2rem; + flex-shrink: 0; + color: $text-light; + margin-top: 0.02rem; svg { width: 100%; height: 100%; } - } - /* 内容区域(可滚动) */ - &__body { - flex: 1; - overflow-y: auto; - padding: 0.2rem; - } - - /* ========== 设置项区块 ========== */ - &__section { - margin-bottom: 0.2rem; - border-bottom: 1px solid $border-color; - padding-bottom: 0.16rem; - - &:last-child { - border-bottom: none; - margin-bottom: 0; + &--active { + color: $text-dark; } } - /* 区块标题行 */ - &__section-header { + // 偏好文字 + &__pref-text { display: flex; - align-items: center; - justify-content: space-between; - cursor: pointer; - padding: 0.04rem 0; + flex-direction: column; + gap: 0.03rem; } - /* 区块标题 */ - &__section-title { - font-size: 0.18rem; - font-weight: 600; + &__pref-label { + font-size: 0.14rem; + font-weight: 500; color: $text-dark; } - /* 编辑按钮区域(文字 + 箭头) */ - &__section-action { - display: flex; - align-items: center; - gap: 0.04rem; - } - - &__section-action-text { + &__pref-desc { font-size: 0.12rem; - color: $accent; - } - - /* 方向箭头 */ - &__arrow { - width: 0.14rem; - height: 0.14rem; - color: $accent; - transition: transform 0.25s ease; - } - - /* 展开时箭头朝上 */ - &__arrow--up { - transform: rotate(180deg); - } - - /* 收起时的简要信息预览 */ - &__section-summary { - margin-top: 0.1rem; - font-size: 0.12rem; - color: $text-middle; - line-height: 1.6; - } - - &__section-empty { color: $text-light; - font-style: italic; + line-height: 1.4; } - /* 展开时的内容区域 */ - &__section-content { - margin-top: 0.14rem; - } - - /* ========== 求职目标标签 ========== */ - &__goal-tags { - display: flex; - flex-wrap: wrap; - gap: 0.08rem; - margin-top: 0.1rem; - } - - &__goal-tag { - display: inline-block; - padding: 0.04rem 0.12rem; - background: $theme-color; - border: 1px solid $accent; - border-radius: 0.14rem; - font-size: 0.12rem; - color: $accent; - } - - /* 编辑图标 */ - &__edit-icon { - width: 0.13rem; - height: 0.13rem; - color: $accent; - } - - /* ========== 浏览器插件 ========== */ + // 浏览器按钮 &__browser-btns { display: flex; - flex-wrap: wrap; gap: 0.1rem; - margin-top: 0.12rem; + margin-top: 0.08rem; } &__browser-btn { - padding: 0.08rem 0.18rem; - background: $bg-white; - border: 1px solid $border-color; - border-radius: 0.08rem; - font-size: 0.13rem; - color: $text-dark; - cursor: pointer; - transition: border-color 0.2s, background 0.2s; - - &:hover { - border-color: $accent; - background: $theme-color; - } - } - - &__download-wrap { - margin-top: 0.16rem; - text-align: center; - } - - &__download-btn { - padding: 0.1rem 0.4rem; - background: $gradient-bg; - color: $bg-white; - border: none; - border-radius: 0.24rem; - font-size: 0.14rem; - cursor: pointer; - transition: opacity 0.2s; - - &:hover { - opacity: 0.9; - } - } - - /* 浏览器安装指引弹窗图片 */ - &__guide-slide { - display: flex; - align-items: center; - justify-content: center; - height: 100%; - - img { - max-width: 100%; - max-height: 100%; - object-fit: contain; - } - } - - /* ========== 求职助手配置表单 ========== */ - &__config-group { - margin-top: 0.16rem; - } - - &__config-label { - font-size: 0.13rem; - font-weight: 600; - color: $text-dark; - margin-bottom: 0.08rem; - } - - &__config-sub { - font-size: 0.12rem; - color: $text-middle; - margin-bottom: 0.06rem; - } - - &__config-options { - display: flex; - flex-wrap: wrap; - gap: 0.08rem; - } - - &__config-btn { - padding: 0.07rem 0.16rem; + padding: 0.08rem 0.2rem; background: $bg-white; border: 1px solid $border-color; border-radius: 0.2rem; - font-size: 0.12rem; + font-size: 0.13rem; color: $text-dark; cursor: pointer; - transition: border-color 0.2s, background 0.2s; + transition: all 0.2s ease; &:hover { border-color: $accent; - } - - &--active { - border-color: $accent; - background: $theme-color; color: $accent; } } - - &__config-selects { - display: flex; - gap: 0.1rem; - } - - &__config-select { - min-width: 1.2rem; - - &--full { - flex: 1; - } - } - - /* 简历选择行 */ - &__resume-row { - display: flex; - align-items: center; - gap: 0.08rem; - } - - &__resume-icon { - width: 0.18rem; - height: 0.18rem; - color: $text-middle; - flex-shrink: 0; - } - - /* 开关行 */ - &__switch-row { - display: flex; - align-items: center; - justify-content: space-between; - gap: 0.1rem; - } - - &__switch-text { - font-size: 0.12rem; - color: $text-dark; - line-height: 1.6; - } - - &__switch-sub { - font-size: 0.11rem; - color: $text-light; - } - - &__tip { - font-size: 0.12rem; - color: $text-light; - cursor: help; - margin-left: 0.04rem; - } - - /* 提交按钮 */ - &__submit-wrap { - margin-top: 0.24rem; - text-align: center; - } - - &__submit-btn { - padding: 0.1rem 0.5rem; - background: $gradient-bg; - color: $bg-white; - border: none; - border-radius: 0.24rem; - font-size: 0.14rem; - cursor: pointer; - transition: opacity 0.2s; - - &:hover { - opacity: 0.9; - } - - &:disabled { - opacity: 0.6; - cursor: not-allowed; - } - } } diff --git a/src/assets/styles/components/member-dialog.scss b/src/assets/styles/components/member-dialog.scss index 9a0bae8..a74fe07 100644 --- a/src/assets/styles/components/member-dialog.scss +++ b/src/assets/styles/components/member-dialog.scss @@ -1180,6 +1180,14 @@ border-radius: 0.08rem; } + /* 微信二维码 iframe */ + &__wechat-qr-iframe { + width: 2.2rem; + height: 2.2rem; + border: none; + border-radius: 0.08rem; + } + &__qrcode-placeholder { width: 100%; height: 100%; diff --git a/src/assets/styles/components/profile-edit-drawer.scss b/src/assets/styles/components/profile-edit-drawer.scss index 25711e9..37d636d 100644 --- a/src/assets/styles/components/profile-edit-drawer.scss +++ b/src/assets/styles/components/profile-edit-drawer.scss @@ -1,95 +1,50 @@ @use '../variables' as *; @use 'sass:color'; -// ==================== 个人资料编辑抽屉 ==================== +// ==================== 个人资料内联编辑组件 ==================== -// 遮罩层 -.profile-drawer-overlay { - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: $overlay-bg; - z-index: 2000; -} - -// 抽屉主体 — 固定在右侧,占满屏幕高度 -// 重置 font-size + line-height 避免 html font-size:100px 导致行高撑大间距 -.profile-drawer { - position: fixed; - top: 0; - right: 0; - width: 6.2rem; - height: var(--app-height, 100vh); - background: $bg-white; - z-index: 2001; - box-shadow: -0.04rem 0 0.2rem rgba(0, 0, 0, 0.1); - display: flex; - flex-direction: column; +// 内联编辑容器 — 直接嵌入页面卡片中 +.profile-edit-inline { font-size: 14px; line-height: 1.5; + background: #F7F7F7; + border-radius: 0.12rem; + padding: 0.1rem; + box-sizing: border-box; - // 顶部栏 - &__header { - display: flex; - align-items: center; - gap: 0.1rem; - padding: 0.16rem 0.2rem; - border-bottom: 1px solid $border-color; - flex-shrink: 0; - } - - &__close-btn { - background: none; - border: none; - padding: 0.04rem; - cursor: pointer; - color: $text-dark; - display: flex; - align-items: center; - border-radius: 0.04rem; - transition: all 0.2s; - - &:hover { - color: $accent; - background: $theme-color; - } - } - - &__close-icon { - width: 0.16rem; - height: 0.16rem; - } - - &__title { - font-size: 0.16rem; - font-weight: 700; - color: $text-dark; - margin: 0; - } - - // 表单内容区 — 中间可滚动 + // 表单内容区 &__body { - flex: 1; - overflow-y: auto; - padding: 0.2rem 0.2rem 3rem; + padding: 0.1rem 0; + } - // 地区选择器下拉面板提升层级,避免被其他元素遮挡 - .region-selector__panel { - z-index: 2100; - } + // 基本信息横排字段容器(姓名、电话、微信、邮箱、城市一行排列,允许换行) + &__fields-row { + display: flex; + flex-wrap: wrap; + gap: 0.16rem; + } + + // 横排中的单个字段项 + &__field-item { + flex: 1; + min-width: 1.6rem; + } + + // 作品集链接整行字段 + &__field-full { + margin-top: 0.16rem; } // 单个字段 &__field { - margin-bottom: 0.18rem; + margin-bottom: 0.02rem; } &__label { - font-size: 0.13rem; + display: block; + font-size: 0.12rem; font-weight: 600; - color: $text-dark; + color: $text-middle; margin-bottom: 0.06rem; } @@ -101,12 +56,12 @@ &__input { width: 100%; box-sizing: border-box; - padding: 0.1rem 0.14rem; + padding: 0.08rem 0.12rem; font-size: 0.13rem; color: $text-dark; - background: $bg-main; - border: 1px solid transparent; - border-radius: 0.06rem; + background: $bg-white; + border: 1px solid $border-color; + border-radius: 0.04rem; outline: none; transition: all 0.2s; @@ -120,21 +75,22 @@ } } - // 多行文本输入框(经历描述等) + // 多行文本输入框 &__textarea { width: 100%; box-sizing: border-box; - padding: 0.1rem 0.14rem; + padding: 0.08rem 0.12rem; font-size: 0.13rem; color: $text-dark; - background: $bg-main; - border: 1px solid transparent; - border-radius: 0.06rem; + background: $bg-white; + border: 1px solid $border-color; + border-radius: 0.04rem; outline: none; transition: all 0.2s; resize: vertical; font-family: inherit; line-height: 1.6; + padding-right: 0.3rem; &::placeholder { color: $text-light; @@ -144,33 +100,26 @@ border-color: $accent; background: $bg-white; } - - // 矮版 textarea — 用于分段描述,右侧留出删除按钮空间 - &--short { - padding-right: 0.36rem; - } } - // ==================== 描述段落编辑 ==================== - - // 单条描述段落容器 — textarea + 右侧删除按钮 + // 描述段落容器 &__desc-item { position: relative; margin-bottom: 0.08rem; } - // 描述段落内的删除按钮(叉号) + // 描述删除按钮 &__desc-remove { position: absolute; - right: 0.18rem; - top: 0.08rem; + right: 0.08rem; + top: 0.06rem; background: none; border: none; - padding: 0.02rem; + padding: 0.02rem 0.04rem; cursor: pointer; color: $text-light; - display: flex; - align-items: center; + font-size: 0.14rem; + line-height: 1; border-radius: 0.03rem; transition: all 0.2s; @@ -179,91 +128,7 @@ } } - &__desc-remove-icon { - width: 0.12rem; - height: 0.12rem; - } - - // 小号新增按钮 — 用于"新增一段描述" - &__add-btn--small { - font-size: 0.11rem; - padding: 0.04rem 0.12rem; - margin-top: 0.04rem; - margin-bottom: 0; - } - - // 空状态占位 - &__empty { - text-align: center; - padding: 0.6rem 0; - } - - &__empty-text { - font-size: 0.14rem; - color: $text-light; - } - - // ==================== 教育经历模块 ==================== - - // 单条教育经历卡片 - &__edu-card { - padding-bottom: 0.2rem; - margin-bottom: 0.2rem; - border-bottom: 1px solid $border-color; - - &:last-of-type { - border-bottom: none; - } - } - - // 教育经历标题栏 - &__edu-header { - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 0.14rem; - } - - // 序号标识 - &__edu-index { - display: flex; - align-items: center; - gap: 0.06rem; - font-size: 0.14rem; - font-weight: 600; - color: $text-dark; - } - - &__edu-index-icon { - width: 0.1rem; - height: 0.1rem; - color: $accent; - } - - // 删除按钮 - &__edu-delete { - background: none; - border: none; - padding: 0.04rem; - cursor: pointer; - color: $text-light; - display: flex; - align-items: center; - border-radius: 0.04rem; - transition: all 0.2s; - - &:hover { - color: $danger; - background: rgba($danger, 0.06); - } - } - - &__edu-delete-icon { - width: 0.15rem; - height: 0.15rem; - } - - // 横排字段容器(学院+专业、学历+GPA、入学+毕业时间) + // 横排字段容器 &__row { display: flex; gap: 0.12rem; @@ -275,60 +140,81 @@ min-width: 0; } - // 下拉选择器包裹(带箭头图标) - &__select-wrap { - position: relative; + // ==================== 经历卡片模块 ==================== + + &__edu-card { + padding-bottom: 0.16rem; + margin-bottom: 0.16rem; + border-bottom: 1px solid $border-color; + + &:last-of-type { + border-bottom: none; + } } - &__select-wrap &__input { - padding-right: 0.3rem; + &__edu-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0.12rem; } - &__select-arrow { - position: absolute; - right: 0.1rem; - top: 50%; - transform: translateY(-50%); - width: 0.12rem; - height: 0.12rem; + &__edu-index { + font-size: 0.13rem; + font-weight: 600; + color: $text-dark; + } + + &__edu-delete { + background: none; + border: none; + padding: 0.04rem 0.08rem; + cursor: pointer; color: $text-light; - pointer-events: none; + font-size: 0.12rem; + border-radius: 0.04rem; + transition: all 0.2s; + + &:hover { + color: $danger; + background: rgba($danger, 0.06); + } } - // 新增教育经历按钮 + // 新增按钮 &__add-btn { text-align: center; background: none; - border: 1px solid $border-color; - border-radius: 0.2rem; - padding: 0.06rem 0.16rem; + border: 1px dashed $border-color; + border-radius: 0.04rem; + padding: 0.04rem 0.12rem; font-size: 0.12rem; - color: $text-dark; + color: $text-middle; cursor: pointer; transition: all 0.2s; - margin-top: 0.04rem; + margin-top: 0.06rem; &:hover { border-color: $accent; color: $accent; } + + &--full { + width: 100%; + margin-top: 0.12rem; + padding: 0.08rem; + } } - &__add-icon { - font-size: 0.14rem; - font-weight: 600; - } - - // ==================== 日期选择器样式覆盖 ==================== - // Element Plus 的 el-date-picker 在 html font-size:100px 下需要用 px 还原 + // ==================== 日期选择器 ==================== &__date-picker { width: 100% !important; .el-input__wrapper { background: $bg-main !important; - border: 1px solid transparent !important; - border-radius: 6px !important; + border: 1px solid $border-color !important; + border-radius: 4px !important; box-shadow: none !important; padding: 4px 12px !important; font-size: 13px !important; @@ -336,7 +222,7 @@ height: auto !important; &:hover { - border-color: $border-color !important; + border-color: $accent !important; } &.is-focus { @@ -368,26 +254,147 @@ } } - // ==================== 技能模块 ==================== + // 日期范围容器(开始-结束横排) + &__date-range { + display: flex; + align-items: center; + gap: 0.04rem; + } + + &__date-sep { + color: $text-light; + font-size: 0.12rem; + } + + // ==================== AI润色功能 ==================== + + // 个人概述标题栏(含AI润色按钮) + &__summary-header { + display: flex; + align-items: center; + gap: 0.12rem; + margin-bottom: 0.08rem; + margin-top: 0.1rem; + } + + // AI润色按钮 + &__ai-polish-btn { + padding: 0.01rem 0.06rem; + font-size: 0.11rem; + background: $accent; + color: $bg-white; + border: 1px solid $accent; + border-radius: 0.04rem; + cursor: pointer; + transition: all 0.2s; + white-space: nowrap; + >span>span{ + color: #FCD34D; + } + + &:hover { + background: $accent; + color: $bg-white; + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } + } + + // AI润色结果区域 + &__ai-result { + margin-top: 0.16rem; + } + + &__ai-result-label { + font-size: 0.12rem; + font-weight: 600; + color: $accent; + margin-bottom: 0.08rem; + } + + &__ai-result-card { + padding: 0.1rem 0.12rem; + background: $theme-color; + border: 1px solid rgba($accent, 0.2); + border-radius: 0.06rem; + } + + &__ai-result-text { + font-size: 0.13rem; + color: $text-dark; + line-height: 1.7; + white-space: pre-wrap; + word-break: break-word; + } + + // AI结果操作按钮组 + &__ai-result-actions { + display: flex; + align-items: center; + gap: 0.12rem; + margin-top: 0.1rem; + } + + // 替换为此内容按钮 + &__ai-replace-btn { + padding: 0.04rem 0.12rem; + font-size: 0.12rem; + color: #fff; + background: $accent; + border: 1px solid $accent; + border-radius: 0.04rem; + cursor: pointer; + transition: all 0.2s; + + &:hover { + background: $accent; + color: $bg-white; + } + } + + // 重新生成按钮 + &__ai-regenerate-btn { + padding: 0.04rem 0.12rem; + font-size: 0.12rem; + color: $accent; + background: none; + border: 1px solid $accent; + border-radius: 0.04rem; + cursor: pointer; + transition: all 0.2s; + + &:hover { + border-color: $accent; + color: $accent; + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + } + } + + // ==================== 技能/证书标签 ==================== - // 技能标签列表容器 &__skills-list { display: flex; flex-wrap: wrap; gap: 0.08rem; - margin-bottom: 0.2rem; + margin-bottom: 0.16rem; min-height: 0.4rem; } - // 单个技能标签 &__skill-tag { display: inline-flex; align-items: center; gap: 0.06rem; - padding: 0.06rem 0.1rem 0.06rem 0.14rem; + padding: 0.04rem 0.1rem 0.04rem 0.12rem; background: $bg-main; - border-radius: 0.16rem; - font-size: 0.13rem; + border-radius: 0.14rem; + font-size: 0.12rem; color: $text-dark; transition: all 0.2s; @@ -396,12 +403,10 @@ } } - // 技能标签文本 &__skill-text { line-height: 1.4; } - // 技能标签删除按钮 &__skill-remove { background: none; border: none; @@ -424,23 +429,23 @@ height: 0.12rem; } - // 底部保存按钮 + // ==================== 底部操作按钮 ==================== + &__footer { - padding: 0.16rem 0.2rem; - border-top: 1px solid $border-color; - text-align: center; - flex-shrink: 0; + display: flex; + align-items: center; + gap: 0.12rem; + padding-top: 0.04rem; } &__save-btn { - width: 2.0rem; - padding: 0.1rem 0; - font-size: 0.14rem; + padding: 0.06rem 0.2rem; + font-size: 0.13rem; font-weight: 600; color: $bg-white; background: $btn-dark; border: none; - border-radius: 0.24rem; + border-radius: 0.2rem; cursor: pointer; transition: all 0.2s; @@ -448,11 +453,26 @@ background: $btn-dark-hover; } } + + &__cancel-btn { + padding: 0.06rem 0.2rem; + font-size: 0.13rem; + font-weight: 600; + color: $accent; + background: transparent; + border: 1px solid $accent; + border-radius: 0.2rem; + cursor: pointer; + transition: all 0.2s; + + &:hover { + background: $theme-color; + } + } } -// ==================== 过渡动画 ==================== +// ==================== 日期选择器弹出面板样式覆盖 ==================== -// 日期选择器弹出面板样式覆盖(teleport 到 body,需在全局作用域) .profile-drawer-date-popper { font-size: 14px !important; line-height: 1.5 !important; @@ -474,25 +494,3 @@ padding: 8px 0 !important; } } - -// 遮罩层淡入淡出 -.profile-drawer-overlay-enter-active, -.profile-drawer-overlay-leave-active { - transition: opacity 0.3s ease; -} - -.profile-drawer-overlay-enter-from, -.profile-drawer-overlay-leave-to { - opacity: 0; -} - -// 抽屉滑入滑出 -.profile-drawer-slide-enter-active, -.profile-drawer-slide-leave-active { - transition: transform 0.3s ease; -} - -.profile-drawer-slide-enter-from, -.profile-drawer-slide-leave-to { - transform: translateX(100%); -} diff --git a/src/assets/styles/components/profile-page-content.scss b/src/assets/styles/components/profile-page-content.scss index b18513b..fe3d59d 100644 --- a/src/assets/styles/components/profile-page-content.scss +++ b/src/assets/styles/components/profile-page-content.scss @@ -5,16 +5,66 @@ min-width: 0; display: flex; flex-direction: column; - gap: 0.16rem; - padding-bottom: 0.4rem; + gap: 0; + padding: 0.2rem 0.24rem 0; + background: $bg-white; + border-radius: 0.12rem; + font-size: 0.14rem; + overflow: hidden; - // 卡片通用 + // Tab 导航栏(固定不动) + &__tabs { + display: flex; + align-items: center; + gap: 0.24rem; + padding-bottom: 0.14rem; + border-bottom: 1px solid $border-color; + flex-shrink: 0; + } + + &__tab-item { + font-size: 0.14rem; + color: $text-middle; + cursor: pointer; + padding-bottom: 0.06rem; + border-bottom: 2px solid transparent; + transition: all 0.2s; + white-space: nowrap; + + &:hover { + color: $text-dark; + } + + &--active { + color: $text-dark; + font-weight: 600; + border-bottom-color: $text-dark; + } + } + + // 内容滚动区域 + &__body { + flex: 1; + overflow-y: auto; + padding-bottom: 0.2rem; + + // 隐藏滚动条 + &::-webkit-scrollbar { + display: none; + } + -ms-overflow-style: none; + scrollbar-width: none; + } + + // 卡片通用(不再有独立背景,只做分隔) &__card { - background: $bg-white; - border-radius: 0.12rem; - padding: 0.2rem 0.24rem; - font-size: 14px; + padding: 0.16rem 0; line-height: 1.5; + border-radius: 0.08rem; + + &:not(:last-child) { + //border-bottom: 1px solid $border-color; + } } &__card-header { @@ -22,6 +72,8 @@ align-items: center; justify-content: space-between; margin-bottom: 0.14rem; + padding: 0.06rem 0.14rem; + border-radius: 0.06rem; } &__card-title { @@ -29,6 +81,21 @@ font-weight: 700; color: $text-dark; margin: 0; + position: relative; + padding-bottom: 0.02rem; + + // 底部装饰线 + &::after { + content: ''; + position: absolute; + left: 0; + bottom: 0.02rem; + width: 100%; + height: 0.06rem; + background: $accent; + border-radius: 0.02rem; + z-index: -1; + } } &__edit-btn { @@ -81,7 +148,6 @@ padding: 0.12rem 0; &:not(:last-child) { - border-bottom: 1px solid $border-color; } } @@ -170,6 +236,7 @@ display: flex; flex-wrap: wrap; gap: 0.08rem; + padding: 0 0.14rem; } &__tag { @@ -187,4 +254,77 @@ background: $theme-color; } } + + // ---- 新版内联编辑按钮(品牌色图标+文字,hover显示) ---- + &__edit-btn-inline { + background: none; + border: none; + color: $accent; + cursor: pointer; + padding: 0.04rem 0.08rem; + border-radius: 0.04rem; + display: flex; + align-items: center; + gap: 0.04rem; + font-size: 0.13rem; + font-weight: 500; + opacity: 0; + pointer-events: none; + transition: all 0.2s; + flex-shrink: 0; + margin-left: auto; + + .el-icon { + font-size: 0.15rem; + } + + &:hover { + background: $theme-color; + } + } + + // 卡片hover时显示编辑按钮(个人信息/技能/证书) + &__card-hover:hover &__edit-btn-inline { + opacity: 1; + pointer-events: auto; + } + + &__card-hover:hover { + background: #F7F7F7; + } + + // 标题行hover显示添加按钮(5大经历) + &__header-hover:hover { + background: #F7F7F7; + border-radius: 0.06rem; + } + + &__header-hover:hover &__edit-btn-inline { + opacity: 1; + pointer-events: auto; + } + + // 经历条目hover显示编辑按钮 + &__section-item { + padding: 0.12rem 0.14rem; + border-radius: 0.08rem; + + &:hover { + background: #F7F7F7; + } + + &:not(:last-child) { + } + } + + // 条目hover时显示编辑按钮 + &__section-item:hover &__item-edit-btn { + opacity: 1; + pointer-events: auto; + } + + // 条目内编辑按钮 + &__item-edit-btn { + margin-left: 0.08rem; + } } diff --git a/src/assets/styles/components/resume-edit-name-dialog.scss b/src/assets/styles/components/resume-edit-name-dialog.scss index aba0989..79e77d1 100644 --- a/src/assets/styles/components/resume-edit-name-dialog.scss +++ b/src/assets/styles/components/resume-edit-name-dialog.scss @@ -1,24 +1,51 @@ @use '../variables' as *; -/* 编辑简历名称弹窗样式 */ +/* 编辑简历名称弹窗 — 遮罩层 */ +.resume-edit-name-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: $overlay-bg; + z-index: 2200; + display: flex; + align-items: center; + justify-content: center; +} + +/* 弹窗主体 */ .resume-edit-name-dialog { - .el-dialog__header { - padding: 0.2rem 0.2rem 0; - } + width: 4.6rem; + background: $bg-white; + border-radius: 0.12rem; + padding: 0.32rem 0.3rem; + position: relative; + font-size: 0.14rem; + box-shadow: 0 0.04rem 0.2rem rgba(0, 0, 0, 0.15); - .el-dialog__body { - padding: 0 0.3rem 0.3rem; - } + /* 关闭按钮 */ + &__close { + position: absolute; + top: 0.14rem; + right: 0.16rem; + border: none; + background: none; + font-size: 0.16rem; + color: $text-light; + cursor: pointer; + padding: 0.04rem; + line-height: 1; + transition: color 0.2s; - &__body { - display: flex; - flex-wrap: wrap; - gap: 0.24rem; + &:hover { + color: $text-dark; + } } /* 表单字段 */ &__field { - width: 100%; + margin-bottom: 0.24rem; } /* 标签 */ @@ -38,27 +65,28 @@ /* 输入框 */ &__input { - .el-input__wrapper { - border-radius: 0.1rem; - padding: 0.04rem 0.14rem; - box-shadow: 0 0 0 1px $border-color; + width: 100%; + height: 0.44rem; + border: 1px solid $border-color; + border-radius: 0.1rem; + padding: 0 0.14rem; + font-size: 0.14rem; + color: $text-dark; + outline: none; + box-sizing: border-box; + transition: border-color 0.2s; + + &::placeholder { + color: $text-light; } - .el-input__inner { - font-size: 0.14rem; - color: $text-dark; - height: 0.36rem; - line-height: normal; - - &::placeholder { - color: $text-light; - } + &:focus { + border-color: $accent; } } /* 底部按钮区域 */ &__footer { - width: 100%; display: flex; gap: 0.16rem; margin-top: 0.08rem; diff --git a/src/assets/styles/components/resume-issue-fix-all-drawer.scss b/src/assets/styles/components/resume-issue-fix-all-drawer.scss new file mode 100644 index 0000000..307cf4b --- /dev/null +++ b/src/assets/styles/components/resume-issue-fix-all-drawer.scss @@ -0,0 +1,252 @@ +@use '../variables' as *; + +// ==================== 一键修复抽屉(全模块) ==================== + +// 遮罩层 +.fix-all-drawer-overlay { + position: fixed; + inset: 0; + background: $overlay-bg; + z-index: 2000; +} + +// 遮罩层过渡动画 +.fix-all-drawer-overlay-enter-active, +.fix-all-drawer-overlay-leave-active { + transition: opacity 0.3s ease; +} +.fix-all-drawer-overlay-enter-from, +.fix-all-drawer-overlay-leave-to { + opacity: 0; +} + +// 抽屉主体 +.fix-all-drawer { + position: fixed; + top: 0; + right: 0; + width: 8rem; + height: var(--app-height, 100vh); + background: $bg-main; + z-index: 2001; + display: flex; + flex-direction: column; + box-shadow: -4px 0 24px rgba(0, 0, 0, 0.08); + font-size: 0.14rem; + + // ---- 顶部栏 ---- + &__header { + display: flex; + align-items: center; + gap: 0.1rem; + padding: 0.16rem 0.24rem; + border-bottom: 1px solid $border-color; + background: $bg-white; + flex-shrink: 0; + } + + &__close-btn { + width: 0.28rem; + height: 0.28rem; + border-radius: 50%; + border: none; + background: none; + color: $text-dark; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.2s; + + &:hover { + background: $bg-main; + color: $accent; + } + } + + &__close-icon { + width: 0.16rem; + height: 0.16rem; + } + + &__title { + font-size: 0.18rem; + font-weight: 700; + color: $text-dark; + margin: 0; + } + + // ---- 可滚动内容区 ---- + &__body { + flex: 1; + overflow-y: auto; + padding: 0.2rem 0.24rem 0.4rem; + } + + // ---- 模块标题 ---- + &__module-title { + font-size: 0.16rem; + font-weight: 700; + color: $text-dark; + margin: 0.24rem 0 0.12rem 0; + + &:first-child { + margin-top: 0; + } + } + + // ---- 单条经历记录 ---- + &__record { + margin-bottom: 0.2rem; + } + + &__record-label { + font-size: 0.13rem; + font-weight: 600; + color: $text-dark; + margin: 0 0 0.08rem 0; + } + + // ---- 卡片容器 ---- + &__card { + background: $bg-white; + border-radius: 0.1rem; + padding: 0.16rem; + border: 1px solid $border-color; + + &--ai { + border: 1px solid rgba($accent, 0.3); + background: rgba($accent, 0.03); + } + } + + // ---- 原文编辑 textarea ---- + &__textarea { + width: 100%; + min-height: 0.6rem; + font-size: 0.13rem; + color: $text-dark; + line-height: 1.8; + border: none; + outline: none; + resize: none; + overflow: hidden; + background: transparent; + font-family: inherit; + box-sizing: border-box; + padding: 0; + field-sizing: content; + + &::placeholder { + color: $text-light; + } + } + + // ---- AI 润色结果区 ---- + &__ai-section { + margin-top: 0.12rem; + } + + &__ai-label { + font-size: 0.13rem; + font-weight: 600; + color: $accent; + margin: 0 0 0.08rem 0; + } + + &__ai-text { + font-size: 0.13rem; + color: $text-dark; + line-height: 1.8; + margin: 0; + white-space: pre-wrap; + word-break: break-all; + } + + // ---- AI 操作按钮 ---- + &__ai-actions { + display: flex; + align-items: center; + gap: 0.12rem; + margin-top: 0.1rem; + } + + &__action-btn { + font-size: 0.12rem; + font-weight: 500; + border: 1px solid $accent; + border-radius: 0.14rem; + padding: 0.04rem 0.12rem; + cursor: pointer; + transition: all 0.2s; + + &--replace { + color: $accent; + background: $bg-white; + + &:hover { + background: rgba($accent, 0.08); + } + } + + &--regenerate { + color: $accent; + background: $bg-white; + + &:hover { + background: rgba($accent, 0.08); + } + } + } + + // ---- 底部按钮区 ---- + &__footer { + padding: 0.16rem 0.24rem; + display: flex; + justify-content: center; + align-items: center; + gap: 0.2rem; + flex-shrink: 0; + background: $bg-white; + border-top: 1px solid $border-color; + } + + &__footer-btn { + padding: 0.1rem 0.3rem; + font-size: 0.14rem; + font-weight: 600; + border-radius: 0.22rem; + cursor: pointer; + transition: all 0.2s; + + &--use-ai { + color: $accent; + background: $bg-white; + border: 1px solid $accent; + + &:hover { + background: rgba($accent, 0.08); + } + } + + &--save { + color: $bg-white; + background: $btn-dark; + border: 1px solid $btn-dark; + + &:hover { + background: $btn-dark-hover; + } + } + } +} + +// 抽屉滑入动画 +.fix-all-drawer-slide-enter-active, +.fix-all-drawer-slide-leave-active { + transition: transform 0.3s ease; +} +.fix-all-drawer-slide-enter-from, +.fix-all-drawer-slide-leave-to { + transform: translateX(100%); +} diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss index 22e2059..51b58b7 100644 --- a/src/assets/styles/index.scss +++ b/src/assets/styles/index.scss @@ -27,6 +27,7 @@ @use './components/job-resume-custom-edit-panel.scss'; @use './components/resume-analysis-report-drawer.scss'; @use './components/resume-issue-fix-drawer.scss'; +@use './components/resume-issue-fix-all-drawer.scss'; @use './components/resume-edit-name-dialog.scss'; @use './components/agent-chat-job-list.scss'; @use './components/agent-match-job-add.scss'; diff --git a/src/assets/styles/pages/agent.scss b/src/assets/styles/pages/agent.scss index ceccbe8..61b200f 100644 --- a/src/assets/styles/pages/agent.scss +++ b/src/assets/styles/pages/agent.scss @@ -97,7 +97,7 @@ // 左侧说明引导区域 &__left { - width: 4.2rem; + width: 3.0rem; flex-shrink: 0; } @@ -111,7 +111,7 @@ &__intro-card { background: $bg-white; border-radius: 0.12rem; - padding: 0.3rem; + padding: 0.38rem; } // 卡片头部:图标 + 标题 @@ -214,23 +214,15 @@ &__profile-wrapper { background: $bg-main; border-radius: 0.12rem; - border: 1px solid $border-color; - padding: 0.24rem; max-height: calc(var(--app-height, 100vh) - 1.4rem); overflow-y: auto; + display: flex; + flex-direction: column; + scrollbar-width: none; // Firefox + -ms-overflow-style: none; // IE/Edge - // 自定义滚动条 &::-webkit-scrollbar { - width: 4px; - } - - &::-webkit-scrollbar-thumb { - background: $border-color; - border-radius: 2px; - } - - &::-webkit-scrollbar-track { - background: transparent; + display: none; // Chrome/Safari } } @@ -599,191 +591,309 @@ &:active { transform: scale(0.98); } } - // ==================== 第3步:网申常见问题 ==================== - - // 第3步整体容器 — 左右两栏布局 - &__step3 { - display: flex; - gap: 0.24rem; - align-items: flex-start; - width: 100%; - position: relative; - padding-top: 0.36rem; + // ==================== 第2步新增:求职偏好区域 ==================== + &__pref-section { + background: $bg-white; + border-radius: 0.12rem; + padding: 0.24rem; + margin-bottom: 0.2rem; + border: 1px solid $border-color; } - // 右侧表单包裹 - &__form-wrapper { + &__pref-section-title { + font-size: 0.18rem; + font-weight: 600; + color: $text-dark; + margin-bottom: 0.1rem; + } + + &__pref-section-desc { + font-size: 0.13rem; + color: $text-middle; + margin-bottom: 0.16rem; + line-height: 1.5; + } + + &__pref-filters { + display: flex; + flex-wrap: wrap; + gap: 0.1rem; + align-items: center; + } + + &__pref-type-tag { + padding: 0.06rem 0.16rem; + background: $bg-main; + border-radius: 0.04rem; + font-size: 0.13rem; + color: $text-dark; + border: 1px solid $border-color; + cursor: default; + } + + // 招聘分类下拉选择 + &__pref-type-dropdown { + position: relative; + padding: 0.1rem 0.28rem; + background: #F5FAF9; + border-radius: 0.24rem; + font-size: 0.14rem; + color: $text-dark; + border: 1px solid $border-color; + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.04rem; + min-width: 0.9rem; + height: 0.38rem; + box-sizing: border-box; + user-select: none; + transition: border-color 0.2s ease; + + &:hover { border-color: $accent; } + } + + &__pref-type-arrow { + width: 0.12rem; + height: 0.12rem; + color: $text-middle; + } + + &__pref-type-menu { + position: absolute; + top: calc(100% + 0.04rem); + left: 0; + min-width: 1.2rem; + background: $bg-white; + border: 1px solid $border-color; + border-radius: 0.06rem; + box-shadow: 0 0.02rem 0.08rem rgba(0, 0, 0, 0.1); + z-index: 10; + padding: 0.04rem 0; + } + + &__pref-type-menu-item { + padding: 0.08rem 0.14rem; + font-size: 0.13rem; + color: $text-dark; + cursor: pointer; + transition: background 0.15s ease; + + &:hover { background: $bg-main; } + + &--active { + color: $accent; + font-weight: 500; + } + } + + // ==================== 第2步新增:简历设置区域 ==================== + &__resume-section { + background: $bg-white; + border-radius: 0.12rem; + padding: 0.24rem; + border: 1px solid $border-color; + } + + &__resume-sub-label { + font-size: 0.13rem; + color: $text-middle; + margin-bottom: 0.12rem; + } + + &__resume-select-row { + display: flex; + align-items: center; + gap: 0.1rem; + margin-bottom: 0.2rem; + padding: 0.1rem 0.14rem; + border: 1px solid $border-color; + border-radius: 0.08rem; + } + + &__resume-check-icon { + flex-shrink: 0; + width: 0.16rem; + height: 0.16rem; + color: $text-middle; + + svg { + width: 100%; + height: 100%; + } + } + + &__resume-select { + flex: 1; + + .el-input__wrapper { + box-shadow: none !important; + padding: 0; + } + } + + &__resume-switch-row { + display: flex; + align-items: center; + justify-content: space-between; + padding: 0.1rem 0; + + & + & { + border-top: none; + } + } + + &__resume-switch-text { + font-size: 0.13rem; + color: $text-dark; + } + + // ==================== 第3步:安装插件 ==================== + + // 安装教程整体容器 + &__install-guide { background: $bg-white; border-radius: 0.12rem; padding: 0.28rem; border: 1px solid $border-color; } - // 表单标题 - &__form-title { - font-size: 0.15rem; + // 安装教程标题 + &__install-guide-title { + font-size: 0.18rem; font-weight: 700; color: $text-dark; - margin-bottom: 0.24rem; - padding-bottom: 0.12rem; - border-bottom: 1px solid $border-color; + margin-bottom: 0.28rem; } - // 表单分组 - &__form-group { - margin-bottom: 0.28rem; + // 每个安装步骤 + &__install-step { + margin-bottom: 0.3rem; &:last-child { margin-bottom: 0; } } - // 表单标签 - &__form-label { + // 步骤文字说明 + &__install-step-text { font-size: 0.14rem; font-weight: 600; color: $text-dark; - margin-bottom: 0.12rem; - text-align: center; + margin-bottom: 0.16rem; + line-height: 1.5; } - // 选项按钮行 - &__form-options { - display: flex; - justify-content: center; - gap: 0.12rem; - } - - // 单个选项按钮 - &__form-option { - padding: 0.08rem 0.24rem; - border: 1px solid $border-color; - border-radius: 0.06rem; - background: $bg-white; - color: $text-dark; - font-size: 0.13rem; - cursor: pointer; - transition: all 0.2s ease; - line-height: 1.4; - - &:hover { - border-color: $text-middle; - } - - // 选中态 - &--active { - background: $btn-dark; - color: $bg-white; - border-color: $btn-dark; - } - } - - // 下拉选择器行 - &__form-selects { - display: flex; - justify-content: center; - gap: 0.12rem; - } - - // 统一下拉选择器样式覆盖 - &__form-select { - width: 1.4rem; - - // 覆盖 Element Plus 选择器样式以匹配页面风格 - :deep(.el-input__wrapper) { - border-radius: 0.2rem; - box-shadow: none; - border: 1px solid $border-color; - padding: 0.02rem 0.12rem; - background: $bg-white; - transition: border-color 0.2s ease; - - &:hover, - &.is-focus { - border-color: $accent; - box-shadow: none; - } - } - - :deep(.el-input__inner) { - font-size: 0.13rem; - color: $text-dark; - text-align: center; - - &::placeholder { - color: $text-light; - } - } - - :deep(.el-input__suffix) { - color: $text-light; - } - } - - // ==================== 第3步下半部分:插件安装 ==================== - - // 安装步骤说明文字 - &__install-steps { - font-size: 0.13rem; - color: $text-middle; - line-height: 1.8; - margin-bottom: 0.28rem; - - p { margin: 0; } - } - - // 插件区域 - &__plugin-section { - text-align: center; - padding: 0.2rem 0; - } - - // 插件标题 - &__plugin-title { - font-size: 0.18rem; - font-weight: 700; - color: $text-dark; - margin-bottom: 0.24rem; - } - - // 浏览器按钮行 - &__browser-btns { - display: flex; - justify-content: center; - gap: 0.1rem; - flex-wrap: wrap; - } - - // 单个浏览器按钮 - &__browser-btn { - padding: 0.08rem 0.2rem; - border: 1px solid $border-color; - border-radius: 0.06rem; - background: $bg-white; - color: $text-dark; - font-size: 0.13rem; - cursor: pointer; - transition: all 0.2s ease; - - &:hover { - border-color: $accent; - color: $accent; - } - } - - // 指引图片幻灯片 - &__guide-slide { - display: flex; + // 下载按钮 + &__install-download-btn { + display: inline-flex; align-items: center; - justify-content: center; - height: 100%; + gap: 0.08rem; + padding: 0.08rem 0.2rem; + background: rgba($accent, 0.1); + border: none; + border-radius: 0.2rem; + color: $accent; + font-size: 0.13rem; + cursor: pointer; + transition: all 0.2s ease; + + &:hover { background: rgba($accent, 0.2); } + + svg { flex-shrink: 0; } + } + + // 步骤2的内容区(图片+浏览器链接并排) + &__install-step-content { + display: flex; + gap: 0.24rem; + align-items: flex-start; + } + + // 步骤中的图片区 + &__install-step-img { + flex: 1; + min-width: 0; + background: $bg-main; + border-radius: 0.08rem; + padding: 0.12rem; img { - max-width: 100%; - max-height: 100%; - object-fit: contain; - border-radius: 0.08rem; + width: 100%; + height: auto; + border-radius: 0.06rem; } } + // 浏览器链接区域 + &__install-browser-links { + flex-shrink: 0; + width: 2rem; + } + + &__install-browser-item { + display: flex; + align-items: center; + gap: 0.08rem; + margin-bottom: 0.06rem; + } + + &__install-browser-icon { + width: 0.2rem; + height: 0.2rem; + border-radius: 50%; + object-fit: contain; + } + + &__install-browser-name { + font-size: 0.13rem; + font-weight: 500; + color: $text-dark; + } + + &__install-browser-url { + display: inline-flex; + align-items: center; + gap: 0.04rem; + font-size: 0.13rem; + color: $accent; + text-decoration: none; + cursor: pointer; + margin-bottom: 0.16rem; + + &:hover { text-decoration: underline; } + + svg { flex-shrink: 0; color: $text-middle; } + } + + // 步骤3/4的图片展示行 + &__install-step-img-row { + display: flex; + gap: 0.16rem; + } + + &__install-step-img-item { + flex: 1; + background: $bg-main; + border-radius: 0.08rem; + padding: 0.12rem; + + img { + width: 100%; + height: auto; + border-radius: 0.06rem; + } + } + + // 右侧卡片中的安装步骤列表 + &__install-steps-list { + font-size: 0.13rem; + color: $text-middle; + line-height: 2; + margin-bottom: 0.1rem; + + p { margin: 0; } + } + // ==================== 设置完成页 ==================== // 完成页容器 — 居中布局 @@ -845,28 +955,34 @@ .agent-main { height: 100%; display: flex; - justify-content: center; - // 有右侧面板时取消居中 - &--with-panel { - //justify-content: flex-start; - } - - // 左侧主区域 + // 左侧主区域(60%) &__left { - flex: 1; + width: 60%; height: calc(var(--app-height, 100vh) - 0.6rem); display: flex; flex-direction: column; - max-width: 8rem; } - // 右侧匹配岗位面板 + // 右侧面板(40%,常驻设置面板 + 覆盖层) &__right { - flex: 1; + width: 40%; height: calc(var(--app-height, 100vh) - 0.6rem); margin-left: 0.2rem; - max-width: 8rem; + position: relative; + overflow: hidden; + } + + // 右侧覆盖层 — 绝对定位覆盖在设置面板之上 + &__right-overlay { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 10; + background: $bg-white; + border-radius: 0.12rem; overflow-y: auto; } @@ -878,7 +994,6 @@ height: 100%; overflow-y: auto; - // 自定义滚动条 &::-webkit-scrollbar { width: 4px; } @@ -1142,7 +1257,7 @@ } } - // ==================== 中间聊天记录区域 ==================== + // ==================== 中间内容区域 ==================== &__chat-area { flex: 1; overflow-y: auto; @@ -1164,6 +1279,14 @@ } } + // 投递进度列表 + &__progress-list { + margin-top: 0.16rem; + display: flex; + flex-direction: column; + gap: 0.12rem; + } + // ==================== 对话消息样式 ==================== // 对话行 diff --git a/src/assets/styles/pages/profile.scss b/src/assets/styles/pages/profile.scss index f3798ca..d0ab9bc 100644 --- a/src/assets/styles/pages/profile.scss +++ b/src/assets/styles/pages/profile.scss @@ -8,7 +8,7 @@ padding: 0.12rem 0.36rem; height: var(--app-height, 100vh); box-sizing: border-box; - overflow-y: auto; + overflow: hidden; background: $bg-main; display: flex; flex-direction: column; @@ -50,6 +50,7 @@ gap: 0.24rem; flex: 1; min-height: 0; + overflow: hidden; } // 右侧边栏 diff --git a/src/assets/styles/pages/resume-detail.scss b/src/assets/styles/pages/resume-detail.scss index 36a7037..74a9428 100644 --- a/src/assets/styles/pages/resume-detail.scss +++ b/src/assets/styles/pages/resume-detail.scss @@ -5,7 +5,7 @@ &__content { margin-left: 2rem; flex: 1; - padding: 0.12rem 0.36rem; + padding-bottom: 0.24rem; height: var(--app-height, 100vh); box-sizing: border-box; overflow-y: auto; @@ -16,10 +16,14 @@ } &__page-title { - font-size: 0.24rem; - font-weight: 700; - color: $text-dark; + margin: 0 0 0.16rem 0; + padding: 0 0.24rem; + >h2{ + font-size: 0.24rem; + font-weight: 700; + color: $text-dark; + } } // ---- 顶部操作栏 ---- @@ -27,7 +31,8 @@ display: flex; align-items: center; justify-content: space-between; - margin-bottom: 0.16rem; + margin-bottom: 0.15rem; + padding: 0 0.24rem; } &__toolbar-left { @@ -37,22 +42,18 @@ } &__back-btn { - width: 0.32rem; - height: 0.32rem; - border-radius: 50%; - border: 1px solid $border-color; - background: $bg-white; + background: none; + border: none; color: $text-dark; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s; + font-size: 0.13rem; &:hover { - background: $theme-color; - border-color: $accent; - color: $accent; + color: #000; } } @@ -83,8 +84,8 @@ gap: 0.04rem; background: none; border: none; - color: $text-light; - font-size: 0.12rem; + color: $text-dark; + font-size: 0.13rem; cursor: pointer; padding: 0.05rem 0.1rem; border-radius: 0.06rem; @@ -92,8 +93,8 @@ white-space: nowrap; &:hover { - color: $text-dark; - background: $bg-white; + //color: $text-dark; + //background: $bg-white; } &--danger:hover { @@ -115,40 +116,79 @@ background: $bg-white; border-radius: 0.12rem; padding: 0.18rem 0.24rem; + padding-top: 0.4rem; margin-bottom: 0.16rem; + + /* B/C/D 评级渐变背景 */ + &--grade-bcd { + background: linear-gradient(to bottom, #FFF5E9, #FFF); + } + + /* A 评级渐变背景 */ + &--grade-a { + background: linear-gradient(to bottom, #ECFDFC, #FFF); + } } &__score-left { display: flex; align-items: center; - gap: 0.12rem; + gap: 0.2rem; } - &__score-avatar { - width: 0.4rem; - height: 0.4rem; - border-radius: 50%; + /* 星星+底座容器 */ + &__star-wrapper { + position: relative; + display: flex; + flex-direction: column; + align-items: center; + width: 0.7rem; + flex-shrink: 0; + } + + /* SVG 五角星 */ + &__star-svg { + width: 0.63rem; + height: 0.63rem; + position: relative; + z-index: 1; + } + + /* 底座长方形 */ + &__star-base { + position: relative; + z-index: 2; + margin-top: -0.08rem; + width: 0.52rem; + height: 0.22rem; + border: 1.5px solid #858585; + border-radius: 0.03rem; + background: #fff; display: flex; align-items: center; justify-content: center; - color: $text-dark; - font-size: 0.18rem; - font-weight: 700; - flex-shrink: 0; - background: $bg-main; + + > span { + font-size: 0.12rem; + font-weight: 600; + } } - &__score-badge { - font-size: 0.11rem; - font-weight: 600; - color: $bg-white; - background: $accent; - border-radius: 0.1rem; - padding: 0.03rem 0.1rem; + /* 右侧操作按钮区 */ + &__score-actions { + display: flex; + align-items: center; + gap: 0.16rem; + } + + /* 暂无等级提示文字 */ + &__score-hint { + font-size: 0.13rem; + color: $text-light; } &__score-link { - font-size: 0.12rem; + font-size: 0.13rem; color: $text-light; background: none; border: none; @@ -169,65 +209,69 @@ &__score-item { text-align: center; display: flex; - flex-direction: column; align-items: center; - gap: 0.02rem; + gap: 0.06rem; } &__score-num { - font-size: 0.22rem; + font-size: 0.30rem; font-weight: 700; color: $text-dark; line-height: 1.2; } &__score-label { - font-size: 0.1rem; + font-size: 0.13rem; color: $text-light; white-space: nowrap; } &__diagnose-btn { background: $btn-dark; + margin-left: 0.16rem; color: $bg-white; border: none; - border-radius: 0.06rem; - padding: 0.08rem 0.18rem; + border-radius: 0.18rem; + width: 0.93rem; + height: 0.36rem; + line-height: 0.37rem; font-size: 0.13rem; font-weight: 500; cursor: pointer; - transition: background 0.2s; + box-sizing: border-box; + //transition: background 0.2s; white-space: nowrap; &:hover { background: $btn-dark-hover; } - // 开始诊断按钮 — 稍大一些,更醒目 - &--start { - padding: 0.1rem 0.28rem; - font-size: 0.14rem; - border-radius: 0.08rem; - background: $gradient-bg; - &:hover { - background: $accent-hover; - } - } } // ---- 简历主体 ---- &__body { - display: flex; - flex-direction: column; - gap: 0.16rem; - padding-bottom: 0.4rem; + padding-bottom: 0.3rem; + border-radius: 0.16rem; + background: #fff; + margin: 0 0.24rem; } &__card { background: $bg-white; - border-radius: 0.12rem; - padding: 0.24rem; + border-radius: 0.1rem; + margin: 0.4rem 0.18rem; + + + } + + &__card-hover { + padding: 0.1rem 0.14rem; + &:hover { + background: #F7F7F7; + + } + } // ---- 个人信息卡片 ---- @@ -316,8 +360,9 @@ &__section-header { display: flex; align-items: center; - justify-content: space-between; + gap: 0.12rem; margin-bottom: 0.16rem; + padding: 0.1rem 0 0.1rem 0.14rem; } &__section-title { @@ -325,6 +370,24 @@ font-weight: 700; color: $text-dark; margin: 0 0 0.16rem 0; + + // 底部加粗装饰线(层级低于文字,部分遮挡文字底部) + &--underline { + position: relative; + padding-bottom: 0.02rem; + background: transparent; + &::after { + content: ''; + position: absolute; + left: 0; + bottom: 0.02rem; + width: 100%; + height: 0.06rem; + background: #12C7BE; + border-radius: 0.02rem; + z-index: -1; + } + } } &__section-header &__section-title { @@ -343,6 +406,7 @@ align-items: center; transition: all 0.2s; flex-shrink: 0; + margin-left: auto; &:hover { color: $accent; @@ -355,6 +419,63 @@ height: 0.15rem; } + // ---- 内联编辑按钮(品牌色图标+文字,hover卡片时才显示) ---- + &__edit-btn-inline { + background: none; + border: none; + color: $accent; + cursor: pointer; + padding: 0.04rem 0.08rem; + border-radius: 0.04rem; + display: flex; + align-items: center; + gap: 0.04rem; + transition: all 0.2s; + flex-shrink: 0; + margin-left: auto; + font-size: 0.13rem; + font-weight: 500; + // 默认隐藏,hover卡片时显示 + opacity: 0; + pointer-events: none; + + .el-icon { + font-size: 0.15rem; + } + + &:hover { + background: $theme-color; + } + } + + // 卡片hover时显示编辑按钮(个人信息、个人概述) + &__card-hover:hover &__edit-btn-inline { + opacity: 1; + pointer-events: auto; + } + + // 经历模块标题栏hover时显示添加按钮 + &__section-header:hover &__edit-btn-inline { + opacity: 1; + pointer-events: auto; + } + + // 经历模块标题栏hover时背景色 + &__section-header:hover { + background: #F7F7F7; + border-radius: 0.06rem; + } + + // 经历条目内的编辑按钮(hover exp-item 时显示) + &__exp-edit-btn { + margin-left: auto; + } + + &__exp-item:hover &__exp-edit-btn { + opacity: 1; + pointer-events: auto; + } + // ---- 教育背景 ---- &__edu-item { margin-top: 0.16rem; @@ -381,13 +502,13 @@ // ---- 工作经历 ---- &__exp-item { margin-top: 0.16rem; - margin-left: 0.1rem; - padding-left: 0.1rem; - border-left: 2px solid $border-color; - - &:not(:last-child) { - //border-bottom: 1px solid $border-color; + padding: 0.1rem 0.14rem; + border-radius: 0.09rem; + &:hover { + background: #F7F7F7; } + + } &__exp-title { @@ -403,6 +524,112 @@ margin-bottom: 0.06rem; } + // ---- 经历第一行(名称 + 身份 + 时间 + 修复标记) ---- + &__exp-row { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 0.12rem; + margin-bottom: 0.06rem; + } + + &__exp-name { + font-size: 0.14rem; + font-weight: 600; + color: $text-dark; + } + + &__exp-role { + font-size: 0.13rem; + font-weight: 400; + color: $text-dark; + } + + &__exp-date { + font-size: 0.12rem; + font-weight: 400; + color: $text-middle; + } + + // ---- 修复建议标记 ---- + &__fix-tag { + position: relative; + display: inline-flex; + align-items: center; + gap: 0.05rem; + font-size: 0.12rem; + font-weight: 500; + color: #FF8D0B; + background: #FFF5E9; + border-radius: 0.04rem; + padding: 0.04rem 0.12rem; + cursor: default; + transition: all 0.2s; + white-space: nowrap; + + &:hover { + background: #FFEDDA; + } + + // hover 时显示气泡 + &:hover .resume-detail__fix-tooltip { + opacity: 1; + visibility: visible; + } + } + + &__fix-tag-icon { + width: 0.14rem; + height: 0.14rem; + flex-shrink: 0; + } + + // ---- 诊断详情 hover 气泡 ---- + &__fix-tooltip { + position: absolute; + top: 50%; + left: calc(100% + 0.12rem); + transform: translateY(-50%); + min-width: 2.4rem; + max-width: 3.5rem; + padding: 0.14rem 0.18rem; + background: linear-gradient(to bottom,#FFF5E9,#FFFFFF); + color: $text-dark; + font-size: 0.13rem; + font-weight: 400; + line-height: 1.7; + white-space: normal; + word-break: break-all; + border-radius: 0.1rem; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12); + border: 1px solid #FF8D0B; + opacity: 0; + visibility: hidden; + transition: all 0.2s ease; + z-index: 100; + pointer-events: none; + + // 左侧尖角 — 旋转方块方案,边框粗细与气泡一致 + &::before { + content: ''; + position: absolute; + top: 50%; + left: -0.05rem; + margin-top: -0.05rem; + width: 0.09rem; + height: 0.09rem; + background: #FFF8F2; + border-left: 1px solid #FF8D0B; + border-bottom: 1px solid #FF8D0B; + transform: rotate(45deg); + } + + // 不再需要内层伪元素 + &::after { + display: none; + } + } + &__exp-desc { font-size: 0.12rem; color: $text-dark; @@ -419,9 +646,9 @@ &__skill-tag { font-size: 0.12rem; - color: $text-dark; - background: $bg-main; - border: 1px solid $border-color; + color: $accent; + background: $bg-white; + border: 1px solid $accent; border-radius: 0.04rem; padding: 0.05rem 0.14rem; transition: all 0.2s; @@ -429,7 +656,7 @@ &:hover { border-color: $accent; color: $accent; - background: $theme-color; + background: $bg-white; } } diff --git a/src/assets/styles/pages/resume.scss b/src/assets/styles/pages/resume.scss index 133fcd7..a8ad1fe 100644 --- a/src/assets/styles/pages/resume.scss +++ b/src/assets/styles/pages/resume.scss @@ -74,7 +74,7 @@ white-space: nowrap; &--action { - width: 0.5rem; + width: 2rem; } } @@ -107,7 +107,7 @@ &__name-cell { display: flex; align-items: center; - gap: 0.1rem; + gap: 0.06rem; } &__avatar { @@ -128,16 +128,71 @@ } &__default-tag { - font-size: 0.1rem; - color: $text-light; - background: $bg-main; - border: 1px solid $border-color; - border-radius: 0.04rem; - padding: 0.02rem 0.06rem; + font-size: 0.09rem; + color: $accent; + background: #D9F5F0; + border-radius: 0.14rem; + padding: 0.01rem 0.06rem; + padding-bottom: 0.02rem; white-space: nowrap; } - // 更多按钮 + // 编辑名称岗位图标按钮 + &__edit-btn { + background: none; + border: none; + color: $text-dark; + cursor: pointer; + padding: 0.02rem; + display: flex; + align-items: center; + justify-content: center; + transition: opacity 0.2s; + + &:hover { + opacity: 0.6; + } + } + + &__edit-icon { + font-size: 0.13rem; + } + + // 操作按钮容器 + &__actions { + display: flex; + align-items: center; + gap: 0.16rem; + justify-content: flex-end; + } + + // 行内操作按钮 + &__action-btn { + background: none; + border: none; + font-size: 0.12rem; + color: $text-dark; + cursor: pointer; + padding: 0.04rem 0.08rem; + border-radius: 0.04rem; + white-space: nowrap; + transition: all 0.15s; + + &:hover { + color: $accent; + } + + // 删除按钮红色 + &--delete { + color: #FD6464; + + &:hover { + color: #e04545; + } + } + } + + // 更多按钮(已移除,保留兼容) &__more-btn { background: none; border: none; @@ -168,34 +223,6 @@ color: $text-light; font-size: 0.14rem; } - - // 弹出菜单 - &__popup { - position: absolute; - right: 0.46rem; - top: 0.18rem; - background: $bg-white; - border: 1px solid $border-color; - border-radius: 0.1rem; - padding: 0.06rem 0; - box-shadow: 0 0.06rem 0.2rem rgba(0, 0, 0, 0.1); - z-index: 10; - min-width: 1.2rem; - } - - &__popup-item { - padding: 0.08rem 0.2rem; - font-size: 0.12rem; - color: $text-dark; - cursor: pointer; - white-space: nowrap; - transition: all 0.15s; - - &:hover { - background: $theme-color; - color: $accent-hover; - } - } } // ==================== 上传简历加载提示 ==================== diff --git a/src/assets/styles/variables.scss b/src/assets/styles/variables.scss index 9ae5f4c..18f4c04 100644 --- a/src/assets/styles/variables.scss +++ b/src/assets/styles/variables.scss @@ -28,10 +28,11 @@ $text-middle: #777777; // 强调色 / 品牌色 //$accent: #4FC2C9; -$accent: #52CAD1; +//$accent: #52CAD1; +$accent: #12C7BE; // 强调色悬停态 -$accent-hover: #42A8B3; +$accent-hover: #11b5ac; // 危险色 / 警告色(删除、错误等) $danger: #E85635; @@ -43,10 +44,10 @@ $border-color: #E8E8E8; $overlay-bg: rgba(0, 0, 0, 0.5); // 主按钮颜色背景(确认提交等) -$btn-dark: #52CAD1; +$btn-dark: #12C7BE; // 主按钮颜色悬停态 -$btn-dark-hover: #42A8B3; +$btn-dark-hover: #11b5ac; // 次要深色按钮背景(除非特意指定使用否则不用这个按钮色) //$btn-dark: #1A1A2E; @@ -55,4 +56,5 @@ $btn-dark-hover: #42A8B3; //$btn-dark-hover: #2E3142; // 渐变色背景 -$gradient-bg: linear-gradient(to right, #52CAD1, #42A8B3); +//$gradient-bg: linear-gradient(to right, #52CAD1, #42A8B3); +$gradient-bg: linear-gradient(to right, #12C7BE, #11b5ac); diff --git a/src/components/AgentChatJobList.vue b/src/components/AgentChatJobList.vue index 42dbacb..0e3cde9 100644 --- a/src/components/AgentChatJobList.vue +++ b/src/components/AgentChatJobList.vue @@ -1,31 +1,41 @@ @@ -72,30 +89,57 @@ import type { AgentRecommendJob } from '@/api/agent' const props = defineProps<{ /** 推荐说明文字 */ summary: string - /** 完整岗位列表数据 */ + /** 当前展示的岗位列表数据(父组件已随机抽取10个) */ jobs: AgentRecommendJob[] + /** 正在请求中的岗位 ID 列表 */ + loadingJobIds?: number[] + /** 是否正在换一批加载中 */ + refreshing?: boolean }>() /** 事件 */ const emit = defineEmits<{ - /** 点击查看全部岗位 */ + /** 点击查看全部岗位(打开右侧面板) */ (e: 'viewAll'): void /** 点击岗位查看详情 */ (e: 'clickJob', job: AgentRecommendJob): void + /** 添加单个岗位到待投递 */ + (e: 'add', job: AgentRecommendJob): void + /** 全部添加 */ + (e: 'addAll'): void + /** 换一批 */ + (e: 'refresh'): void + /** 不再推荐 */ + (e: 'dismiss', job: AgentRecommendJob): void }>() /** 只显示前3个岗位 */ const displayJobs = computed(() => props.jobs.slice(0, 3)) -/** 点击查看全部岗位 */ -function handleViewAll() { - emit('viewAll') -} - /** 点击岗位 — 通知父组件打开岗位预览 */ function handleClickJob(job: AgentRecommendJob) { emit('clickJob', job) } + +/** 添加岗位到待投递 */ +function handleAdd(job: AgentRecommendJob) { + emit('add', job) +} + +/** 全部添加 */ +function handleAddAll() { + emit('addAll') +} + +/** 换一批 */ +function handleRefresh() { + emit('refresh') +} + +/** 不再推荐 */ +function handleDismiss(job: AgentRecommendJob) { + emit('dismiss', job) +}
diff --git a/src/components/ResumeEditNameDialog.vue b/src/components/ResumeEditNameDialog.vue index 50951ca..c567b89 100644 --- a/src/components/ResumeEditNameDialog.vue +++ b/src/components/ResumeEditNameDialog.vue @@ -1,54 +1,51 @@ diff --git a/src/components/ResumeIssueFixAllDrawer.vue b/src/components/ResumeIssueFixAllDrawer.vue new file mode 100644 index 0000000..6932089 --- /dev/null +++ b/src/components/ResumeIssueFixAllDrawer.vue @@ -0,0 +1,403 @@ +