7 maanden geleden
bovenliggende
commit
c2301660c2
6 gewijzigde bestanden met toevoegingen van 279 en 175 verwijderingen
  1. 1 1
      my/order/pay.vue
  2. 90 71
      pages/index/index.vue
  3. 6 1
      pages/jobManagement/jobManagement.vue
  4. 5 5
      pages/my/index.vue
  5. 116 92
      pages/my/jobPosting.vue
  6. 61 5
      pages/my/jobPostingSecond.vue

+ 1 - 1
my/order/pay.vue

@@ -179,7 +179,7 @@
 				<!-- 公司介绍卡片 -->
 				<view class="company-intro-card" @click="goInfo(info.company.companyId)">
 					<view class="company-avatar">
-						<image :src="info.company.companyLogo!=null?info.company.companyLogo:'../../../static/logo.png'"
+						<image :src="info.company?info.company.companyLogo:'../../../static/logo.png'"
 							style="width: 95rpx;height: 95rpx;border-radius: 50%;" mode="aspectFill"></image>
 					</view>
 					<view class="company-info">

+ 90 - 71
pages/index/index.vue

@@ -264,15 +264,16 @@
 											<view class="gwList-box-item-box-info-l flex align-center">
 												<image
 													:src="item.hr&&item.hr.hrImg?item.hr.hrImg:'../../static/logo.png'"
-													style="width: 58rpx;height: 58rpx;border-radius: 50%;"
-													mode=""></image>
+													style="width: 58rpx;height: 58rpx;border-radius: 50%;" mode="">
+												</image>
 												<view class="company-info-text">
 													{{item.user.userName?item.user.userName:'未知'}}·{{item.hr.hrPosition?item.hr.hrPosition:'未知'}}
 												</view>
-												<view v-if="item.respondTime" class="reply-time">{{item.respondTime}}</view>
+												<view v-if="item.respondTime" class="reply-time">{{item.respondTime}}
+												</view>
 											</view>
 											<view class="location-text">
-												{{item.distance}} {{item.county}} 
+												{{item.distance}} {{item.county}}
 											</view>
 										</view>
 									</view>
@@ -446,8 +447,9 @@
 				<view class="qyList flex justify-center">
 					<view class="qyList-box">
 						<view class="qyList-box-item flex justify-center" v-for="(item,index) in datasList" :key="index"
-							@click="goNav('/pages/talentSearch/resumeDetail?resumesId='+item.resumesId+'&postPushId='+jobSxTypeList[currentJobSx].id)">  <!-- /pages/index/game/orderDet  -->
-							
+							@click="goNav('/pages/talentSearch/resumeDetail?resumesId='+item.resumesId+'&postPushId='+jobSxTypeList[currentJobSx].id)">
+							<!-- /pages/index/game/orderDet  -->
+
 							<view class="qyList-box-item-box">
 								<view class="qyList-box-item-info flex justify-between align-center">
 									<view class="qyList-box-item-info-l">
@@ -470,8 +472,8 @@
 											style="width: 95rpx;height: 95rpx;border-radius: 50%;" mode=""></image>
 									</view>
 								</view>
-						
-								<view class="qyList-box-item-job flex align-center" >
+
+								<view class="qyList-box-item-job flex align-center">
 									<image src="../../static/images/qi.png"
 										style="width: 30rpx;height: 32rpx;margin-right: 16rpx;" mode=""></image>
 									<block v-if="item.workType">
@@ -488,16 +490,15 @@
 									求职期望:{{item.expectedPosition}}
 								</view>
 								<view class="resume-skills" v-if="item.skills && item.skills.length > 0">
-							<!-- 	  <text class="skills-label">技能标签:</text> -->
-								  <view class="skills-tags flex flex-wrap">
-								    <text class="tag-item" 
-								          v-for="(skill, skillIdx) in item.skills.split(',')" 
-								          :key="skillIdx">
-								      {{skill}}
-								    </text>
-								  </view>
+									<!-- 	  <text class="skills-label">技能标签:</text> -->
+									<view class="skills-tags flex flex-wrap">
+										<text class="tag-item" v-for="(skill, skillIdx) in item.skills.split(',')"
+											:key="skillIdx">
+											{{skill}}
+										</text>
+									</view>
 								</view>
