flat: 修改全职岗位和零工岗位问题

This commit is contained in:
yangxiao
2025-12-23 13:06:28 +08:00
parent 6ad80f08e9
commit adc762f676
17 changed files with 22621 additions and 149 deletions

View File

@@ -59,6 +59,7 @@ export const setResume = ({
wage,
workplace,
telephone,
wageUpper,
workExperience
}) => {
return request({
@@ -70,7 +71,8 @@ export const setResume = ({
wage,
workplace,
telephone,
workExperience
workExperience,
wageUpper,
},
});
};

View File

@@ -65,6 +65,12 @@
// uni.switchTab({
// url: item.path
// })
if (item.id === 1) {
return uni.showToast({
icon: "none",
title: '系统正在升级完善',
})
}
uni.navigateTo({
url: item.path
})

View File

@@ -7,7 +7,8 @@
</view>
<view class="head_right">
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
{{ companyitem.wage }}
</view>
</view>

View File

@@ -7,7 +7,9 @@
</view>
<view class="head_right">
{{ companyitem.wage }} {{ wageUnit[companyitem.wageUnitCategory] }}
{{ companyitem.wage }}
<!-- 后台处理 单位-->
<!-- {{ wageUnit[companyitem.wageUnitCategory] }} -->
</view>
</view>
<view class="ask">

View File

@@ -7,7 +7,7 @@
</view>
<view class="head_right">
{{ companyitem.wage }}{{ wageUnit[companyitem.wageUnitCategory] }}
{{ companyitem.wage }}~{{companyitem.wageUpper}}{{ wageUnit[companyitem.wageUnitCategory] }}
</view>
</view>
<view class="ask">

View File

@@ -1,6 +1,6 @@
{
"name" : "招聘",
"appid": "__UNI__2BC0F87",
"appid" : "__UNI__120CBFC",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",

View File

@@ -91,7 +91,7 @@
}) => {
console.log('detail,', detail)
// this.skillsId = id
this.skillsName = `${detail.parentLabel}-${detail.parentTwoLabel}-${detail.label}`
this.skillsName = `${detail.parentLabel}-${detail.label}`
})
},
methods: {
@@ -113,10 +113,12 @@
// }
},
skillLevel: function() {
uni.navigateTo({
url: `./skillLevel?id=${this.skillsId}&worktypesId=${this.worktypesId}&maxLayer=3&type=2`
url: `./skill?id=${this.worktypesId}&tradeId=${this.tradeId}&maxLayer=2&type=2`
})
// uni.navigateTo({
// url: `./skillLevel?id=${this.skillsId}&worktypesId=${this.worktypesId}&maxLayer=3&type=2`
// })
},
submit: async function() {
// console.log(this.tradeName, this.worktypesName, this.skillsName);

View File

@@ -31,8 +31,10 @@
<view class="list_text">
{{ item.worktypes }}{{ item.skills }}
</view>
<view>
<image src="../../../static/img/left_right.png" mode=""></image>
<view class="delt" @click="removeSkills(item.id, index)">
删除
<!-- 向右滑动删除 -->
<!-- <image src="../../../static/img/left_right.png" mode=""></image> -->
</view>
</view>
</m-slide-list>
@@ -75,16 +77,20 @@
</view>
<image src="../../../static/img/right.svg" mode=""></image>
</view>
<view class="jobcontent" @click="showPickerFunc('wage')">
<!-- @click="showPickerFunc('wage')" -->
<view class="jobcontent" >
<view class="jobinfo">
<view v-bind:class="['jobAddress', { 'input-error': !myResume.wage && isShowBorder }]">
我的期望薪资
</view>
<view v-bind:class="['jobText']">
{{ myResume.wage ? myResume.wage : '请选择' }}
<view v-bind:class="['jobText', 'jobDis']">
<!-- {{ myResume.wage ? myResume.wage : '请选择' }} -->
<u--input type="number" border="none" @focus="change1" @change="change($event, 'wage')" :value="myResume.wage" placeholder="请输入期望薪资范围" class="jobNumber" /><span>~</span>
<u--input type="number" border="none" @focus="change1" @change="change($event, 'wageUpper')" :value="myResume.wageUpper" placeholder="请输入期望薪资范围" class="jobNumber" /><span>/</span>
</view>
</view>
<image src="../../../static/img/right.svg" mode=""></image>
<!-- <image src="../../../static/img/right.svg" mode=""></image> -->
</view>
<view class="jobcontent">
<view class="jobinfo">
@@ -165,7 +171,7 @@
<!-- 省市 -->
<data-picker :show="areaModal.addressShow" @confirm='confirmAddress' @cancel='areaModal.addressShow = false'
@close='areaModal.addressShow = false' :defaultNames="areaModal.defaultNames" :indexs="areaModal.indexs"
:defaultIds="areaModal.defaultIds" :showToolbar="false" :showBottombar="true"
:defaultIds="areaModal.defaultIds" :showToolbar="false" :showBottombar="true" :sourceData=areaData
:labelName="areaModal.labelName"></data-picker>
</view>
</template>
@@ -192,6 +198,8 @@
cloneDeep,
forIn
} from 'lodash';
import area from "./province-city-county.json"
const validateForm = {
name: '请输入企业名称',
work: '请输入工作岗位',
@@ -218,6 +226,7 @@
education: {},
wage: "",
phone: "",
wageUpper: ''
},
mySkills: [],
id: undefined,
@@ -241,12 +250,14 @@
address: '',
addressShow: false,
title: 'Hello',
// indexs: [0, 0, 8],
indexs: [0,0],
// defaultIds: [1, 110000, 110106],
defaultNames: ['北京市', '北京市', '东城区'],
// defaultNames: ['北京市', '北京市', '东城区'],
// defaultNames: ['德阳市', '旌阳区'],
labelName: "areaName"
},
areaData: []
}
},
onShow() {
@@ -255,6 +266,10 @@
return
}
this.getSkill()
// this.areaData = area.find(i => i.id === 510000).children
const areaObj = area.find(i => i.id === 510000).children
const areaObj1 = areaObj.find(i => i.id === 510600)
this.areaData = [areaObj1]
},
created() {
this.getResume()
@@ -265,7 +280,7 @@
watch: {
myResume: {
handler: function(newVal, oldVal) {
if (newVal.city && newVal.education && newVal.wage && newVal.phone) {
if (newVal.city && newVal.education && newVal.wage && newVal.phone && newVal.wageUpper) {
this.canSubMit = true;
} else {
this.canSubMit = false;
@@ -347,6 +362,7 @@
label: data.education
},
wage: data.wage,
wageUpper: data.wageUpper,
phone: data.telephone
}
this.isShowButton = false;
@@ -485,6 +501,14 @@
this.isShowButton = true;
this.showPicker = true;
},
change(e, type) {
console.log(type, e, '----')
this.myResume[type] = e
},
change1(){
this.isShowButton = true;
},
pickerButtonFunc(e) {
console.log(e, this.myResume, this.myResume[this.showType]);
this.myResume[this.showType] = e.value[0];
@@ -514,7 +538,8 @@
city,
education,
phone,
wage
wage,
wageUpper,
} = this.myResume
// 中国大陆手机号码正则表达式
const mobileRegex = /\b(1[3-9]\d{9})\b/;
@@ -522,7 +547,7 @@
const landlineRegex = /\b(0\d{2,3}-\d{7,8}(-\d{1,4})?)\b/;
const workList = JSON.stringify(this.gzList)
if (!wage || !wageUpper) return this.showToast("请正确填写薪资范围");
if (mobileRegex.test(phone) || landlineRegex.test(phone)) {
// 电话号码格式正确
console.log(phone, "电话号码格式正确");
@@ -532,6 +557,7 @@
workplace: city.workplace ? city.workplace : city.parentLabel + '-' + city.label,
telephone: phone,
wage,
wageUpper,
workExperience: workList
}).then(res => {
this.isShowButton = false;
@@ -817,4 +843,48 @@
.input-error {
color: red;
}
.delt {
color: red;
font-size: 26rpx;
}
.jobDis {
width: 100%;
display: flex;
height: 60rpx;
border: 1rpx solid #999999;
border-radius: 40rpx;
span:nth-of-type(1) {
padding: 0 20rpx;
border: 1rpx solid #999999;
border-top: none;
border-bottom: none;
}
span:nth-of-type(2) {
padding: 0 10rpx;
width: 80rpx;
font-size: 20rpx;
border-left: 1rpx solid #999999;
}
}
.jobNumber {
height: 60rpx;
padding-left: 16rpx;
/* border: 1rpx solid #999999; */
/* border-top: none;
border-bottom: none; */
}
.uni-input-placeholder {
padding-left: 16rpx !important;
}
.uni-input-input, .uni-input-placeholder {
padding-left: 16rpx !important;
}
.u-input__content__field-wrapper__field {
padding-left: 16rpx !important;
}
</style>

File diff suppressed because it is too large Load Diff

View File

@@ -1,15 +1,27 @@
<template>
<view>
<view class="search">
<input
v-model="searchKeyword"
type="text"
class="search-input"
placeholder="请输入关键词搜索"
@input="handleSearch"
@focus="isSearchFocused = true"
@blur="handleSearchBlur"
/>
</view>
<view class="title">
全部
</view>
<block v-for="(item, index) in city" :key="index">
<block v-for="(item, index) in filteredResults" :key="index">
<view class="cityList" @click="cityClick(item)">
{{ item.name }}
<image src="../../../static/img/correct.svg" v-if="id === item.id" mode=""></image>
<image v-else-if="layer !== maxLayer" src="../../../static/img/right.svg" mode=""></image>
</view>
</block>
<view class="" v-if="layer === maxLayer" style="height: 230rpx;background-color: #f6f6f6;"></view>
<view class="btn" v-if="layer === maxLayer" @click="comfirm">
<view class="bottombtn">
@@ -38,6 +50,10 @@
label: '',
tradeId: '',
searchKeyword: '', // 模糊关键字搜索
isSearchFocused: true,
searchFields: ['name'],
type: 1
}
},
computed: {
@@ -51,6 +67,19 @@
} else {
return this.workTypeList;
}
},
filteredResults() {
if (!this.searchKeyword) {
return this.city
}
const keyword = this.searchKeyword.toLowerCase()
return this.city.filter(item => {
return this.searchFields.some(field => {
const value = this.getObjectValue(item, field)
return value && value.toLowerCase().includes(keyword)
})
})
}
},
mounted() {
@@ -64,12 +93,15 @@
tradeId,
parentId,
layer,
maxLayer
maxLayer,
type
}) {
this.parentId = parentId
this.tradeId = tradeId || 0
this.layer = parseInt(layer || 1)
this.maxLayer = parseInt(maxLayer || 2)
console.log(type, 'type')
this.type = type
},
onShow: function() {},
methods: {
@@ -88,11 +120,14 @@
},
goCityInfo(item) {
uni.navigateTo({
url: `./skill?layer=${this.layer + 1}&maxLayer=${this.maxLayer}&parentId=${item.id}&parentLabel=${item.name}`
url: `./skill?layer=${this.layer + 1}&maxLayer=${this.maxLayer}&parentId=${item.id}&parentLabel=${item.name}&type=${this.type}`
})
},
comfirm: function() {
if (this.id) {
console.log(this.type)
if (this.type == '1') {
console.log('00000000')
uni.$emit('setworkTypes', {
detail: {
id: this.id,
@@ -100,6 +135,17 @@
parentLabel: this.$route.query.parentLabel
}
})
} else {
console.log('1111111')
uni.$emit('setSkill', {
detail: {
id: this.id,
label: this.label,
parentLabel: this.$route.query.parentLabel,
parentTwoLabel: this.$route.query.parentTwoLabel
},
})
}
uni.navigateBack({
delta: this.layer
})
@@ -111,6 +157,22 @@
}
},
// 模糊搜索
handleSearch() {
console.log(this.searchKeyword)
},
// 失去焦点
handleSearchBlur() {
},
// 获取对象深层值
getObjectValue(obj, path) {
return path.split('.').reduce((current, key) => {
return current && current[key] !== undefined ? current[key] : ''
}, obj)
},
}
}
</script>
@@ -186,4 +248,17 @@
page {
background-color: #fefefe;
}
.search {
width: 80%;
height: 60rpx;
margin: 10rpx auto;
border: 1rpx solid #dddddd;
border-radius: 40rpx;
padding-left: 30rpx;
}
.search-input {
width: 80%;
height: 60rpx;
}
</style>

