diff --git a/src/assets/images/list-empty.png b/src/assets/images/list-empty.png new file mode 100644 index 0000000..262311c Binary files /dev/null and b/src/assets/images/list-empty.png differ diff --git a/src/assets/images/万千毕业生的信赖之选.png b/src/assets/images/万千毕业生的信赖之选.png deleted file mode 100644 index 9330eb9..0000000 Binary files a/src/assets/images/万千毕业生的信赖之选.png and /dev/null differ diff --git a/src/assets/images/岗位专属简历step0.png b/src/assets/images/岗位专属简历step0.png deleted file mode 100644 index fd62383..0000000 Binary files a/src/assets/images/岗位专属简历step0.png and /dev/null differ diff --git a/src/assets/images/岗位专属简历step1.png b/src/assets/images/岗位专属简历step1.png deleted file mode 100644 index 1a56eb9..0000000 Binary files a/src/assets/images/岗位专属简历step1.png and /dev/null differ diff --git a/src/assets/images/岗位专属简历step2.png b/src/assets/images/岗位专属简历step2.png deleted file mode 100644 index a71cebe..0000000 Binary files a/src/assets/images/岗位专属简历step2.png and /dev/null differ diff --git a/src/assets/images/岗位专属简历step3-01.png b/src/assets/images/岗位专属简历step3-01.png deleted file mode 100644 index 23ac5c2..0000000 Binary files a/src/assets/images/岗位专属简历step3-01.png and /dev/null differ diff --git a/src/assets/images/插件操作界面.png b/src/assets/images/插件操作界面.png deleted file mode 100644 index 7a69c33..0000000 Binary files a/src/assets/images/插件操作界面.png and /dev/null differ diff --git a/src/assets/images/求职助手-准备阶段-第2步-确认目标.png b/src/assets/images/求职助手-准备阶段-第2步-确认目标.png deleted file mode 100644 index 4563f35..0000000 Binary files a/src/assets/images/求职助手-准备阶段-第2步-确认目标.png and /dev/null differ diff --git a/src/assets/images/求职助手-准备阶段-第3步-竞争力评估.png b/src/assets/images/求职助手-准备阶段-第3步-竞争力评估.png deleted file mode 100644 index 3710303..0000000 Binary files a/src/assets/images/求职助手-准备阶段-第3步-竞争力评估.png and /dev/null differ diff --git a/src/assets/images/求职助手-准备阶段-第4步-开启自动申请.png b/src/assets/images/求职助手-准备阶段-第4步-开启自动申请.png deleted file mode 100644 index c459cd4..0000000 Binary files a/src/assets/images/求职助手-准备阶段-第4步-开启自动申请.png and /dev/null differ diff --git a/src/assets/images/求职助手-准备阶段-第5步-Agent设置.png b/src/assets/images/求职助手-准备阶段-第5步-Agent设置.png deleted file mode 100644 index 9f42c43..0000000 Binary files a/src/assets/images/求职助手-准备阶段-第5步-Agent设置.png and /dev/null differ diff --git a/src/assets/images/求职助手-确认个人资料.png b/src/assets/images/求职助手-确认个人资料.png deleted file mode 100644 index 2f7f0fd..0000000 Binary files a/src/assets/images/求职助手-确认个人资料.png and /dev/null differ diff --git a/src/assets/images/简历分析报告.png b/src/assets/images/简历分析报告.png deleted file mode 100644 index 3bf3927..0000000 Binary files a/src/assets/images/简历分析报告.png and /dev/null differ diff --git a/src/assets/images/简历评估问题修复.png b/src/assets/images/简历评估问题修复.png deleted file mode 100644 index e630006..0000000 Binary files a/src/assets/images/简历评估问题修复.png and /dev/null differ diff --git a/src/assets/images/编辑简历名称.png b/src/assets/images/编辑简历名称.png deleted file mode 100644 index 9a8ab13..0000000 Binary files a/src/assets/images/编辑简历名称.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-个人信息编辑.png b/src/assets/images/设计稿截图/个人资料-个人信息编辑.png deleted file mode 100644 index 19fa4cc..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-个人信息编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-作品集编辑.png b/src/assets/images/设计稿截图/个人资料-作品集编辑.png deleted file mode 100644 index 4aa5225..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-作品集编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-实习经历编辑.png b/src/assets/images/设计稿截图/个人资料-实习经历编辑.png deleted file mode 100644 index 605ad95..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-实习经历编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-技能编辑.png b/src/assets/images/设计稿截图/个人资料-技能编辑.png deleted file mode 100644 index 9dc71c7..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-技能编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-教育经历编辑.png b/src/assets/images/设计稿截图/个人资料-教育经历编辑.png deleted file mode 100644 index 0c48e06..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-教育经历编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-竞赛经历编辑.png b/src/assets/images/设计稿截图/个人资料-竞赛经历编辑.png deleted file mode 100644 index 7ecb823..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-竞赛经历编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-证书编辑.png b/src/assets/images/设计稿截图/个人资料-证书编辑.png deleted file mode 100644 index 786d62a..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-证书编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料-项目经历编辑.png b/src/assets/images/设计稿截图/个人资料-项目经历编辑.png deleted file mode 100644 index f782b4b..0000000 Binary files a/src/assets/images/设计稿截图/个人资料-项目经历编辑.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/个人资料.png b/src/assets/images/设计稿截图/个人资料.png deleted file mode 100644 index 431dc01..0000000 Binary files a/src/assets/images/设计稿截图/个人资料.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/会员购买页面@2x.png b/src/assets/images/设计稿截图/会员购买页面@2x.png deleted file mode 100644 index 3b16b80..0000000 Binary files a/src/assets/images/设计稿截图/会员购买页面@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/反馈与帮助@2x.png b/src/assets/images/设计稿截图/反馈与帮助@2x.png deleted file mode 100644 index eaa0c09..0000000 Binary files a/src/assets/images/设计稿截图/反馈与帮助@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/岗位详情@2x.png b/src/assets/images/设计稿截图/岗位详情@2x.png deleted file mode 100644 index 43e7933..0000000 Binary files a/src/assets/images/设计稿截图/岗位详情@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/我的简历-详情@2x.png b/src/assets/images/设计稿截图/我的简历-详情@2x.png deleted file mode 100644 index 3ea4b69..0000000 Binary files a/src/assets/images/设计稿截图/我的简历-详情@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/我的简历@2x.png b/src/assets/images/设计稿截图/我的简历@2x.png deleted file mode 100644 index 3834e7e..0000000 Binary files a/src/assets/images/设计稿截图/我的简历@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/求职目标设置弹窗组件.png b/src/assets/images/设计稿截图/求职目标设置弹窗组件.png deleted file mode 100644 index 5e4b1ed..0000000 Binary files a/src/assets/images/设计稿截图/求职目标设置弹窗组件.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/职位列表@2x.png b/src/assets/images/设计稿截图/职位列表@2x.png deleted file mode 100644 index 29157cc..0000000 Binary files a/src/assets/images/设计稿截图/职位列表@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/职位列表不感兴趣弹窗@2x.png b/src/assets/images/设计稿截图/职位列表不感兴趣弹窗@2x.png deleted file mode 100644 index 5f73d64..0000000 Binary files a/src/assets/images/设计稿截图/职位列表不感兴趣弹窗@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/职位列表问题反馈弹窗@2x.png b/src/assets/images/设计稿截图/职位列表问题反馈弹窗@2x.png deleted file mode 100644 index 89c0978..0000000 Binary files a/src/assets/images/设计稿截图/职位列表问题反馈弹窗@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/设置-会员@2x.png b/src/assets/images/设计稿截图/设置-会员@2x.png deleted file mode 100644 index 500cc9a..0000000 Binary files a/src/assets/images/设计稿截图/设置-会员@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/设置-岗位更新提醒@2x.png b/src/assets/images/设计稿截图/设置-岗位更新提醒@2x.png deleted file mode 100644 index 4880b9e..0000000 Binary files a/src/assets/images/设计稿截图/设置-岗位更新提醒@2x.png and /dev/null differ diff --git a/src/assets/images/设计稿截图/设置-账号与安全@2x.png b/src/assets/images/设计稿截图/设置-账号与安全@2x.png deleted file mode 100644 index a5b5f08..0000000 Binary files a/src/assets/images/设计稿截图/设置-账号与安全@2x.png and /dev/null differ diff --git a/src/assets/images/首页.png b/src/assets/images/首页.png deleted file mode 100644 index e9ab9ec..0000000 Binary files a/src/assets/images/首页.png and /dev/null differ diff --git a/src/assets/styles/components/job-resume-custom-dialog.scss b/src/assets/styles/components/job-resume-custom-dialog.scss index 8fe142a..da0a385 100644 --- a/src/assets/styles/components/job-resume-custom-dialog.scss +++ b/src/assets/styles/components/job-resume-custom-dialog.scss @@ -1398,9 +1398,9 @@ } } - // 立即去投递按钮 + // 下载专属简历按钮 &__submit-btn { - flex: 1; + width: 100%; height: 0.48rem; background: $btn-dark; color: $bg-white; @@ -1415,6 +1415,20 @@ background: $btn-dark-hover; } } + + // 下载专属简历按钮包裹(含下拉菜单定位) + &__submit-wrap { + position: relative; + flex: 1; + + .job-resume-custom-dialog__top-download-menu { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.06rem; + width: 100%; + } + } } // 右侧滑入动画 diff --git a/src/assets/styles/components/side-nav.scss b/src/assets/styles/components/side-nav.scss index f5b4beb..1c94db7 100644 --- a/src/assets/styles/components/side-nav.scss +++ b/src/assets/styles/components/side-nav.scss @@ -53,6 +53,7 @@ } &__item { + position: relative; display: flex; align-items: center; gap: 0.04rem; @@ -120,6 +121,26 @@ flex: none; } + // 公测群二维码弹出层(hover索引5时显示) + &__qrcode-popup { + position: absolute; + top: calc(100% + 0.08rem); + left: 0; + padding: 0.08rem; + background: #fff; + border-radius: 0.08rem; + box-shadow: 0 0.02rem 0.12rem rgba(0, 0, 0, 0.08); + z-index: 100; + } + + &__qrcode-img { + display: block; + width: auto; + height: auto; + max-width: 1.6rem; + border-radius: 0.04rem; + } + &__footer { display: flex; flex-direction: column; diff --git a/src/assets/styles/pages/jobs.scss b/src/assets/styles/pages/jobs.scss index 2c0f188..6fb9a5a 100644 --- a/src/assets/styles/pages/jobs.scss +++ b/src/assets/styles/pages/jobs.scss @@ -168,11 +168,34 @@ &__ai-tip-text { font-size: 0.12rem; line-height: 0.16rem; - color: $accent; + color: $text-light; vertical-align: text-top; margin-left: 0.03rem; } + // AI 推荐的可点击岗位/行业关键词 + &__ai-tip-keyword { + color: $accent; + text-decoration: underline; + cursor: pointer; + transition: opacity 0.2s; + + &:hover { + opacity: 0.75; + } + } + + // 关键词之间的顿号(无下划线,text-light 色) + &__ai-tip-comma { + color: $text-light; + text-decoration: none; + } + + // ";行业:" 分隔符保持 text-light 色 + &__ai-tip-separator { + color: $text-light; + } + // 筛选条件 &__filters { display: flex; @@ -185,6 +208,7 @@ display: flex; align-items: center; gap: 0.08rem; + flex-wrap: wrap; } &__filter-item { @@ -777,7 +801,46 @@ // 暂无数据提示 &__empty { text-align: center; - padding: 1rem 0; + font-size: 0.14rem; + color: $text-light; + } + + // 空状态图片 + &__empty-img { + width: 1.24rem; + height: 1.3rem; + display: block; + margin: 1.6rem auto 0.2rem; + } + + // 空状态主标题 + &__empty-title { + font-size: 0.14rem; + color: $text-light; + margin-bottom: 0.08rem; + } + + // 空状态副标题 + &__empty-subtitle { + font-size: 0.14rem; + color: $text-light; + } + + // "减少筛选条件" 可点击链接 + &__empty-link { + color: $accent; + text-decoration: underline; + cursor: pointer; + + &:hover { + opacity: 0.75; + } + } + + // 列表结果较少时的底部提示 + &__few-results { + text-align: center; + padding: 0.12rem 0; font-size: 0.14rem; color: $text-light; } diff --git a/src/components/JobResumeCustomDialog.vue b/src/components/JobResumeCustomDialog.vue index f0368fb..fb265b6 100644 --- a/src/components/JobResumeCustomDialog.vue +++ b/src/components/JobResumeCustomDialog.vue @@ -12,21 +12,7 @@

