<template>
							 | 
						|
									<view class="page">
							 | 
						|
										<navbar :title="isEdit ? '编辑招工' : '发布招工'" leftClick @leftClick="$utils.navigateBack" />
							 | 
						|
										
							 | 
						|
										
							 | 
						|
										<view class="form">
							 | 
						|
											<view class="help-issue">
							 | 
						|
												<text>招工标题</text>
							 | 
						|
												<text style="color: #BD3624;">*</text>
							 | 
						|
											</view>
							 | 
						|
											<view class="form-sheet-cell">
							 | 
						|
												<input type="text" 
							 | 
						|
												v-model="form.title"
							 | 
						|
												class="title-input"/>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<!-- <uv-cell
							 | 
						|
											title="学历要求"
							 | 
						|
											rightIconStyle="fontSize: 30rpx;"
							 | 
						|
											:value="form.school || '请选择学历要求'"
							 | 
						|
											@click="openPicker('school')"
							 | 
						|
											isLink
							 | 
						|
											></uv-cell> -->
							 | 
						|
											
							 | 
						|
											<!-- <uv-cell
							 | 
						|
											title="工作地点"
							 | 
						|
											rightIconStyle="fontSize: 30rpx;"
							 | 
						|
											:value="form.address || '请选择招工地点'"
							 | 
						|
											@click="selectAddr"
							 | 
						|
											isLink
							 | 
						|
											></uv-cell> -->
							 | 
						|
											
							 | 
						|
											<uv-cell
							 | 
						|
											title="工龄要求"
							 | 
						|
											rightIconStyle="fontSize: 30rpx;"
							 | 
						|
											:value="form.workYear || '请选择工龄要求'"
							 | 
						|
											@click="openPicker('workYear')"
							 | 
						|
											isLink
							 | 
						|
											></uv-cell>
							 | 
						|
											
							 | 
						|
											
							 | 
						|
											<!-- <view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													薪资范围
							 | 
						|
												</view>
							 | 
						|
												<view class="price">
							 | 
						|
													<input placeholder="最小薪资" v-model="form.minPrice" />
							 | 
						|
													~
							 | 
						|
													<input placeholder="最大薪资" v-model="form.maxPrice" />
							 | 
						|
												</view>
							 | 
						|
											</view> -->
							 | 
						|
											
							 | 
						|
											<view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													招聘公司
							 | 
						|
												</view>
							 | 
						|
												<input placeholder="请输入招聘公司" v-model="form.company" />
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													薪资范围
							 | 
						|
												</view>
							 | 
						|
												<input placeholder="请输入薪资范围" v-model="form.minPrice" />
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<!-- <view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													结算方式
							 | 
						|
												</view>
							 | 
						|
												<uv-radio-group v-model="radiovalue">
							 | 
						|
													<view class="price">
							 | 
						|
														<uv-radio
							 | 
						|
															:customStyle="{margin: '8px'}" 
							 | 
						|
															v-for="(item, index) in priceList" 
							 | 
						|
															:key="index" 
							 | 
						|
															iconSize="30rpx"
							 | 
						|
															size="40rpx"
							 | 
						|
															labelSize="26rpx"
							 | 
						|
															:label="item.name" 
							 | 
						|
															:name="item.name">
							 | 
						|
														</uv-radio>
							 | 
						|
													</view>
							 | 
						|
												</uv-radio-group>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													工作性质
							 | 
						|
												</view>
							 | 
						|
												<uv-radio-group v-model="radiovalue">
							 | 
						|
													<view class="price">
							 | 
						|
														<uv-radio
							 | 
						|
															:customStyle="{margin: '8px'}" 
							 | 
						|
															v-for="(item, index) in jopList" 
							 | 
						|
															:key="index" 
							 | 
						|
															iconSize="30rpx"
							 | 
						|
															size="40rpx"
							 | 
						|
															labelSize="26rpx"
							 | 
						|
															:label="item.name" 
							 | 
						|
															:name="item.name">
							 | 
						|
														</uv-radio>
							 | 
						|
													</view>
							 | 
						|
												</uv-radio-group>
							 | 
						|
											</view> -->
							 | 
						|
											
							 | 
						|
											<view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													标签
							 | 
						|
												</view>
							 | 
						|
												<input placeholder="请输入标签(多个用,号分割)" v-model="form.iconText" />
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<!-- <view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													联系人
							 | 
						|
												</view>
							 | 
						|
												<input placeholder="请输入联系人" v-model="form.userName" />
							 | 
						|
											</view> -->
							 | 
						|
											
							 | 
						|
											
							 | 
						|
											
							 | 
						|
											<view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													联系人
							 | 
						|
												</view>
							 | 
						|
												<input placeholder="请输入联系人" v-model="form.userName" />
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class="form-sheet-cell">
							 | 
						|
												<view class="label">
							 | 
						|
													联系电话
							 | 
						|
												</view>
							 | 
						|
												<input placeholder="请输入联系电话" v-model="form.userPhone" />
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											
							 | 
						|
											<view class="category">
							 | 
						|
												<view class="title">
							 | 
						|
													选择地区
							 | 
						|
												</view>
							 | 
						|
												<view class="tagList">
							 | 
						|
													<view 
							 | 
						|
													:class="{act : t.id == form.addId}"
							 | 
						|
													@click="form.addId = t.id"
							 | 
						|
													v-for="(t, i) in cityList"
							 | 
						|
													:key="i">
							 | 
						|
														{{ t.name }}
							 | 
						|
													</view>
							 | 
						|
												</view>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class=""
							 | 
						|
											style="margin-top: 20rpx;">
							 | 
						|
												<uv-textarea 
							 | 
						|
												v-model="form.jobContext" 
							 | 
						|
												count 
							 | 
						|
												:maxlength="300" 
							 | 
						|
												autoHeight
							 | 
						|
												placeholder="请输入职位描述"></uv-textarea>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class=""
							 | 
						|
											style="margin-top: 20rpx;">
							 | 
						|
												<uv-textarea 
							 | 
						|
												v-model="form.school" 
							 | 
						|
												count 
							 | 
						|
												:maxlength="300" 
							 | 
						|
												autoHeight
							 | 
						|
												placeholder="请输入岗位要求"></uv-textarea>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class=""
							 | 
						|
											style="margin-top: 20rpx;">
							 | 
						|
												<uv-textarea 
							 | 
						|
												v-model="form.jobDetails" 
							 | 
						|
												count 
							 | 
						|
												:maxlength="300" 
							 | 
						|
												autoHeight
							 | 
						|
												placeholder="请输入岗位详细介绍"></uv-textarea>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<view class=""
							 | 
						|
											style="margin-top: 20rpx;">
							 | 
						|
												<uv-textarea 
							 | 
						|
												v-model="form.gsContext" 
							 | 
						|
												count 
							 | 
						|
												:maxlength="300" 
							 | 
						|
												autoHeight
							 | 
						|
												placeholder="请输入公司介绍"></uv-textarea>
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											
							 | 
						|
											<view class="uni-color-btn"
							 | 
						|
											@click="submit">
							 | 
						|
												{{ isEdit ? '保存修改' : '发布' }}
							 | 
						|
											</view>
							 | 
						|
											
							 | 
						|
											<!-- 编辑模式下显示删除按钮 -->
							 | 
						|
											<view v-if="isEdit" class="delete-btn"
							 | 
						|
											@click="deleteJob">
							 | 
						|
												删除招工
							 | 
						|
											</view>
							 | 
						|
										</view>
							 | 
						|
										
							 | 
						|
										
							 | 
						|
										<uv-picker ref="picker" 
							 | 
						|
										:columns="columns" 
							 | 
						|
										@confirm="pickerConfirm"></uv-picker>
							 | 
						|
									</view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
									import { mapState } from 'vuex'
							 | 
						|
									import { subscribeBeforePublish } from '@/utils/subscribeMessage.js'
							 | 
						|
									export default {
							 | 
						|
										data() {
							 | 
						|
											return {
							 | 
						|
												jobId: '', // 工作ID,用于编辑模式
							 | 
						|
												isEdit: false, // 是否为编辑模式
							 | 
						|
												form : {
							 | 
						|
													title: '', // 招工标题
							 | 
						|
													school : '', // 岗位要求
							 | 
						|
													workYear : '', // 工龄要求
							 | 
						|
													minPrice : '', // 薪资范围
							 | 
						|
													maxPrice : '', // 最大薪资(保留字段)
							 | 
						|
													address : '', // 工作地点(保留字段)
							 | 
						|
													addId : '', // 地区ID
							 | 
						|
													company : '', // 招聘公司
							 | 
						|
													gsContext : '', // 公司介绍
							 | 
						|
													jobContext : '', // 职位描述
							 | 
						|
													jobDetails: '', // 岗位详细介绍
							 | 
						|
													iconText: '', // 标签
							 | 
						|
													userName: '', // 联系人
							 | 
						|
													userPhone: '', // 联系电话
							 | 
						|
												},
							 | 
						|
												radiovalue : '',
							 | 
						|
												priceList : [
							 | 
						|
													{
							 | 
						|
														name : '日结',
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														name : '月结',
							 | 
						|
													},
							 | 
						|
												],
							 | 
						|
												jopList : [
							 | 
						|
													{
							 | 
						|
														name : '正式工',
							 | 
						|
													},
							 | 
						|
													{
							 | 
						|
														name : '临时工',
							 | 
						|
													},
							 | 
						|
												],
							 | 
						|
												picker : {
							 | 
						|
													workYear : [
							 | 
						|
														'不限',
							 | 
						|
													],
							 | 
						|
													school : [
							 | 
						|
														'不限',
							 | 
						|
														'初中',
							 | 
						|
														'高中',
							 | 
						|
														'专科',
							 | 
						|
														'本科',
							 | 
						|
														'研究生',
							 | 
						|
														'博士',
							 | 
						|
													],
							 | 
						|
												},
							 | 
						|
												pickerKey : 'workYear',
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										onLoad(options) {
							 | 
						|
											// 初始化工龄选项
							 | 
						|
											for (var i = 0; i < 30; i++) {
							 | 
						|
												this.picker.workYear.push((i + 1) + '年')
							 | 
						|
											}
							 | 
						|
											
							 | 
						|
											// 检查是否是编辑模式
							 | 
						|
											if (options.id) {
							 | 
						|
												this.jobId = options.id
							 | 
						|
												this.isEdit = true
							 | 
						|
												this.getJobDetail()
							 | 
						|
											} else {
							 | 
						|
												// 新增模式,设置默认地区
							 | 
						|
												if (this.cityList && this.cityList.length > 0) {
							 | 
						|
													this.form.addId = this.cityList[0].id
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										computed : {
							 | 
						|
											columns(){
							 | 
						|
												return [this.picker[this.pickerKey]]
							 | 
						|
											},
							 | 
						|
											...mapState(['cityList', 'category']),
							 | 
						|
										},
							 | 
						|
										watch: {
							 | 
						|
											// 监听cityList变化,用于处理异步加载的城市数据
							 | 
						|
											cityList: {
							 | 
						|
												handler(newVal) {
							 | 
						|
													if (newVal && newVal.length > 0 && !this.isEdit && !this.form.addId) {
							 | 
						|
														this.form.addId = newVal[0].id
							 | 
						|
													}
							 | 
						|
												},
							 | 
						|
												immediate: true
							 | 
						|
											}
							 | 
						|
										},
							 | 
						|
										methods: {
							 | 
						|
											// 获取工作详情数据
							 | 
						|
											getJobDetail() {
							 | 
						|
												this.$api('getJobDetail', { id: this.jobId }, res => {
							 | 
						|
													if (res.code == 200) {
							 | 
						|
														const data = res.result
							 | 
						|
														
							 | 
						|
														// 回显基本信息
							 | 
						|
														this.form = {
							 | 
						|
															...this.form,
							 | 
						|
															title: data.title || '',
							 | 
						|
															school: data.school || '',
							 | 
						|
															workYear: data.workYear || '',
							 | 
						|
															minPrice: data.minPrice || '',
							 | 
						|
															maxPrice: data.maxPrice || '',
							 | 
						|
															address: data.address || '',
							 | 
						|
															addId: data.addId || (this.cityList.length > 0 ? this.cityList[0].id : ''),
							 | 
						|
															company: data.company || '',
							 | 
						|
															gsContext: data.gsContext || '',
							 | 
						|
															jobContext: data.jobContext || '',
							 | 
						|
															jobDetails: data.jobDetails || '',
							 | 
						|
															iconText: data.iconText || '',
							 | 
						|
															userName: data.userName || '',
							 | 
						|
															userPhone: data.userPhone || '',
							 | 
						|
														}
							 | 
						|
													} else {
							 | 
						|
														uni.showToast({
							 | 
						|
															title: res.msg || '获取工作信息失败',
							 | 
						|
															icon: 'none'
							 | 
						|
														})
							 | 
						|
													}
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											openPicker(key){
							 | 
						|
												this.pickerKey = key
							 | 
						|
												this.$refs.picker.open()
							 | 
						|
											},
							 | 
						|
											pickerConfirm(e){
							 | 
						|
												this.form[this.pickerKey] = e.value[0]
							 | 
						|
											},
							 | 
						|
											// 提交
							 | 
						|
											async submit(){
							 | 
						|
												
							 | 
						|
												if (this.$utils.verificationAll(this.form, {
							 | 
						|
														title: '请输入招工标题',
							 | 
						|
														workYear : '请选择工龄要求',
							 | 
						|
														company : '请输入招聘公司',
							 | 
						|
														minPrice : '请输入薪资范围',
							 | 
						|
														iconText: '请输入标签',
							 | 
						|
														userName: '请输入联系人',
							 | 
						|
														userPhone: '请输入联系电话',
							 | 
						|
														jobContext : '请输入职位描述',
							 | 
						|
														school : '请输入岗位要求',
							 | 
						|
														jobDetails: '请输入岗位详细介绍',
							 | 
						|
														gsContext : '请输入公司介绍',
							 | 
						|
													})) {
							 | 
						|
													return
							 | 
						|
												}
							 | 
						|
												
							 | 
						|
												// 只有在新发布时才订阅消息通知,编辑时不需要
							 | 
						|
												if (!this.isEdit) {
							 | 
						|
													await subscribeBeforePublish()
							 | 
						|
												}
							 | 
						|
												
							 | 
						|
												// 根据是否是编辑模式调用不同的API
							 | 
						|
												const apiName = this.isEdit ? 'editMyJob' : 'publishJob'
							 | 
						|
												const params = this.isEdit ? { ...this.form, id: this.jobId } : this.form
							 | 
						|
												
							 | 
						|
												this.$api(apiName, params, res => {
							 | 
						|
													if(res.code == 200){
							 | 
						|
														uni.showToast({
							 | 
						|
															title: this.isEdit ? '修改成功!' : '发布成功!',
							 | 
						|
															icon: 'none'
							 | 
						|
														})
							 | 
						|
														
							 | 
						|
														setTimeout(() => {
							 | 
						|
															uni.navigateBack()
							 | 
						|
														}, 1000)
							 | 
						|
													} else {
							 | 
						|
														uni.showToast({
							 | 
						|
															title: res.msg || (this.isEdit ? '修改失败' : '发布失败'),
							 | 
						|
															icon: 'none'
							 | 
						|
														})
							 | 
						|
													}
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
											// 删除招工
							 | 
						|
											deleteJob() {
							 | 
						|
												uni.showModal({
							 | 
						|
													title: '确认删除',
							 | 
						|
													content: '确定要删除这个招工信息吗?删除后无法恢复。',
							 | 
						|
													confirmColor: '#ff4757',
							 | 
						|
													success: (res) => {
							 | 
						|
														if (res.confirm) {
							 | 
						|
															this.$api('deleteMyJob', { id: this.jobId }, res => {
							 | 
						|
																if (res.code == 200) {
							 | 
						|
																	uni.showToast({
							 | 
						|
																		title: '删除成功!',
							 | 
						|
																		icon: 'none'
							 | 
						|
																	})
							 | 
						|
																	
							 | 
						|
																	setTimeout(() => {
							 | 
						|
																		uni.navigateBack()
							 | 
						|
																	}, 1000)
							 | 
						|
																} else {
							 | 
						|
																	uni.showToast({
							 | 
						|
																		title: res.msg || '删除失败',
							 | 
						|
																		icon: 'none'
							 | 
						|
																	})
							 | 
						|
																}
							 | 
						|
															})
							 | 
						|
														}
							 | 
						|
													}
							 | 
						|
												})
							 | 
						|
											},
							 | 
						|
											
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style scoped lang="scss">
							 | 
						|
								.page{
							 | 
						|
									background-color: #fff;
							 | 
						|
									min-height: 100vh;
							 | 
						|
									box-sizing: border-box;
							 | 
						|
									color: #333333;
							 | 
						|
									font-size: 28rpx;
							 | 
						|
									/deep/ text{
							 | 
						|
										font-size: 28rpx !important;
							 | 
						|
									}
							 | 
						|
									input{
							 | 
						|
										width: 450rpx;
							 | 
						|
									}
							 | 
						|
									.form{
							 | 
						|
										padding: 30rpx;
							 | 
						|
										.help-issue {
							 | 
						|
											margin: 20rpx;
							 | 
						|
										}
							 | 
						|
										.title-input{
							 | 
						|
											border: 1px solid $uni-color;
							 | 
						|
											width: 100%;
							 | 
						|
											border-radius: 10rpx;
							 | 
						|
											padding: 10rpx 20rpx;
							 | 
						|
											box-sizing: border-box;
							 | 
						|
											height: 65rpx;
							 | 
						|
										}
							 | 
						|
										.form-sheet-cell{
							 | 
						|
											display: flex;
							 | 
						|
											background-color: #fff;
							 | 
						|
											padding: 20rpx 30rpx;
							 | 
						|
											align-items: center;
							 | 
						|
											.label{
							 | 
						|
												width: 160rpx;
							 | 
						|
											}
							 | 
						|
											.price{
							 | 
						|
												display: flex;
							 | 
						|
												text-align: center;
							 | 
						|
												input{
							 | 
						|
													width: 150rpx;
							 | 
						|
													border: 1px solid $uni-color;
							 | 
						|
													margin: 0 10rpx;
							 | 
						|
												}
							 | 
						|
											}
							 | 
						|
											.right-icon{
							 | 
						|
												margin-left: auto;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.category{
							 | 
						|
										padding: 20rpx;
							 | 
						|
										.title{
							 | 
						|
											// font-weight: 900;
							 | 
						|
											// font-size: 30rpx;
							 | 
						|
										}
							 | 
						|
										.tagList{
							 | 
						|
											display: flex;
							 | 
						|
											flex-wrap: wrap;
							 | 
						|
											padding: 10rpx 0;
							 | 
						|
											view{
							 | 
						|
												background: rgba($uni-color, 0.1);
							 | 
						|
												padding: 10rpx 20rpx;
							 | 
						|
												margin: 10rpx;
							 | 
						|
												border-radius: 10rpx;
							 | 
						|
												font-size: 26rpx;
							 | 
						|
											}
							 | 
						|
											.act{
							 | 
						|
												color: #fff;
							 | 
						|
												background: $uni-color;
							 | 
						|
											}
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									.delete-btn {
							 | 
						|
										background: #ff4757;
							 | 
						|
										color: white;
							 | 
						|
										text-align: center;
							 | 
						|
										padding: 20rpx;
							 | 
						|
										margin: 30rpx;
							 | 
						|
								        border-radius: 40rpx;
							 | 
						|
										font-size: 28rpx;
							 | 
						|
										font-weight: bold;
							 | 
						|
										
							 | 
						|
										&:active {
							 | 
						|
											background: #ff3742;
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
								}
							 | 
						|
								</style>
							 |