View File

@@ -42,8 +42,10 @@
this.$api.sleep(2000).then(() => {
if (!this.$api.haslogin()) {
GoLogin()
console.log('300')
} else {
uni.$emit('newsReadChange')
console.log('000')
}
})
} else {

View File

@@ -17,9 +17,15 @@
<view class="prolist">招聘人数{{ info.peopleNum || '暂无' }}</view>
<view class="prolist">行业类型{{ info.tradeNames || '暂无' }}</view>
<view class="prolist">零工工种{{ info.worktypeNames || '暂无' }}</view>
<!-- <view class="fee">
{{info.wage || '暂无'}}
<!-- <view class="prolist">
参考工资
{{info.wageUnitCategory === 4 ? wageUnitdata[info.wage] : (info.wage || '暂无') }}
{{info.wageUnitCategory === 4 ? '' :wageUnit[info.wageUnitCategory]}}
</view> -->
<view class="prolist">
参考工资
{{info.wage}}
</view>
</view>
<view class="head">
<view class="proname proneed">岗位要求</view>
@@ -215,6 +221,7 @@
import { mapGetters } from 'vuex';
import { missionDetail, missionDetailById, submit, getCollectState, updateCollectStatus } from '@/api/mission.js';
import { GoLogin } from '@/untils/AxiosUtils.js';
import dic from '@/common/dic.js'
import { setRead } from '@/api/news.js';
import { checkPass, getPhoneCountNumber } from '@/api/auth.js';
import dictionary from '@/common/textdata.js';
@@ -257,6 +264,10 @@ export default {
collectStatus: 0, // 收藏状态
showPopUp: false,
isInvite: false,
wageUnitdata: {
1:'计件',
2:'面议'
}
};
},
components: {
@@ -286,6 +297,8 @@ export default {
onShow: function () {
this.showDetail = true;
this.getData();
},
onShareAppMessage(obj) {
return {
@@ -490,6 +503,14 @@ export default {
url: `/pageMy/setUserBase/seal/forget?forget=true`,
});
},
// wageUnit(data) {
// let rel = {};
// data.forEach((element) => {
// rel[element.value] = element.label;
// });
// // return rel;
// }
},
computed: {
...mapGetters(['auth', 'autograph', 'area']),
@@ -498,6 +519,14 @@ export default {
return this.info.skillNames.split(',');
}
},
wageUnit() {
const data = dic.wageUnitCategoryState[0]
let rel = {};
data.forEach((element) => {
rel[element.value] = element.label;
});
return rel;
}
// cityNamed() {
// if (this.info && typeof this.info.cityId !== 'undefined' && this.info.cityId !== -1 && this.area
// .dic) {

View File

@@ -13,6 +13,7 @@
行业类型{{ info.tradeNames ? info.tradeNames : info.jobCompanyIndustry || '暂无' }}
</view>
<view class="prolist">岗位工种{{ info.skillNames || '暂无' }}</view>
<view class="prolist">参考工资{{info.wage}}{{info.wageUpper}}{{wageUnit[info.wageUnitCategory]}}</view>
<!-- <view class="fee">
{{info.wage}}{{wageUnit[info.wageUnitCategory]}}
</view> -->
@@ -188,8 +189,8 @@
</view>
<view style="text-align: center; font-size: 28rpx; margin-top: 30rpx">
{{ info.callName || '联系人 ' }} :
<span style="color: blue" v-if="info.callTel" @click="tools.onDialingPhoneNumber(info.callTel)">
{{ info.callTel }}
<span style="color: blue" v-if="info.callNumber" @click="tools.onDialingPhoneNumber(info.callNumber)">
{{ info.callNumber }}
</span>
<span style="color: #333333" v-else>无联系方式</span>
</view>

View File

@@ -31,11 +31,15 @@
},
computed: {
...mapState({
idNumber: (state) => state.auth.authInfo.idNumber
idNumber: (state) => {
console.log(state.auth.authInfo, 'auth.authInfo')
return state.auth.authInfo.idNumber
}
}),
},
methods: {
next(type) {
// return this.$api.msg('该功能正在完善中')
switch (type) {
case 0:
this.isHaveCode(this.idNumber).then(() => {
@@ -64,6 +68,9 @@
if (resData.data.data.haveCode) {
resolve()
} else {
return this.$api.msg('系统正在建设中')
switch (resData.data.data.reviewStatus) {
case 0:
this.$api.msg('您提交的认证信息正在审核中')

View File

@@ -10,7 +10,7 @@
<view class="condition">
<view class="cond_list" v-if="pageType === 'enterprise'">
<view v-for="(item, index) in arrTitle" :key="index"
:class="['cond_item', index === currentArrTitleID ? 'activeButton' : '']" @click="changeTab(item)">
:class="['cond_item', item.id === currentArrTitleID ? 'activeButton' : '']" @click="changeTab(item)">
{{ item.text }}
</view>
</view>
@@ -39,10 +39,12 @@
} from '@/api/userrecruit.js'
import userrecruitList from '../components/userrecruitList.vue'
let arrGuide = ['在线填写招工需求', '后台审核沟通发布', '平台展示招工信息'];
let arrTitle = [{
text: "发布零工岗位",
id: 0
}, {
let arrTitle = [
// {
// text: "发布零工岗位",
// id: 0
// },
{
text: "发布全职岗位",
id: 1
}
@@ -76,7 +78,7 @@
reviewStatus,
pickerColumns,
openPicker: false,
currentArrTitleID: 2,
currentArrTitleID: 1,
currentReviewStatusID: '-1',
pageNumber: 1,
dataSource: [],
@@ -87,7 +89,7 @@
}) {
if (this.enterprise) {
this.pageType = 'enterprise'
this.currentArrTitleID = 0
this.currentArrTitleID = 1
}
this.getList('refresh')
},

View File

@@ -238,6 +238,7 @@
initData(inPutArr, inpuType) {
//第一层级
if (inPutArr[0] != undefined) {
this.level = 1;
var arr = this.currSourceData.map(t => {
return t[this.labelName]

View File

@@ -7,7 +7,8 @@ module.exports = {
proxy: {
'/api': {
// target: 'http://10.165.0.173:8000',
target: 'http://192.168.1.115:8000',
// target: 'http://192.168.1.115:8000',
target: 'http://39.98.44.136:6013',
ws: true,
pathRewrite: {
'^/api': '/'