生成你的岗位专属简历

- -
- - -
- - -
-
+
@@ -327,8 +313,15 @@
diff --git a/src/components/SideNav.vue b/src/components/SideNav.vue index 47c437f..30e4ec1 100644 --- a/src/components/SideNav.vue +++ b/src/components/SideNav.vue @@ -28,6 +28,13 @@ 全网 + + 公测群 + +
+ 公测群二维码 +
+ {{ item.badge }} diff --git a/src/views/Jobs.vue b/src/views/Jobs.vue index f437390..1c336b1 100644 --- a/src/views/Jobs.vue +++ b/src/views/Jobs.vue @@ -144,7 +144,7 @@
- Nova根据你的个人背景建议的 + Nova根据你的个人背景建议的
@@ -292,7 +292,16 @@ 加载中... -
暂无数据
+
+ 暂无数据 +

符合条件的岗位较少

+

试试 减少筛选条件 或调整您意向的关键词哦~

+
+ +
+

符合条件的岗位较少

+

试试 减少筛选条件 或调整您意向的关键词哦~

+
@@ -700,11 +709,11 @@ function resolveFullCategoryName(id: string): string { return '' } -/** AI 推荐的行业名称(ID 转文字,基于完整行业树) */ -const aiIndustryNames = computed(() => { - if (!aiIndustryIds.value.length || !fullIndustryTree.value.length) return '' +/** AI 推荐的行业列表(ID + 名称,用于提示条展示和点击) */ +const aiIndustryItems = computed<{ id: string; name: string }[]>(() => { + if (!aiIndustryIds.value.length || !fullIndustryTree.value.length) return [] const idSet = new Set(aiIndustryIds.value.map(String)) - const names: string[] = [] + const items: { id: string; name: string }[] = [] for (const id of aiIndustryIds.value) { // 如果该 ID 是一级父节点且子节点也在列表中,跳过父级避免重复 const parent = fullIndustryTree.value.find(p => String(p.id) === id) @@ -712,16 +721,16 @@ const aiIndustryNames = computed(() => { continue } const name = resolveFullIndustryName(id) - if (name) names.push(name) + if (name) items.push({ id, name }) } - return names.join('、') + return items }) -/** AI 推荐的岗位名称(ID 转文字,基于完整岗位树) */ -const aiCategoryNames = computed(() => { - if (!aiCategoryIds.value.length || !fullJobCategoryTree.value.length) return '' +/** AI 推荐的岗位列表(ID + 名称,用于提示条展示和点击) */ +const aiCategoryItems = computed<{ id: string; name: string }[]>(() => { + if (!aiCategoryIds.value.length || !fullJobCategoryTree.value.length) return [] const idSet = new Set(aiCategoryIds.value.map(String)) - const names: string[] = [] + const items: { id: string; name: string }[] = [] for (const id of aiCategoryIds.value) { // 如果该 ID 是一级父节点且下级子节点也在列表中,跳过 const lv1 = fullJobCategoryTree.value.find(p => String(p.id) === id) @@ -739,11 +748,17 @@ const aiCategoryNames = computed(() => { } if (isParentWithChild) continue const name = resolveFullCategoryName(id) - if (name) names.push(name) + if (name) items.push({ id, name }) } - return names.join('、') + return items }) +/** AI 推荐的行业名称(兼容旧逻辑,拼接字符串用于条件判断) */ +const aiIndustryNames = computed(() => aiIndustryItems.value.map(i => i.name).join('、')) + +/** AI 推荐的岗位名称(兼容旧逻辑,拼接字符串用于条件判断) */ +const aiCategoryNames = computed(() => aiCategoryItems.value.map(i => i.name).join('、')) + /** 是否显示 AI 推荐提示条 */ const showAiRecommendTip = computed(() => { return isRecommendTab.value && (aiIndustryNames.value || aiCategoryNames.value) @@ -765,6 +780,36 @@ function onCategoryChange(ids: number[]) { }) } +/** 点击 AI 推荐岗位词 — 将该岗位 ID 添加到筛选器(去重,最多3个) */ +function handleAddCategory(id: string) { + const numId = Number(id) + const current = selectedCategoryIds.value + if (current.includes(numId)) return // 已存在,不重复添加 + if (current.length >= 3) { + ElMessage.warning('最多选择3个分类,请先去掉一个再添加') + return + } + store.dispatch('saveJobIntention', { + ...store.state.jobIntention, + categoryIds: [...current, numId], + }) +} + +/** 点击 AI 推荐行业词 — 将该行业 ID 添加到筛选器(去重,最多3个) */ +function handleAddIndustry(id: string) { + const numId = Number(id) + const current = selectedIndustryIds.value + if (current.includes(numId)) return // 已存在,不重复添加 + if (current.length >= 3) { + ElMessage.warning('最多选择3个分类,请先去掉一个再添加') + return + } + store.dispatch('saveJobIntention', { + ...store.state.jobIntention, + industryIds: [...current, numId], + }) +} + /** 地区选择变更回调 */ function onRegionChange(codes: string[]) { store.dispatch('saveJobIntention', { @@ -1192,6 +1237,35 @@ function reloadFirstPage() { loadCurrentTab() } +/** 是否有任何筛选条件或搜索关键词处于激活状态 */ +const hasActiveFilters = computed(() => { + return selectedCategoryIds.value.length > 0 + || selectedIndustryIds.value.length > 0 + || selectedRegionCodes.value.length > 0 + || selectedEmploymentType.value !== null + || selectedCompanyTypes.value.length > 0 + || keyword.value.trim() !== '' +}) + +/** 清空所有筛选条件和搜索关键词,重新查询 */ +function clearAllFilters() { + // 清空搜索关键词 + keyword.value = '' + // 清空公司类型(本地状态 + 缓存) + selectedCompanyTypes.value = [] + saveCachedCompanyTypes([]) + // 清空筛选按钮的显示文字 + filters.value.forEach(f => { f.selected = '' }) + // 清空 store 中的分类筛选条件 + store.dispatch('saveJobIntention', { + ...store.state.jobIntention, + categoryIds: [], + industryIds: [], + regionCodes: [], + recruitCategory: null, + }) +} + /** 根据当前 Tab 加载对应列表 */ function loadCurrentTab() { if (isRecommendTab.value) {