diff --git a/src/api/jobs.ts b/src/api/jobs.ts index c2b94d3..2bf8e32 100644 --- a/src/api/jobs.ts +++ b/src/api/jobs.ts @@ -108,6 +108,10 @@ export interface JobIntention { employmentType?: number | null /** 招聘分类:0=社招,1=校招,2=实习,3=其他 */ recruitCategory?: number | null + /** AI 推荐的岗位分类 ID 列表 */ + aiCategoryIds?: string[] + /** AI 推荐的行业 ID 列表 */ + aiIndustryIds?: string[] } /** diff --git a/src/assets/images/logo-offerpai-2.png b/src/assets/images/logo-offerpai-2.png new file mode 100644 index 0000000..ef62adf Binary files /dev/null and b/src/assets/images/logo-offerpai-2.png differ diff --git a/src/assets/images/nova-logo.png b/src/assets/images/nova-logo.png index 407641e..90e9c23 100644 Binary files a/src/assets/images/nova-logo.png and b/src/assets/images/nova-logo.png differ diff --git a/src/assets/styles/components/job-page-header.scss b/src/assets/styles/components/job-page-header.scss index 93fde55..a3dcce5 100644 --- a/src/assets/styles/components/job-page-header.scss +++ b/src/assets/styles/components/job-page-header.scss @@ -85,7 +85,7 @@ min-width: 0.20rem; height: 0.20rem; padding: 0 0.05rem; - border-radius: 50%; + border-radius: 0.1rem; background: #F3F4F6; font-size: 0.11rem; font-weight: 500; diff --git a/src/assets/styles/pages/jobs.scss b/src/assets/styles/pages/jobs.scss index 1c94697..7138e23 100644 --- a/src/assets/styles/pages/jobs.scss +++ b/src/assets/styles/pages/jobs.scss @@ -82,7 +82,85 @@ // 筛选条件外层白色背景条 &__filters-bar { border-radius: 0.12rem; - margin: 0 0.24rem 0.2rem 0.24rem; + margin: 0 0.24rem 0.5rem 0.24rem; + } + + // AI 推荐提示条外层 + &__ai-tip-wrapper { + position: relative; + margin: -0.38rem 0.24rem 0.12rem 0.24rem; + } + + // 尖角容器(用双伪元素实现:::before 画品牌色外三角,::after 画白色内三角遮住底边) + &__ai-tip-arrow { + position: absolute; + top: 0; + transform: translateX(-50%); + width: 0; + height: 0; + z-index: 2; + + // 外层三角(品牌色边框) + &::before { + content: ''; + position: absolute; + bottom: 100%; + left: 50%; + transform: translateX(-50%); + width: 0; + height: 0; + border-left: 0.07rem solid transparent; + border-right: 0.07rem solid transparent; + border-bottom: 0.12rem solid $accent; + } + + // 内层白色三角(覆盖外层内部,只露出约0.5px边框) + &::after { + content: ''; + position: absolute; + bottom: 100%; + left: 50%; + transform: translateX(-50%) translateY(1px); + width: 0; + height: 0; + border-left: 0.065rem solid transparent; + border-right: 0.065rem solid transparent; + border-bottom: 0.112rem solid $bg-white; + } + } + + // 提示条主体 + &__ai-tip { + position: relative; + background: $bg-white; + border: 1px solid $accent; + border-radius: 0.08rem; + padding: 0.08rem 0.12rem 0.07rem 0.12rem; + z-index: 1; + } + + // 提示条内容行 + &__ai-tip-content { + + } + + // Nova logo + &__ai-tip-logo { + width: 0.16rem; + height: 0.16rem; + flex: none; + } + + // 提示文字 + &__ai-tip-text { + font-size: 0.12rem; + line-height: 0.16rem; + color: $accent; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + vertical-align: text-top; + margin-left: 0.03rem; } // 筛选条件 @@ -171,14 +249,11 @@ display: flex; align-items: center; background: $bg-white; - border: 1px solid #E8E8E8; - border-radius: 0.2rem; - padding: 0.07rem 0.14rem; + border-radius: 0.08rem; + padding: 0.08rem 0.14rem; min-width: 1.6rem; - transition: border-color 0.2s ease; &:focus-within { - border-color: $accent; } } @@ -321,7 +396,7 @@ display: flex; gap: 0.08rem; flex-wrap: wrap; - margin-top: 0.08rem; + margin-top: 0.14rem; } &__job-tag { @@ -429,7 +504,7 @@ gap: 0.08rem; flex-wrap: wrap; min-width: 0; // 允许内容收缩触发换行 - margin-top: 0.06rem; + margin-top: 0.14rem; } &__company-tag { diff --git a/src/stores/index.ts b/src/stores/index.ts index 21da158..bd969f3 100644 --- a/src/stores/index.ts +++ b/src/stores/index.ts @@ -171,6 +171,8 @@ export default createStore({ industryIds: [], employmentType: null, recruitCategory: null, + aiCategoryIds: [], + aiIndustryIds: [], }, userInfo: null, showSettings: false, @@ -229,6 +231,8 @@ export default createStore({ industryIds: data.industryIds ?? [], employmentType: data.employmentType ?? null, recruitCategory: data.recruitCategory ?? null, + aiCategoryIds: data.aiCategoryIds ?? [], + aiIndustryIds: data.aiIndustryIds ?? [], } }, SET_USER_INFO(state, data: UserInfo | null) { @@ -315,6 +319,8 @@ export default createStore({ industryIds: [], employmentType: null, recruitCategory: null, + aiCategoryIds: [], + aiIndustryIds: [], }) }, diff --git a/src/views/Jobs.vue b/src/views/Jobs.vue index 8046150..50f1d44 100644 --- a/src/views/Jobs.vue +++ b/src/views/Jobs.vue @@ -20,11 +20,12 @@
-
+