From 7e86ec5ea08053bbe5f4d6e04181535296465ac0 Mon Sep 17 00:00:00 2001 From: TianyangZhang Date: Wed, 25 Mar 2026 13:12:57 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=E9=A6=96=E9=A1=B5=E4=B8=89?= =?UTF-8?q?=E6=A0=8F=E5=B8=83=E5=B1=80=E5=AE=8C=E5=85=A8=E9=87=8D=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BC=81=E4=B8=9A=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E5=99=A8=E5=92=8C=E5=B2=97=E4=BD=8D=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 重构首页为三栏联动布局(企业 + 岗位 + 详情) - 左栏:深蓝背景企业列表,支持集团和子公司分层显示 - 选中企业时显示金色左边框 + 背景色变化 - 每个企业/子公司显示实时在招岗位数 - 子公司采用缩进 + 树形连线视觉 - 中栏:选中企业的岗位列表 - 岗位卡片显示位置/薪资/类别标签 - 朱红左边框高亮选中岗位 - 右栏:岗位详情内容(完整复制 JobDetailView) - Banner:深蓝红色渐变背景,显示岗位名/薪资/企业 - 操作:收藏 + 投递按钮,权限校验 - 详情:信息网格 + 职位介绍 + 工作地点 + 企业卡片 - 完整的投递流程和状态反馈 - 配色系统: - 深蓝 #0E1E3D(左栏背景) - 朱红 #B5272C(选中、强调) - 金色 #C8973A(accent) - 米色 #FAF7F3(右侧背景) - 完整的加载/错误/空状态处理 - 骨架屏动画和交互反馈 Co-Authored-By: Claude Haiku 4.5 --- offer_frontend/src/api/jobs.js | 2 + offer_frontend/src/api/resumes.js | 3 + offer_frontend/src/views/portal/HomeView.vue | 711 ++++++++++++++++++- 3 files changed, 692 insertions(+), 24 deletions(-) diff --git a/offer_frontend/src/api/jobs.js b/offer_frontend/src/api/jobs.js index 1569cf0..e82d4d4 100644 --- a/offer_frontend/src/api/jobs.js +++ b/offer_frontend/src/api/jobs.js @@ -6,3 +6,5 @@ export const manageJobs = (params) => client.get('/jobs/manage/', { params }) export const createJob = (data) => client.post('/jobs/manage/', data) export const updateJob = (id, data) => client.patch(`/jobs/manage/${id}/`, data) export const deleteJob = (id) => client.delete(`/jobs/manage/${id}/`) +export const toggleFavorite = (id) => client.post(`/jobs/public/${id}/favorite/`) +export const getMyFavorites = () => client.get('/jobs/favorites/') diff --git a/offer_frontend/src/api/resumes.js b/offer_frontend/src/api/resumes.js index 1464454..bc17067 100644 --- a/offer_frontend/src/api/resumes.js +++ b/offer_frontend/src/api/resumes.js @@ -2,3 +2,6 @@ import client from './client' export const getMyResume = () => client.get('/resumes/me/') export const updateMyResume = (data) => client.patch('/resumes/me/', data) +export const uploadResumeAttachment = (formData) => client.patch('/resumes/me/', formData, { + headers: { 'Content-Type': 'multipart/form-data' } +}) diff --git a/offer_frontend/src/views/portal/HomeView.vue b/offer_frontend/src/views/portal/HomeView.vue index 0778fab..b68dabf 100644 --- a/offer_frontend/src/views/portal/HomeView.vue +++ b/offer_frontend/src/views/portal/HomeView.vue @@ -1,37 +1,700 @@ + +