-								
+
 								<view class="qyList-box-item-rem" v-if="item.workContent">
 									优势:{{item.workContent}}
 								</view>
@@ -893,19 +894,29 @@
 					})
 					switch (item.name) {
 						case '学历要求':
-							this.education = arr.join(',')
+
+							//this.education = arr.join(',')
+							this.education = item.list[0].value == '不限' ? '' : item.list[0].value
 							break;
 						case '薪资范围(单选)':
-							this.salaryRange = arr.join(',')
+							//this.salaryRange = arr.join(',')
+
+							this.salaryRange = item.list[0].value == '不限' ? '' : item.list[0].value
 							break;
 						case '经验要求':
-							this.experience = arr.join(',')
+							//this.experience = arr.join(',')
+
+							this.experience = item.list[0].value == '不限' ? '' : item.list[0].value
 							break;
 						case '公司规模':
-							this.companyPeople = arr.join(',')
+							//this.companyPeople = arr.join(',')
+
+							this.companyPeople = item.list[0].value == '不限' ? '' : item.list[0].value
 							break;
 						case '行业':
-							this.industry = arr.join(',')
+							//this.industry = arr.join(',')
+
+							this.industry = item.list[0].value == '不限' ? '' : item.list[0].value
 							break;
 					}
 
@@ -1035,7 +1046,7 @@
 			},
 			isSameName(className, name) {
 				let str1 = className.trim();
-				if(str2==null)
+				if (str2 == null)
 					return false;
 				let str2 = name.trim();
 				if (str1.length !== str2.length) {
@@ -1273,13 +1284,14 @@
 					expectedPosition: this.jobSxTypeList[this.currentJobSx].projectName, //岗位名称
 					screen: +this.currentJobSxs + 1, //1推荐 2最新
 					expectedCity: this.city == '全国' ? '' : this.city, //城市
-					resumesCompensation: this.salaryRange, //薪资范围
-					degree: this.education, //学历
-					resumesWorkExperience: this.experience, //经验
-					industryName: this.industry, //行业
+					salaryRange: this.salaryRange, //薪资范围
+					eduRange: this.education, //学历
+					expRange: this.experience, //经验
+					//industryName: this.industry, //行业
 					// companyPeople: this.companyPeople, //公司规模
 					lng: this.longitude,
 					lat: this.latitude,
+					//isRecommend:this.currentJobSxs==1?this.currentJobSxs:0,//推荐
 					companyId: uni.getStorageSync('companyId') ? uni.getStorageSync('companyId') : ''
 
 				}
@@ -1295,12 +1307,12 @@
 						// 		item.positionWelfare = []
 						// 	}
 						// })
-						
-						  const list = res.data.records.map(item => {
-						    // 若技能字段为其他名称(如 skillTags),需映射为 skills
-						    item.skills = item.skillTags || ''; 
-						    return item;
-						  });
+
+						const list = res.data.records.map(item => {
+							// 若技能字段为其他名称(如 skillTags),需映射为 skills
+							item.skills = item.skillTags || '';
+							return item;
+						});
 						if (this.page == 1) {
 							this.datasList = list
 						} else {
@@ -1321,18 +1333,21 @@
 				}
 				this.$Request.getT('/app/postPush/getCompanyClassify', data).then(res => {
 					if (res.code == 0) {
-						let arr = [/* {
-							projectName: '',
-							name: '全部',
-						}, */]
-						if(res.data.length==0){
-							   uni.navigateTo({
-							   	url: '/pages/my/jobPosting?companyId='+companyId+'&status='+this.companyStatus+'&companyName='+this.companyName
-							   })       
+						let arr = [
+							/* {
+														projectName: '',
+														name: '全部',
+													}, */
+						]
+						if (res.data.length == 0) {
+							uni.navigateTo({
+								url: '/pages/my/jobPosting?companyId=' + companyId + '&status=' + this
+									.companyStatus + '&companyName=' + this.companyName
+							})
 						}
 						res.data.map(item => {
 							let obj = {
-								id:item.postPushId,
+								id: item.postPushId,
 								projectName: item.ruleClassifyName,
 								name: item.ruleClassifyName,
 							}
@@ -1467,11 +1482,13 @@
 				}).then(res => {
 					if (res.code == 0) {
 						let arr = res.data
-						let classRule = [/* {
-							id: '',
-							name: '',
-							label: '全部'
-						} */]
+						let classRule = [
+							/* {
+														id: '',
+														name: '',
+														label: '全部'
+													} */
+						]
 
 						let industry = this.directionList
 						var industryArr = this.industry == '' ? [] : this.industry.split(',')
@@ -2623,30 +2640,32 @@
 		width: 100%;
 		height: auto;
 
-  /* 技能标签区域 */
-  .resume-skills {
-    margin: 20rpx 0; // 与上下模块的间距
-
-    .skills-label {
-      font-size: 24rpx;
-      color: #212121;
-      font-weight: 500;
-      display: block;
-      margin-bottom: 12rpx;
-    }
-
-    .skills-tags {
-      gap: 16rpx; // 标签间距
-
-      .tag-item {
-        background: #F6F6F6;
-        color: #666666;
-        font-size: 22rpx;
-        padding: 8rpx 20rpx;
-        border-radius: 8rpx;
-        line-height: 32rpx;
-      }
-    }}
+		/* 技能标签区域 */
+		.resume-skills {
+			margin: 20rpx 0; // 与上下模块的间距
+
+			.skills-label {
+				font-size: 24rpx;
+				color: #212121;
+				font-weight: 500;
+				display: block;
+				margin-bottom: 12rpx;
+			}
+
+			.skills-tags {
+				gap: 16rpx; // 标签间距
+
+				.tag-item {
+					background: #F6F6F6;
+					color: #666666;
+					font-size: 22rpx;
+					padding: 8rpx 20rpx;
+					border-radius: 8rpx;
+					line-height: 32rpx;
+				}
+			}
+		}
+
 		.qyList-box {
 			width: 716rpx;
 			height: 100%;

+ 6 - 1
pages/jobManagement/jobManagement.vue

@@ -180,7 +180,12 @@ export default {
       this.getJobList();
     },
     // 原有方法保持不变...
-    goBack() { uni.navigateBack(); },
+    goBack() { 
+		uni.switchTab({
+			url: '/pages/my/index'
+		});
+		
+	 },
     goNav(url) { uni.navigateTo({ url }); },
     publishNewJob() { uni.navigateTo({ url: '/package/addJob/addJob' }); },
     getJobStatusClass(job) { /* 原有逻辑不变 */ },

+ 5 - 5
pages/my/index.vue

@@ -311,9 +311,9 @@
 							</view>
 						</view>
 					</view>
-					<view class="beian">客服电话 400-000-0100 工作时间08:00-22:00</view>
+					<!-- <view class="beian">客服电话 400-000-0100 工作时间08:00-22:00</view> -->
 					<view class="beian">人力资源服务许可证 营业执照 深圳市人社局监督电话</view>
-					<view class="beian">鄂ICP备 2312321232111 鄂ICP证123123号</view>
+					<view class="beian">粤ICP备2025494494号</view>
 				</view>
 			</view>
 		</block>
@@ -712,14 +712,14 @@
 										<view class="" style="color: #1a1a1a; font-size: 24rpx; margin-top: 15rpx">
 											退出登录
 										</view>
-									</view> -->
+									</view> --> 
 								</view>
 							</view>
 						</view>
 					</view>
-					<view class="beian">客服电话 400-000-0100 工作时间08:00-22:00</view>
+		<!-- 			<view class="beian">客服电话 400-000-0100 工作时间08:00-22:00</view> -->
 					<view class="beian">人力资源服务许可证 营业执照 深圳市人社局监督电话</view>
-					<view class="beian">鄂ICP备 2312321232111 鄂ICP证123123号</view>
+					<view class="beian">粤ICP备2025494494号</view>
 				</view>
 			</view>
 		</block>

+ 116 - 92
pages/my/jobPosting.vue

@@ -6,8 +6,22 @@
 				<view class="title">发布社招</view>
 				<view class="desc">{{companyName}}</view>
 				<view class="step">
-					<u-steps :list="numList" mode="number" :current="0" ></u-steps>
+					<u-steps :list="numList" mode="number" :current="0"></u-steps>
 				</view>
+
+				<view class="check-title-big">招聘模式</view>
+				<view class="check-select">
+					<radio-group @change="radioChange">
+						<label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in items" :key="item.value">
+							<view>
+								<radio :value="item.value" :checked="index === current" />
+							</view>
+							<view>{{item.name}}</view>
+						</label>
+					</radio-group>
+				</view>
+
+
 				<view class="check-title">招聘类型</view>
 				<view class="check-box">
 					<view class="check-item" :class="{ 'is-check': check == index }" v-for="(item, index) in peopleList"
@@ -20,9 +34,7 @@
 				</view>
 				<view class="check-title-big">岗位描述</view>
 				<view class="check-select" @click="goJobContent">
-					<view class="select-txt">{{
-            this.text ? this.text : "介绍工作内容、职位要求"
-          }}</view>
+					<view class="select-txt">{{this.text ? this.text : "介绍工作内容、职位要求" }}</view>
 					<u-icon name="arrow-down" color="#D3D3D6" size="22"></u-icon>
 				</view>
 				<view class="txt-desc">注:职位名称、职位类型等发布后不可修改</view>
@@ -36,12 +48,22 @@
 	export default {
 		data() {
 			return {
+				items: [{
+						value: '0',
+						name: '普通岗位招聘',
+						checked: 'true'
+					},
+					{
+						value: '1',
+						name: '急聘'
+					}
+				],
 				peopleList: ["社招全职", "应届生校园招聘", "实习生招聘", "兼职招聘"],
 				check: 0,
 				text: "",
-				status:"",
+				status: "",
 				companyName: "",
-				companyId:"",
+				companyId: "",
 				numList: [{
 						name: "填写基本信息",
 					},
@@ -66,10 +88,10 @@
 				this.companyName = decodeURIComponent(options.companyName);
 				console.log('接收的公司名称:', this.companyName);
 			}
-			 this.descListener = uni.$on("jobDescUpdated", (data) => {
-			      console.log("收到岗位描述数据:", data);
-			      this.text = data.desc; // 赋值给当前页变量
-			    });
+			this.descListener = uni.$on("jobDescUpdated", (data) => {
+				console.log("收到岗位描述数据:", data);
+				this.text = data.desc; // 赋值给当前页变量
+			});
 			this.jobListener = uni.$on('jobs', (data) => {
 				console.log('接收从B页传来的数据:', data);
 				// 手动更新 A 页的 data
@@ -118,102 +140,102 @@
 					title: '提交中...'
 				});
 
-//校验数据
-
-  // 校验数据
-  const validate = () => {
-
-    // 2. 校验岗位描述(positionDetails)
-    if (!this.text || this.text.trim() === '') {
-      uni.hideLoading();
-      uni.showToast({
-        title: '岗位描述不能为空',
-        icon: 'none',
-        duration: 2000
-      });
-      return false;
-    }
-    if (this.text.length > 500) {
-      uni.hideLoading();
-      uni.showToast({
-        title: '岗位描述不能超过500字',
-        icon: 'none',
-        duration: 2000
-      });
-      return false;
-    }
-    // 校验是否包含违规内容(简单示例,可根据实际需求扩展)
-    const illegalChars = /QQ|微信|电话|手机号|\?/g;
-    if (illegalChars.test(this.text)) {
-      uni.hideLoading();
-      uni.showToast({
-        title: '岗位描述不能包含联系方式或特殊符号',
-        icon: 'none',
-        duration: 2000
-      });
-      return false;
-    }
-
-    // 3. 校验岗位分类信息(假设ruleClassifyId是必选)
-    if (!this.jobInfo?.ruleClassifyId) {
-      uni.hideLoading();
-      uni.showToast({
-        title: '请选择岗位分类',
-        icon: 'none',
-        duration: 2000
-      });
-      return false;
-    }
-    if (!this.jobInfo?.ruleClassifyName || this.jobInfo?.ruleClassifyName=='请选择要招聘的职位') {
-      uni.hideLoading();
-      uni.showToast({
-        title: '岗位分类名称异常,请重新选择',
-        icon: 'none',
-        duration: 2000
-      });
-      return false;
-    }
-
-    // 4. 校验orderId(如果有实际业务含义,可根据需求调整)
-    // if (!this.orderId || this.orderId < 1) {
-    //   uni.hideLoading();
-    //   uni.showToast({
-    //     title: '订单信息异常',
-    //     icon: 'none',
-    //     duration: 2000
-    //   });
-    //   return false;
-    // }
-
-    // 所有校验通过
-    return true;
-  };
-
-  // 执行校验,通过后再提交
-  if (!validate()) {
-    return; // 校验失败,终止提交
-  }
+				//校验数据
+
+				// 校验数据
+				const validate = () => {
+
+					// 2. 校验岗位描述(positionDetails)
+					if (!this.text || this.text.trim() === '') {
+						uni.hideLoading();
+						uni.showToast({
+							title: '岗位描述不能为空',
+							icon: 'none',
+							duration: 2000
+						});
+						return false;
+					}
+					if (this.text.length > 500) {
+						uni.hideLoading();
+						uni.showToast({
+							title: '岗位描述不能超过500字',
+							icon: 'none',
+							duration: 2000
+						});
+						return false;
+					}
+					// 校验是否包含违规内容(简单示例,可根据实际需求扩展)
+					const illegalChars = /QQ|微信|电话|手机号|\?/g;
+					if (illegalChars.test(this.text)) {
+						uni.hideLoading();
+						uni.showToast({
+							title: '岗位描述不能包含联系方式或特殊符号',
+							icon: 'none',
+							duration: 2000
+						});
+						return false;
+					}
+
+					// 3. 校验岗位分类信息(假设ruleClassifyId是必选)
+					if (!this.jobInfo?.ruleClassifyId) {
+						uni.hideLoading();
+						uni.showToast({
+							title: '请选择岗位分类',
+							icon: 'none',
+							duration: 2000
+						});
+						return false;
+					}
+					if (!this.jobInfo?.ruleClassifyName || this.jobInfo?.ruleClassifyName == '请选择要招聘的职位') {
+						uni.hideLoading();
+						uni.showToast({
+							title: '岗位分类名称异常,请重新选择',
+							icon: 'none',
+							duration: 2000
+						});
+						return false;
+					}
+
+					// 4. 校验orderId(如果有实际业务含义,可根据需求调整)
+					// if (!this.orderId || this.orderId < 1) {
+					//   uni.hideLoading();
+					//   uni.showToast({
+					//     title: '订单信息异常',
+					//     icon: 'none',
+					//     duration: 2000
+					//   });
+					//   return false;
+					// }
+
+					// 所有校验通过
+					return true;
+				};
+
+				// 执行校验,通过后再提交
+				if (!validate()) {
+					return; // 校验失败,终止提交
+				}
 				const data = {
 					type: this.check,
 					positionDetails: this.text,
 					ruleClassifyId: this.jobInfo.ruleClassifyId,
 					ruleClassifyName: this.jobInfo.ruleClassifyName,
-					orderId:1
+					orderId: 1
 				}
-		
+
 				// 发送请求
 				this.$Request.postJson("/app/postPush/savePostPush", data)
 					.then((res) => {
 						uni.hideLoading();
-							
+
 						if (res.code === 0) {
 							uni.showToast({
 								title: '提交成功',
 								icon: 'success'
 							});
-							console.log("sssssss",this.companyId)
-							var pid=res.data || ""
-							if(!pid){
+							console.log("sssssss", this.companyId)
+							var pid = res.data || ""
+							if (!pid) {
 								uni.showToast({
 									title: '系统错误,请重新提交',
 									icon: 'none'
@@ -223,7 +245,9 @@
 							// 提交成功后跳转到职位发布页面
 							setTimeout(() => {
 								uni.navigateTo({
-									url: "/pages/my/jobPostingSecond?pid="+pid+"&status="+this.status+"&companyName="+this.companyName+'&companyId='+this.companyId
+									url: "/pages/my/jobPostingSecond?pid=" + pid + "&status=" + this
+										.status + "&companyName=" + this.companyName + '&companyId=' +
+										this.companyId
 								});
 							}, 1500);
 						} else {

+ 61 - 5
pages/my/jobPostingSecond.vue

@@ -26,7 +26,7 @@
 				<!-- 薪资范围 -->
 				<view class="check-title-big">薪资范围</view>
 				<view class="check-select" @click="showMoney = true">
-					<view class="select-txt">{{ selectedSalary || "请选择合理的薪资范围" }}</view>
+					<view class="select-txt">{{ selectedSalary+'——'+salaryTimes || "请选择合理的薪资范围" }}</view>
 					<u-icon name="arrow-down" color="#D3D3D6" size="22"></u-icon>
 				</view>
 
@@ -90,11 +90,13 @@
 				companyId: "",
 				status: 1,
 				pid: "",
+				salaryTimes:"",
 
 				// 选择器显示控制
 				showExper: false,
 				showLevel: false,
 				showMoney: false,
+				
 
 				// 经验选择数据源
 				listExper: [{
@@ -114,12 +116,12 @@
 						value: "3-5年"
 					},
 					{
-						label: "5-10年",
-						value: "5-10年"
+						label: "5-8年",
+						value: "5-8年"
 					},
 					{
-						label: "10年以上",
-						value: "10年以上"
+						label: "8年以上",
+						value: "8年以上"
 					},
 				],
 
@@ -246,6 +248,56 @@
 							label: "50k"
 						},
 					],
+					[
+					    {
+					        "value": "12薪",
+					        "label": "12薪"
+					    },
+					    {
+					        "value": "13薪",
+					        "label": "13薪"
+					    },
+					    {
+					        "value": "14薪",
+					        "label": "14薪"
+					    },
+					    {
+					        "value": "15薪",
+					        "label": "15薪"
+					    },
+					    {
+					        "value": "16薪",
+					        "label": "16薪"
+					    },
+					    {
+					        "value": "17薪",
+					        "label": "17薪"
+					    },
+					    {
+					        "value": "18薪",
+					        "label": "18薪"
+					    },
+					    {
+					        "value": "19薪",
+					        "label": "19薪"
+					    },
+					    {
+					        "value": "20薪",
+					        "label": "20薪"
+					    },
+					    {
+					        "value": "21薪",
+					        "label": "21薪"
+					    },
+					    {
+					        "value": "22薪",
+					        "label": "22薪"
+					    },
+					    {
+					        "value": "23薪",
+					        "label": "23薪"
+					    }
+					]
 				],
 
 				numList: [{
@@ -334,10 +386,13 @@
 			// 处理薪资范围选择(核心修复)
 			onMoneyConfirm(selectedItems) {
 				// 多列选择器返回数组,取每列选中的label拼接
+				console.log(selectedItems)
 				if (Array.isArray(selectedItems) && selectedItems.length >= 2) {
 					const min = selectedItems[0]?.label || "";
 					const max = selectedItems[1]?.label || "";
+					const xin = selectedItems[2]?.label || "";
 					this.selectedSalary = `${min}-${max}`;
+					this.salaryTimes=`${xin}`
 				}
 				this.showMoney = false;
 			},
@@ -436,6 +491,7 @@
 					province: this.stationName.province,
 					city: this.stationName.city,
 					county: this.stationName.district,
+					salaryTimes:this.salaryTimes
 
 				};