diff --git a/api/index.js b/api/index.js index f7c5954..ae14a7b 100644 --- a/api/index.js +++ b/api/index.js @@ -124,4 +124,19 @@ export function getRenewalRecordByChooseRecId(pamars) { } export function checkOutInfo(pamars) { return fly.get(`/asdh5/checkOut/page`, pamars); +} +export function recruitmentList(pamars) { + return fly.get(`/recruitment/list`, pamars); +} +export function getDetailByGraduateId(pamars) { + return fly.get(`/recruitment/getDetailByGraduateId/${pamars.graduateId}`); +} +export function recruitmentDetail(pamars) { + return fly.get(`/recruitment/detail/${pamars.id}`); +} +export function graduateInfoCollection(data) { + return fly.post(`/mz/graduateInfoCollection/updateById`, data); +} +export function getPostListByType(pamars) { + return fly.get(`/recruitment/getPostListByType`, pamars); } \ No newline at end of file diff --git a/app.json b/app.json index 8bc67ce..9d58fad 100644 --- a/app.json +++ b/app.json @@ -44,7 +44,9 @@ "checkOutConfirm/index/index", "checkOutConfirm/sign/sign", "checkInUser/checkInUser", - "checkInWait/checkInWait" + "checkInWait/checkInWait", + "recruitment/recruitment", + "recruitment/detail/detail" ] }, { diff --git a/pages/index/index.js b/pages/index/index.js index 76e2040..571ae52 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -39,11 +39,11 @@ Page({ url: "/subpages/index/renewalApplication/renewalApplication", image:'../../images/icon/yanzu.png' }, - // { - // name: "问题反馈", - // url: "/subpages/bsPage/bsPage/bsPage", - // image:'../../images/icon/baoxiu.png' - // }, + { + name: "招聘信息", + url: "/subpages/index/recruitment/recruitment", + image:'../../images/icon/baoxiu.png' + }, // { // name: "外出申请", // url: "/subpages/goOut/goOut/goOut", diff --git a/pages/message/message.js b/pages/message/message.js index a304520..f2f13a3 100644 --- a/pages/message/message.js +++ b/pages/message/message.js @@ -84,6 +84,11 @@ onScrollToLower(e){ console.log(err); }) }, + toDetail(){ + wx.navigateTo({ + url: '/subpages/index/recruitment/recruitment?recommendShow=1' , + }) + } }) diff --git a/pages/message/message.wxml b/pages/message/message.wxml index b184073..2d6164c 100644 --- a/pages/message/message.wxml +++ b/pages/message/message.wxml @@ -1,7 +1,8 @@ - + + @@ -13,7 +14,6 @@ {{item.content}} - diff --git a/project.private.config.json b/project.private.config.json index 6711b21..36c2796 100644 --- a/project.private.config.json +++ b/project.private.config.json @@ -1,5 +1,5 @@ { - "libVersion": "3.9.3", + "libVersion": "3.9.2", "projectname": "epmet-apartment-mp", "setting": { "urlCheck": false, diff --git a/subpages/index/recruitment/detail/detail.js b/subpages/index/recruitment/detail/detail.js new file mode 100644 index 0000000..c504995 --- /dev/null +++ b/subpages/index/recruitment/detail/detail.js @@ -0,0 +1,207 @@ +// subpages/index/recruitment/detail/detail.js +import { recruitmentDetail } from '../../../../api/index' +Page({ + + /** + * 页面的初始数据 + */ + data: { + info: null, + id: '', + statusHeight: 0, + navigationHeight: 44, + otherJobs: [], // 其他职位列表 + currentPage: 1, + totalPages: 1 + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // 获取系统信息 + const systemInfo = wx.getSystemInfoSync() + this.setData({ + statusHeight: systemInfo.statusBarHeight, + navigationHeight: 44 + }) + + if(options.id){ + this.setData({ + id: options.id + }) + this.recruitmentDetail(options.id) + } + }, + + /** + * 获取招聘详情 + */ + recruitmentDetail(id){ + wx.showLoading({ + title: '加载中...', + }) + + recruitmentDetail({ id: id }).then(res=>{ + wx.hideLoading() + if(res.code === 200){ + this.setData({ + info: res.data + }) + // 获取其他职位 + // this.getOtherJobs() + } else { + wx.showToast({ + title: res.message || '获取详情失败', + icon: 'none' + }) + } + }).catch(err => { + wx.hideLoading() + wx.showToast({ + title: '网络错误', + icon: 'none' + }) + }) + }, + + /** + * 返回上一页 + */ + handleGoToBack() { + wx.navigateBack() + }, + + /** + * 获取其他职位 + */ + getOtherJobs() { + // 模拟其他职位数据 + // const mockOtherJobs = [ + // { + // id: 1001, + // position: '质量工程师', + // minWage: '9', + // maxWage: '12', + // publishTime: '2025-08-13', + // minEdu: '本科', + // workExp: '不限' + // }, + // { + // id: 1002, + // position: '销售工程师', + // minWage: '10', + // maxWage: '18', + // publishTime: '2025-08-13', + // minEdu: '本科', + // workExp: '不限' + // }, + // { + // id: 1003, + // position: '光学工程师', + // minWage: '7', + // maxWage: '9', + // publishTime: '2025-08-13', + // minEdu: '本科', + // workExp: '不限' + // } + // ] + + // this.setData({ + // otherJobs: mockOtherJobs, + // totalPages: 1 + // }) + }, + + /** + * 点击其他职位 + */ + onOtherJobTap(e) { + const item = e.currentTarget.dataset.item + wx.navigateTo({ + url: `/subpages/index/recruitment/detail/detail?id=${item.id}` + }) + }, + + /** + * 上一页 + */ + onPrevPage() { + if (this.data.currentPage > 1) { + this.setData({ + currentPage: this.data.currentPage - 1 + }) + // 这里可以调用API获取对应页面的数据 + } + }, + + /** + * 下一页 + */ + onNextPage() { + if (this.data.currentPage < this.data.totalPages) { + this.setData({ + currentPage: this.data.currentPage + 1 + }) + // 这里可以调用API获取对应页面的数据 + } + }, + + /** + * 申请职位 + */ + onApply() { + wx.showToast({ + title: '申请成功', + icon: 'success' + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/subpages/index/recruitment/detail/detail.json b/subpages/index/recruitment/detail/detail.json new file mode 100644 index 0000000..2f62586 --- /dev/null +++ b/subpages/index/recruitment/detail/detail.json @@ -0,0 +1,8 @@ +{ + "usingComponents": { + "van-icon": "@vant/weapp/icon/index", + "van-button": "@vant/weapp/button/index", + "van-loading": "@vant/weapp/loading/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/subpages/index/recruitment/detail/detail.wxml b/subpages/index/recruitment/detail/detail.wxml new file mode 100644 index 0000000..0b73b0d --- /dev/null +++ b/subpages/index/recruitment/detail/detail.wxml @@ -0,0 +1,111 @@ + + + + + + + + + 职位详情 + + + + + + + + {{info.positionCategory || ''}} + + {{info.minWage || ''}}-{{info.maxWage || ''}}k + + + + {{info.minEdu || ''}} + {{info.workExp || ''}} + {{info.recruitingNumbers }}人 + + + 招聘时间: {{info.startTime || ''}}至{{info.endTime || ''}} + 发布: {{info.releaseTime || ''}} + + + + + 职位详情 + + + + 岗位描述: + + {{info.jobDescription || '无'}} + + + + + + + + + 公司详情 + + + + + {{info.companyName || ''}} + + {{info.area || ''}} + {{info.companyType || ''}} + + + + + + {{info.companyAddr || ''}} + + + {{info.contactPerson}}{{info.contactPhone || ''}} + + + + + {{info.companyProfile || ''}} + + + + + + + + + + + + \ No newline at end of file diff --git a/subpages/index/recruitment/detail/detail.wxss b/subpages/index/recruitment/detail/detail.wxss new file mode 100644 index 0000000..20f5c73 --- /dev/null +++ b/subpages/index/recruitment/detail/detail.wxss @@ -0,0 +1,311 @@ +/* subpages/index/recruitment/detail/detail.wxss */ + +.detail-container { + background-color: #f8f8f8; + min-height: 100vh; +} + +/* 头部样式 - 继承自recruitment页面 */ +.header { + width: 100%; + position: relative; +} + +.navigation { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + color: #333333; + font-size: 30rpx; + position: relative; + z-index: 10; + font-weight: 600; +} + +.navigation-back { + position: absolute; + left: 0rpx; + z-index: 1000; + width: 80rpx; + height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; +} + +/* 通用flex样式 */ +.flex { + display: flex; +} + +.flex-sb { + justify-content: space-between; + align-items: center; +} + +/* 内容区域 */ +.content-body { + padding: 20rpx; + margin-top: 50rpx; +} + +/* 职位基本信息卡片 */ +.job-basic-info { + border-radius: 12rpx; + padding: 30rpx; + margin-bottom: 20rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +.job-title { + font-size: 36rpx; + font-weight: bold; + color: #333; + margin-bottom: 20rpx; +} + +.job-salary { + font-size: 32rpx; + font-weight: bold; + margin-bottom: 20rpx; +} + +.job-meta { + display: flex; + gap: 20rpx; + margin-bottom: 20rpx; + flex-wrap: wrap; +} + +.meta-item { + font-size: 26rpx; + color: #666; + background-color: #f5f5f5; + padding: 8rpx 16rpx; + border-radius: 4rpx; +} + +.job-time { + font-size: 24rpx; + color: #999; + border-top: 1rpx solid #f0f0f0; + padding-top: 20rpx; + line-height: 1.6; + display: flex; + justify-content: space-between; + align-items: center; +} + +/* 职位详情部分 */ +.job-detail-section { + background-color: #fff; + border-radius: 12rpx; + padding: 30rpx; + margin-bottom: 50rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +.section-title { + font-size: 32rpx; + font-weight: bold; + color: #333; + margin-bottom: 20rpx; + padding-bottom: 10rpx; +} + +.detail-content { + line-height: 1.6; +} + +.detail-item { + margin-bottom: 30rpx; +} + +.item-title { + font-size: 28rpx; + font-weight: 600; + color: #333; + display: block; + margin-bottom: 10rpx; +} + +.item-content { + font-size: 26rpx; + color: #666; + line-height: 1.8; +} + +.item-content text { + display: block; + margin-bottom: 8rpx; +} + +/* 底部操作按钮 */ +.action-buttons { + position: fixed; + bottom: 0; + left: 0; + right: 0; + background-color: #fff; + padding: 20rpx 30rpx; + box-shadow: 0 -2rpx 8rpx rgba(0, 0, 0, 0.1); + z-index: 100; +} + +/* 公司详情部分 */ +.company-detail-section { + background-color: #fff; + border-radius: 12rpx; + padding: 30rpx; + margin-bottom: 20rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +.company-info-card { + border-radius: 8rpx; +} + +.company-header { + display: flex; + flex-direction: column; + margin-bottom: 20rpx; +} + +.company-logo { + width: 120rpx; + height: 120rpx; + margin-right: 20rpx; + border-radius: 8rpx; + overflow: hidden; + background-color: #f5f5f5; + display: flex; + align-items: center; + justify-content: center; +} + +.logo-image { + width: 100%; + height: 100%; + border-radius: 8rpx; +} + +.company-basic { + flex: 1; +} + +.company-name { + font-size: 32rpx; + font-weight: bold; + color: #333; + margin-bottom: 10rpx; +} + +.company-tags { + display: flex; + gap: 12rpx; + margin-bottom: 15rpx; +} + +.tag { + font-size: 24rpx; + color: #666; + background-color: #f5f5f5; + padding: 4rpx 12rpx; + border-radius: 4rpx; +} + +.company-contact { + display: flex; + /* flex-direction: column; */ + gap: 8rpx; +} + +.contact-item { + font-size: 24rpx; + color: #666; + line-height: 1.4; +} + +.company-description { + font-size: 26rpx; + color: #666; + line-height: 1.8; + text-align: justify; +} + +/* 其他职位部分 */ +.other-jobs-section { + background-color: #fff; + border-radius: 12rpx; + padding: 30rpx; + margin-bottom: 20rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +.other-jobs-section .job-item { + border: 1rpx solid #f0f0f0; + border-radius: 8rpx; + padding: 20rpx; + margin-bottom: 15rpx; + background-color: #fafafa; +} + +.other-jobs-section .job-item:last-child { + margin-bottom: 0; +} + +.job-title-small { + font-size: 28rpx; + font-weight: 600; + color: #333; +} + +.job-salary-small { + font-size: 26rpx; + font-weight: bold; +} + +.job-meta-small { + display: flex; + gap: 15rpx; + margin-top: 10rpx; +} + +.meta-small { + font-size: 22rpx; + color: #999; + background-color: #f0f0f0; + padding: 4rpx 8rpx; + border-radius: 4rpx; +} + +/* 分页导航 */ +.pagination { + display: flex; + align-items: center; + justify-content: center; + gap: 30rpx; + padding: 20rpx; + background-color: #fff; + border-radius: 12rpx; + margin-bottom: 100rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +.page-info { + font-size: 26rpx; + color: #666; + min-width: 80rpx; + text-align: center; +} + +/* 加载状态 */ +.loading-section { + display: flex; + justify-content: center; + align-items: center; + padding: 100rpx 40rpx; + min-height: 50vh; +} \ No newline at end of file diff --git a/subpages/index/recruitment/recruitment.js b/subpages/index/recruitment/recruitment.js new file mode 100644 index 0000000..83cda71 --- /dev/null +++ b/subpages/index/recruitment/recruitment.js @@ -0,0 +1,276 @@ +// subpages/index/recruitment/recruitment.js +import { recruitmentList,dictDataList,getDetailByGraduateId,getPostListByType } from "../../../api/index" +const app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + searchValue: '', + areaValue: '', + industryValue: '', + positionValue: '', // 默认选中"岗位" + salaryValue: '', + showTip: true, + loading: false, + navigationHeight: 44, + statusHeight: 20, + jobList: [], + // 筛选选项 + areaOptions: [], + industryOptions: [], + positionOptions: [ + { text: '岗位', value: '' }, + ], + salaryOptions: [], + userInfo: {}, + recommendShow: true + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + // 获取系统信息,设置导航栏高度 + const systemInfo = wx.getSystemInfoSync(); + const navigationHeight = systemInfo.platform === 'ios' ? 44 : 48; + this.setData({ + navigationHeight: navigationHeight, + statusHeight: systemInfo.statusBarHeight + }); + this.getDictData(); + if(options.recommendShow){ + this.setData({ + recommendShow:false + }) + } + }, + async getDetailByGraduateId() { + try { + const res = await getDetailByGraduateId({ graduateId: app.globalData.userInfo.graduateId }); + if (res.code === 200) { + this.setData({ + userInfo: res.data || {}, + showTip: res.data.hopeWorkAddress && res.data.hopeCareer && res.data.hopeSalary&&res.data.hopePosition, + areaValue:this.data.areaOptions.find(item => item.dictValue == res.data.hopeWorkAddress)?.text || '', + industryValue:this.data.industryOptions.find(item => item.dictValue == res.data.hopeCareer)?.text || '', + salaryValue:this.data.salaryOptions.find(item => item.dictValue == res.data.hopeSalary)?.text || '', + + }); + } + } catch (error) { + if(error.data){ + this.setData({ + userInfo: error.data || {}, + showTip: error.data.hopeWorkAddress && error.data.hopeCareer && error.data.hopeSalary&&error.data.hopePosition, + areaValue:this.data.areaOptions.find(item => item.dictValue == error.data.hopeWorkAddress)?.text || '', + industryValue:this.data.industryOptions.find(item => item.dictValue == error.data.hopeCareer)?.text || '', + salaryValue:this.data.salaryOptions.find(item => item.dictValue == error.data.hopeSalary)?.text || '', + + }); + } + } finally { + this.getPostListByType() + this.loadJobList(); + } + + }, + async getDictData() { + try { + const res1 = await dictDataList({ dictType: 'sys_career' }); + if (res1.code === 200) { + this.setData({ + industryOptions: [ + { text: '行业', value: '' }, + ...res1.rows.map(item => ({ + text: item.dictLabel, + value:item.dictLabel, + ...item + })) + ] + }); + } + const res2 = await dictDataList({ dictType: 'sys_salary' }); + if (res2.code === 200) { + this.setData({ + salaryOptions: [ + { text: '薪资', value: '' }, + ...res2.rows.map(item => ({ + text: item.dictLabel, + value:item.dictLabel, + ...item + })) + ] + }); + } + const res3 = await dictDataList({ dictType: 'working_place' }); + if (res3.code === 200) { + this.setData({ + areaOptions: [ + { text: '区域', value: '' }, + ...res3.rows.map(item => ({ + text: item.dictLabel, + value:item.dictLabel, + ...item + })) + ] + }); + } + this.getDetailByGraduateId(); + } catch (error) { + console.error('获取字典数据失败:', error); + } + }, + + /** + * 搜索 + */ + onSearch() { + console.log('搜索关键词:', this.data.searchValue); + this.loadJobList(); + }, + + /** + * 城区筛选 + */ + onAreaChange(event) { + this.setData({ + areaValue: event.detail + }); + this.loadJobList(); + }, + + /** + * 行业筛选 + */ + onIndustryChange(event) { + this.setData({ + industryValue: event.detail, + }); + this.getPostListByType(true); + this.loadJobList(); + }, + async getPostListByType(change) { + const res = await getPostListByType({ type: this.data.industryValue }); + if (res.code === 200) { + // 重置岗位选项,确保"岗位"选项在最前面 + const basePositionOptions = [{ text: '岗位', value: '' }]; + const newPositionOptions = res.data.map(item => ({ + text: item, + value: item, + })); + this.setData({ + positionOptions: [ + ...basePositionOptions, + ...newPositionOptions + ], + positionValue:change?'':this.data.userInfo.hopePosition?this.data.userInfo.hopePosition:'' // 设置为空字符串,对应"岗位"选项的value + }); + console.log(this.data.positionOptions,this.data.positionValue); + } + }, + + /** + * 岗位筛选 + */ + onPositionChange(event) { + this.setData({ + positionValue: event.detail + }); + this.loadJobList(); + }, + + /** + * 薪资筛选 + */ + onSalaryChange(event) { + this.setData({ + salaryValue: event.detail + }); + this.loadJobList(); + }, + + + /** + * 去完善信息 + */ + goComplete() { + wx.navigateTo({ + url: '/subpages/mine/editUser/editUser' + }); + }, + + /** + * 点击职位 + */ + onJobTap(event) { + const item = event.currentTarget.dataset.item; + wx.navigateTo({ + url: `/subpages/index/recruitment/detail/detail?id=${item.id}` + }); + }, + + /** + * 加载职位列表 + */ + async loadJobList() { + this.setData({ + loading: true + }); + + try { + const res = await recruitmentList({ + position:this.data.positionValue, + positionCategory: this.data.industryValue, + workAddr: this.data.areaValue, + hopeWage: this.data.salaryValue, + searchKeyword: this.data.searchValue, + }); + + if (res.code === 200) { + this.setData({ + jobList: res.rows || [], + loading: false + }); + } else { + this.setData({ + loading: false + }); + wx.showToast({ + title: '加载失败', + icon: 'none' + }); + } + } catch (error) { + console.error('加载招聘列表失败:', error); + this.setData({ + loading: false + }); + wx.showToast({ + title: '网络错误', + icon: 'none' + }); + } + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + // this.loadJobList(); + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + this.loadJobList(); + wx.stopPullDownRefresh(); + }, + handleGoToBack() { + wx.navigateBack({ + delta: 1 + }); + } +}) \ No newline at end of file diff --git a/subpages/index/recruitment/recruitment.json b/subpages/index/recruitment/recruitment.json new file mode 100644 index 0000000..a95459d --- /dev/null +++ b/subpages/index/recruitment/recruitment.json @@ -0,0 +1,11 @@ +{ + "usingComponents": { + "van-search": "@vant/weapp/search/index", + "van-dropdown-menu": "@vant/weapp/dropdown-menu/index", + "van-dropdown-item": "@vant/weapp/dropdown-item/index", + "van-tag": "@vant/weapp/tag/index", + "van-button": "@vant/weapp/button/index", + "van-icon": "@vant/weapp/icon/index" + }, + "navigationStyle": "custom" +} \ No newline at end of file diff --git a/subpages/index/recruitment/recruitment.wxml b/subpages/index/recruitment/recruitment.wxml new file mode 100644 index 0000000..65fd24e --- /dev/null +++ b/subpages/index/recruitment/recruitment.wxml @@ -0,0 +1,105 @@ + + + + + + + + + {{recommendShow ? '招聘信息' : '推荐岗位'}} + + + + + + + + + + + + + + + + + + + + + + + + + 您尚未填写意向岗位,请补充完善信息。 + 去完善 + + + + + + + + + {{ item.positionCategory }} + {{ item.minWage }}-{{ item.maxWage }} + + + {{ item.startTime ||''}} + {{ item.minEdu||'' }} + {{ item.workExp ||''}} + + + {{ item.companyName ||'' }} + 来源: 招聘e站 + + + + + + + + 加载中... + + + + + + 暂无招聘信息 + + + \ No newline at end of file diff --git a/subpages/index/recruitment/recruitment.wxss b/subpages/index/recruitment/recruitment.wxss new file mode 100644 index 0000000..802a973 --- /dev/null +++ b/subpages/index/recruitment/recruitment.wxss @@ -0,0 +1,195 @@ +/* subpages/index/recruitment/recruitment.wxss */ + +.recruitment-container { + background-color: #f8f8f8; + min-height: 100vh; +} + +/* 头部样式 */ +.header { + width: 100%; + background: linear-gradient(to bottom, rgba(255,255,255,0) 0%, rgba(255,255,255,0.3) 50%, rgba(255,255,255,0.8) 80%, rgba(255,255,255,1) 100%),linear-gradient(to right, #befeed 0%, #d5eefe 50%, #ebe9fb 100%);background-size: 100% 300rpx, 100% 300rpx;background-repeat: no-repeat; + position: relative; + height: 240rpx; +} +.content-body{ + margin-top: 40rpx; +} +.navigation { + width: 100%; + display: flex; + align-items: center; + justify-content: center; + color: #333333; + font-size: 30rpx; + position: relative; + z-index: 10; + font-weight: 600; +} + +/* 搜索框样式 */ +.search-section { + padding:0 30rpx ; +} + +/* 自定义搜索框内部样式 */ +.van-search__content { + background: #fff !important; + border-radius: 50rpx !important; + border: 1rpx solid #e5e5e5 !important; +} + +.van-search__field { + background: #fff !important; + border-radius: 50rpx !important; +} + +.van-field__input { + border-radius: 50rpx !important; +} + +/* 筛选区域样式 */ +.filter-section { + background-color: #fff; + border-top: 1rpx solid #eee; +} + +/* 温馨提示样式 */ +.tip-section { + background-color: #fff5e6; + border: 1rpx solid #ffcc99; + margin: 20rpx; + border-radius: 8rpx; +} + +.tip-content { + display: flex; + align-items: center; + padding: 20rpx; +} +.navigation-back{ + position: absolute; + left: 0rpx; + z-index: 1000; + width: 80rpx; + height: 80rpx; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; +} +.tip-text { + flex: 1; + margin-left: 12rpx; + font-size: 28rpx; +} + +/* 职位列表样式 */ +.job-list { + padding: 0 20rpx; +} + +.job-item { + background-color: #fff; + border-radius: 12rpx; + padding: 30rpx; + margin-bottom: 20rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); +} + +.job-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20rpx; +} + +.job-title { + font-size: 32rpx; + font-weight: bold; + color: #333; + flex: 1; +} + +.job-salary { + font-size: 32rpx; + font-weight: bold; +} + +.job-info { + display: flex; + gap: 20rpx; + margin-bottom: 20rpx; +} + +.job-date, +.job-degree, +.job-experience { + font-size: 26rpx; + color: #666; + background-color: #f5f5f5; + padding: 8rpx 16rpx; + border-radius: 4rpx; +} + +.company-info { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20rpx; +} + +.company-name { + font-size: 28rpx; + color: #333; + font-weight: 500; +} + +.company-source { + font-size: 24rpx; + color: #999; +} + +.job-tags { + display: flex; + gap: 12rpx; + flex-wrap: wrap; +} + +/* 加载状态样式 */ +.loading-section { + text-align: center; + padding: 40rpx; + color: #999; + font-size: 28rpx; +} + +/* 空状态样式 */ +.empty-section { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 100rpx 40rpx; +} + +.empty-image { + width: 200rpx; + height: 150rpx; + margin-bottom: 20rpx; +} + +.empty-text { + font-size: 28rpx; + color: #999; +} + +/* 下拉菜单自定义样式 */ +.van-dropdown-menu { + box-shadow: none; + border-bottom: 1rpx solid #eee; +} + +.van-dropdown-menu__title { + font-size: 28rpx; +} \ No newline at end of file diff --git a/subpages/mine/editUser/editUser.js b/subpages/mine/editUser/editUser.js index 1dfa690..b88535e 100644 --- a/subpages/mine/editUser/editUser.js +++ b/subpages/mine/editUser/editUser.js @@ -1,4 +1,5 @@ import { getUserInfo, bindIdCard } from "../../../api/user"; +import { dictDataList, getDetailByGraduateId, graduateInfoCollection,getPostListByType } from "../../../api/index"; // import { checkContentStatus } from "../../../../api/audit"; // const QQMapWX = require("../../../../utils/qqmap-wx-jssdk"); // const config = require("../../../../utils/config"); @@ -20,43 +21,126 @@ Page({ // name: "image", // }, ], + areaOptions: [], + industryOptions: [], + positionOptions: [], + salaryOptions: [], + showArea: false, + showIndustry: false, + showPosition: false, + showSalary: false, + areaValue: '', + industryValue: '', + positionValue: '', + salaryValue: '', + areaName: '', + industryName: '', + positionName: '', + salaryName: '', + form: {}, }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { - this.getUserInfo(); + this.getDictData(); }, + async getDictData() { + try { + const res1 = await dictDataList({ dictType: 'sys_career' }); + if (res1.code === 200) { + this.setData({ + industryOptions: [ + { text: '行业', value: '' }, + ...res1.rows.map(item => ({ + text: item.dictLabel, + value: item.dictValue, + ...item + })) + ] + }); + } + + const res2 = await dictDataList({ dictType: 'sys_salary' }); + if (res2.code === 200) { + this.setData({ + salaryOptions: [ + { text: '薪资', value: '' }, + ...res2.rows.map(item => ({ + text: item.dictLabel, + value: item.dictValue, + ...item + })) + ] + }); + } + + const res3 = await dictDataList({ dictType: 'working_place' }); + if (res3.code === 200) { + this.setData({ + areaOptions: [ + { text: '区域', value: '' }, + ...res3.rows.map(item => ({ + text: item.dictLabel, + value: item.dictValue, + ...item + })) + ] + }); + } + this.getUserInfo(); + } catch (error) { + console.error('获取字典数据失败:', error); + } + }, + async getPostListByType() { + const res = await getPostListByType({ type: this.data.industryName }); + if (res.code === 200) { + // 重置岗位选项,确保"岗位"选项在最前面 + const basePositionOptions = [{ text: '岗位', value: '' }]; + const newPositionOptions = res.data.map(item => ({ + text: item, + value: item, + })); + + this.setData({ + positionOptions: [ + ...basePositionOptions, + ...newPositionOptions + ], + }); + } +}, /** * 生命周期函数--监听页面初次渲染完成 */ - onReady() {}, + onReady() { }, /** * 生命周期函数--监听页面显示 */ - onShow() {}, + onShow() { }, /** * 生命周期函数--监听页面隐藏 */ - onHide() {}, + onHide() { }, /** * 生命周期函数--监听页面卸载 */ - onUnload() {}, + onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ - onPullDownRefresh() {}, + onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ - onReachBottom() {}, + onReachBottom() { }, chooseAvatar() { wx.chooseMedia({ count: 1, // 最多选择 1 张图片 @@ -89,7 +173,7 @@ Page({ /** * 用户点击右上角分享 */ - onShareAppMessage() {}, + onShareAppMessage() { }, getUserInfo() { getUserInfo().then((res) => { this.setData({ @@ -100,14 +184,49 @@ Page({ remainingDays: res.data.leftQuota, }); }); + getDetailByGraduateId({ graduateId: app.globalData.userInfo.graduateId }).then((res) => { + if (res.code === 200) { + this.setData({ + areaName: this.data.areaOptions.find(item => item.dictValue == res.data.hopeWorkAddress)?.text || '', + industryName: this.data.industryOptions.find(item => item.dictValue == res.data.hopeCareer)?.text || '', + positionName: res.data.hopePosition || '', + positionValue: res.data.hopePosition ||'', + salaryName: this.data.salaryOptions.find(item => item.dictValue == res.data.hopeSalary)?.text || '', + form: res.data, + areaValue: res.data.hopeWorkAddress, + industryValue: res.data.hopeCareer, + salaryValue: res.data.hopeSalary, + }); + if(this.data.industryName){ + this.getPostListByType(); + } + } + }).catch(err=>{ + if(err.data){ + this.setData({ + areaName: this.data.areaOptions.find(item => item.dictValue == err.data.hopeWorkAddress)?.text || '', + industryName: this.data.industryOptions.find(item => item.dictValue == err.data.hopeCareer)?.text || '', + positionName: res.data.hopePosition || '', + positionValue: err.data.hopePosition ||'', + salaryName: this.data.salaryOptions.find(item => item.dictValue == err.data.hopeSalary)?.text || '', + form: err.data, + areaValue: err.data.hopeWorkAddress, + industryValue: err.data.hopeCareer, + salaryValue: err.data.hopeSalary, + }); + if(this.data.industryName){ + this.getPostListByType(); + } + } + }); }, onsubmit() { - if(this.data.idCard.length !== 18){ - wx.showToast({ - title: '请确认身份证号', - icon:'none' - }) - return false + if (this.data.idCard.length !== 18) { + wx.showToast({ + title: '请确认身份证号', + icon: 'none' + }) + return false } bindIdCard({ idCard: this.data.idCard, @@ -115,10 +234,107 @@ Page({ phone: this.data.mobile, }).then((res) => { if (res.code == 200) { - wx.showToast({ - title: res.msg, + let parm = { + hopeCareer : this.data.industryValue, + hopeSalary : this.data.salaryValue, + hopeWorkAddress : this.data.areaValue, + hopePosition : this.data.positionValue, + id:this.data.form.id, + graduateId:this.data.form.graduateId, + } + + graduateInfoCollection(parm).then((res) => { + if (res.code == 200) { + wx.showToast({ + title: res.msg, + }); + } + }).catch(err=>{ + wx.showToast({ + title: err.msg, + icon:"none" + }); }); } }); }, + onChangeArea() { + this.setData({ + showArea: true, + }); + }, + onChangeIndustry() { + this.setData({ + showIndustry: true, + }); + }, + onChangePosition() { + this.setData({ + showPosition: true, + }); + }, + onChangeSalary() { + this.setData({ + showSalary: true, + }); + }, + confirmArea(e) { + this.setData({ + areaValue: e.detail.value.value, + showArea: false, + areaName: e.detail.value.text, + }); + }, + confirmIndustry(e) { + this.setData({ + industryValue: e.detail.value.value, + showIndustry: false, + industryName: e.detail.value.text, + }); + this.getPostListByType(); + }, + confirmPosition(e) { + this.setData({ + positionValue: e.detail.value.value, + showPosition: false, + positionName: e.detail.value.text, + }); + }, + confirmSalary(e) { + this.setData({ + salaryValue: e.detail.value.value, + showSalary: false, + salaryName: e.detail.value.text, + }); + }, + onCancelArea() { + this.setData({ + showArea: false, + areaName: '', + areaValue: '', + }); + }, + onCancelIndustry() { + this.setData({ + showIndustry: false, + industryName: '', + industryValue: '', + industryValue: '', + }); + }, + onCancelPosition() { + this.setData({ + showPosition: false, + positionName: '', + positionValue: '', + }); + + }, + onCancelSalary() { + this.setData({ + showSalary: false, + salaryName: '', + salaryValue: '', + }); + }, }); diff --git a/subpages/mine/editUser/editUser.wxml b/subpages/mine/editUser/editUser.wxml index 5e68002..c8a95c7 100644 --- a/subpages/mine/editUser/editUser.wxml +++ b/subpages/mine/editUser/editUser.wxml @@ -26,7 +26,38 @@ + + + 求职意向 + + + + + + + + + + + + + + + + + + + + + + + + + + +