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.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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 您尚未填写意向岗位,请补充完善信息。
+ 去完善
+
+
+
+
+
+
+
+
+
+ {{ 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 @@
+
+
+ 求职意向
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+