bug

parent 16b95493
...@@ -18,7 +18,7 @@ export const saveJobStatusApi = params => instance.post("/user/resume/saveJobSta ...@@ -18,7 +18,7 @@ export const saveJobStatusApi = params => instance.post("/user/resume/saveJobSta
export const saveUserInfoApi = params => instance.post("/c/user/save", params); export const saveUserInfoApi = params => instance.post("/c/user/save", params);
// 保存身份证信息 // 保存身份证信息
export const saveIdCardApi = params => instance.post("/personal/user/saveIdCard", params); export const saveIdCardApi = params => instance.post("/c/user/citizen/save", params);
// 保存求职意向 // 保存求职意向
export const saveJobIntentionApi = params => instance.post("/user/resume/saveJobIntention", params); export const saveJobIntentionApi = params => instance.post("/user/resume/saveJobIntention", params);
// 保存工作经历 // 保存工作经历
...@@ -32,6 +32,9 @@ export const getInterviewListApi = params => instance.post("/job/getInterviewLis ...@@ -32,6 +32,9 @@ export const getInterviewListApi = params => instance.post("/job/getInterviewLis
//更具code码获取城市名称 //更具code码获取城市名称
export const getCityNameByCodeApi = code => instance.post(`/dict/dictProvinceCityDistrict/find/dist/${code}`); export const getCityNameByCodeApi = code => instance.post(`/dict/dictProvinceCityDistrict/find/dist/${code}`);
//根据任意code码获取城市名称
export const getCityNameByCodeApi2 = code => instance.post(`/dict/area/find/${code}`);
// 专业目录 // 专业目录
export const getMajorTreeApi = () => instance.post(`/dict/major/tree`); export const getMajorTreeApi = () => instance.post(`/dict/major/tree`);
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</view> </view>
<view class="flex-between"> <view class="flex-between">
<text class="company-name">{{ data.companyName }}</text> <text class="company-name">{{ data.companyName }}</text>
<text class="address">{{ data.cityName + "-" + data.street }}</text> <text class="address" v-show="data.cityName && data.street">{{ data.cityName + "-" + data.street }}</text>
</view> </view>
</view> </view>
</template> </template>
......
...@@ -19,12 +19,14 @@ import articleList from "@/components/articleList/index.vue"; ...@@ -19,12 +19,14 @@ import articleList from "@/components/articleList/index.vue";
import { getArticleListApi, getArticleTypesApi } from "@/api/article.js"; import { getArticleListApi, getArticleTypesApi } from "@/api/article.js";
import { reactive, ref } from "vue"; import { reactive, ref } from "vue";
const active = ref(""); const active = ref("");
const typeList = ref([{ id: -1, name: "招聘会岗位报名" }]); // const typeList = ref([{ id: -1, name: "招聘会岗位查看" }]);
const typeList = ref([]);
getArticleTypesApi(2).then(res => { getArticleTypesApi(2).then(res => {
typeList.value.push(...res.data); typeList.value.push(...res.data);
changeType({id:typeList.value[0].id})
}); });
onShow(() => { onShow(() => {
changeType({ id: "" }); // changeType({ id: -1 });
}); });
const changeType = type => { const changeType = type => {
......
...@@ -23,22 +23,21 @@ ...@@ -23,22 +23,21 @@
import NavBar from "@/components/navBar/index.vue"; import NavBar from "@/components/navBar/index.vue";
import { xinhuaMpLogin } from "@/api/user.js"; import { xinhuaMpLogin } from "@/api/user.js";
import { setToken, getToken } from "@/utils/token"; import { setToken, getToken } from "@/utils/token";
import { removeToken } from "@/utils/token";
const res = ref(""); const res = ref("");
onLoad(() => { onLoad(() => {
// const token = getToken(); removeToken();
// if (token) { uni.removeStorageSync("userInfo");
// uni.switchTab({
// url: "/pages/postionList/index"
// });
// }
}); });
const login = () => { const login = () => {
xma.xh.getUserProfile({ xma.xh.getUserProfile({
range: ["ACCOUNT", "MOBILE"], range: ["ACCOUNT", "MOBILE",'CITIZEN'],
success(info) { success(info) {
xinhuaMpLogin({ encryptedData: info.data.uMobile, userType: "consumer" }) console.log('infoinfoinfo',info);
xinhuaMpLogin({ encryptedData: info.data.uMobile, userType: "consumer",name: info.data.uName,citizenId:info.data.uIdCardNo })
.then(data => { .then(data => {
if(data.code !== 200) return
res.value = data; res.value = data;
console.log("datadatadata", data); console.log("datadatadata", data);
setToken(data.data); setToken(data.data);
......
...@@ -18,7 +18,8 @@ const login = async () => { ...@@ -18,7 +18,8 @@ const login = async () => {
const a = await getSmsCode({ username: phone.value }); const a = await getSmsCode({ username: phone.value });
testLogin({ testLogin({
username: phone.value, username: phone.value,
code: "000000" code: "000000",
userType: "consumer",
}).then(res => { }).then(res => {
console.log(res); console.log(res);
if (res.code === 200) { if (res.code === 200) {
......
<template> <template>
<NavBar :showIcon="true" backgroundBox="#ffffff" :showTitle="true" title="职业指导"></NavBar> <NavBar :showIcon="true" backgroundBox="#ffffff" :showTitle="true" title="需求登记"></NavBar>
<div class="page"> <div class="page">
<scroll-view scroll-y="{{true}}" @scrolltolower="getData"> <scroll-view scroll-y="{{true}}" @scrolltolower="getData">
<view class="item" v-for="(item, index) in list" :key="item.id"> <view class="item" v-for="(item, index) in list" :key="item.id">
......
...@@ -2,12 +2,7 @@ ...@@ -2,12 +2,7 @@
<view style="height: 100%; padding-bottom: 40px"> <view style="height: 100%; padding-bottom: 40px">
<NavBar :showIcon="false" backgroundBox="#ffffff"> <NavBar :showIcon="false" backgroundBox="#ffffff">
<view class="search-form"> <view class="search-form">
<input <input v-model="keyword" placeholder="可查询公司、岗位名称等" placeholder-class="log-input-p" type="text" />
v-model="keyword"
placeholder="请输入要查询的内容"
placeholder-class="log-input-p"
type="text"
/>
<wd-icon class="search-icon" name="search" @tap="confirm"></wd-icon> <wd-icon class="search-icon" name="search" @tap="confirm"></wd-icon>
</view> </view>
</NavBar> </NavBar>
...@@ -37,6 +32,7 @@ ...@@ -37,6 +32,7 @@
</view> --> </view> -->
<view class="filter-other flex-between"> <view class="filter-other flex-between">
<wd-col-picker <wd-col-picker
title="请选择工作地点"
label="选择地址" label="选择地址"
v-model="valueCity" v-model="valueCity"
:columns="columnsCity" :columns="columnsCity"
...@@ -50,6 +46,7 @@ ...@@ -50,6 +46,7 @@
</wd-col-picker> </wd-col-picker>
<view class="filter-opstion"> <view class="filter-opstion">
<wd-col-picker <wd-col-picker
title="请选择专业"
v-model="majorValue" v-model="majorValue"
:columns="majorOpstion" :columns="majorOpstion"
value-key="name" value-key="name"
...@@ -58,7 +55,7 @@ ...@@ -58,7 +55,7 @@
@confirm="handleConfirmMajor" @confirm="handleConfirmMajor"
use-default-slot use-default-slot
> >
<view class="item">{{ majorText || "不限" }} <view class="arrow"></view> </view> <view class="item">{{ majorText || "专业" }} <view class="arrow"></view> </view>
</wd-col-picker> </wd-col-picker>
</view> </view>
<view class="item" :class="{ active: maskType == 'other' }" @tap="openMask('other')" <view class="item" :class="{ active: maskType == 'other' }" @tap="openMask('other')"
...@@ -66,128 +63,70 @@ ...@@ -66,128 +63,70 @@
></view> ></view>
</view> </view>
</view> </view>
<!-- 蒙版弹框 --> <!-- 更多筛选弹窗 -->
<view :style="{ top: contentHeight }" @touchmove.stop.prevent class="pop-mask" v-if="maskType" @click="maskType = null"> <view class="screen-pop-box-new" @touchmove.stop.prevent :style="{paddingTop:contentHeight}" v-if="maskType === 'other'">
<!-- <NavBar :showIcon="false" backgroundBox="#ffffff" :showTitle="true" title="筛选" /> --> <scroll-view class="content-two" scroll-y="true">
<view class="select-nav" :style="{ top: '0px' }" catchtouchmove="{{true}}" @tap.stop> <view class="right">
<view class="recommend">推荐</view> <view class="title">薪酬</view>
<view class="select-item"> <view class="list">
<!-- <text :class="{ active: maskType == 'address' }" @tap="openMask('address')">贵州省</text> --> <view
<text :class="{ active: maskType == 'other' }" @tap="openMask('other')">更多筛选</text> class="item"
</view> :class="{ 'light-two': activeOne === index }"
</view> v-for="(item, index) in salary"
<!-- 区域弹窗 --> :key="index"
<!-- <view @tap="choiceDetails(0,item, index)"
@click.stop="" >{{ item.text }}</view
catchtap="preventD" >
class="screen-pop address screen-pop-padding {{regionPop? 'screen-pop-tion':''}} "
v-if="maskType === 'address'"
>
<view class="region-pop-content">
<view class="region-pop-left">
<scroll-view scroll-y style="height: 652rpx">
<view
class="region-list"
:class="{ 'region-list-color': cityId == item.code }"
v-for="item in cityData"
:key="item.code"
@tap="bindCityList(item.code, item.name)"
>{{ item.name }}</view
>
</scroll-view>
</view> </view>
<view class="region-pop-right"> <view class="title">学历</view>
<scroll-view scroll-y style="height: 652rpx"> <view class="list">
<view class="region-list" :class="{ 'region-list-color': regionId == -1 }" @tap="bindRegionList(-1)" <view
>全部</view class="item"
> :class="{ 'light-two': activeTwo === index }"
<view v-for="(item, index) in educationData"
class="region-list" :key="item.code"
:class="{ 'region-list-color': regionId == v.code }" @tap="choiceDetails(1,item, index)"
v-for="v in regionData" >{{ item.text }}</view
:key="v.code" >
@tap="bindRegionList(v.code)"
>{{ v.name }}</view
>
</scroll-view>
</view> </view>
</view> <view class="title">食宿条件</view>
</view> --> <view class="list">
<!-- 筛选弹窗 --> <view
<view class="item"
@click.stop="" :class="{ 'light-two': activeThree === index }"
catchtap="preventD" v-for="(item, index) in eatAndLiveData"
class="screen-pop other screen-pop-padding {{screenPop? 'screen-pop-tion':''}}" :key="item.code"
v-if="maskType === 'other'" @tap="choiceDetails(2,item, index)"
> >{{ item.text }}</view
<view class="screen-pop-box"> >
<view class="content-two"> </view>
<view class="left"> <view class="title">人员类别</view>
<view class="item" @tap="choice(0)" :class="{ light: active === 0 }">薪酬</view> <view class="list">
<view class="item" @tap="choice(1)" :class="{ light: active === 1 }">学历</view> <view
<view class="item" @tap="choice(2)" :class="{ light: active === 2 }">食宿条件</view> class="item"
<view class="item" @tap="choice(3)" :class="{ light: active === 3 }">身份</view> :class="{ 'light-two': activeFour === index }"
<view class="item" @tap="choice(4)" :class="{ light: active === 4 }">职位类型</view> v-for="(item, index) in identityData"
</view> :key="item.code"
<view class="right"> @tap="choiceDetails(3,item, index)"
<view class="title">{{ active === 0 ? "薪酬要求" : selectionTitle }}</view> >{{ item.text }}{{ item.text }}</view
<view v-if="active === 0" class="list"> >
<view
class="item"
:class="{ 'light-two': activeOne === index }"
v-for="(item, index) in salary"
:key="index"
@tap="choiceDetails(item, index)"
>{{ item.text }}</view
>
</view>
<view v-if="active === 1" class="list">
<view
class="item"
:class="{ 'light-two': activeTwo === index }"
v-for="(item, index) in dataList"
:key="item.code"
@tap="choiceDetails(item, index)"
>{{ item.text }}</view
>
</view>
<view v-if="active == 2" class="list">
<view
class="item"
:class="{ 'light-two': activeThree === index }"
v-for="(item, index) in dataList"
:key="item.code"
@tap="choiceDetails(item, index)"
>{{ item.text }}</view
>
</view>
<view v-if="active == 3" class="list">
<view
class="item"
:class="{ 'light-two': activeFour === index }"
v-for="(item, index) in dataList"
:key="item.code"
@tap="choiceDetails(item, index)"
>{{ item.text }}</view
>
</view>
<view v-if="active === 4" class="list">
<view
class="item"
:class="{ 'light-two': activeFive === index }"
v-for="(item, index) in dataList"
:key="item.id"
@tap="choiceDetails(item, index)"
>{{ item.name }}</view
>
</view>
</view>
</view> </view>
<view class="content-two-bottom"> <view class="title">职位类型</view>
<button @tap="resetParams">重置</button> <view class="list">
<button @tap="confirmParameters">确认</button> <view
class="item"
:class="{ 'light-two': activeFive === index }"
v-for="(item, index) in positionType"
:key="item.id"
@tap="choiceDetails(4,item, index)"
>{{ item.name }}</view
>
</view> </view>
</view> </view>
</scroll-view>
<view class="content-two-bottom">
<button @tap="resetParams">重置</button>
<button @tap="confirmParameters">确认</button>
</view> </view>
</view> </view>
<!-- 全职职位列表 --> <!-- 全职职位列表 -->
...@@ -387,7 +326,7 @@ const openMask = type => { ...@@ -387,7 +326,7 @@ const openMask = type => {
}; };
// 城市筛选 // 城市筛选
const valueCity = ref([]); const valueCity = ref([]);
const cityText = ref("全国"); const cityText = ref("工作地点");
const columnsCity = ref([]); const columnsCity = ref([]);
const getColumnsCity = () => { const getColumnsCity = () => {
getTreeListApi().then(res => { getTreeListApi().then(res => {
...@@ -596,12 +535,11 @@ const choice = index => { ...@@ -596,12 +535,11 @@ const choice = index => {
break; break;
default: default:
selectionTitle.value = "职位类型"; selectionTitle.value = "职位类型";
console.log(positionType.value);
dataList.value = positionType.value; dataList.value = positionType.value;
} }
}; };
const choiceDetails = (data, index) => { const choiceDetails = (active,data, index) => {
switch (active.value) { switch (active) {
case 0: case 0:
activeOne.value = index * 1; activeOne.value = index * 1;
minSalary = data.min; minSalary = data.min;
...@@ -658,14 +596,14 @@ const resetParams = () => { ...@@ -658,14 +596,14 @@ const resetParams = () => {
identityRequirement = null; identityRequirement = null;
jobTypePid = null; jobTypePid = null;
pageNo = 1; pageNo = 1;
positionListData.value = []; positionListData.value = [];
getListData(); getListData();
}; };
// 职位搜索 // 职位搜索
const confirm = e => { const confirm = e => {
pageNo = 1; pageNo = 1;
positionListData.value = []; positionListData.value = [];
getListData(); getListData();
}; };
// 职位筛选搜索 // 职位筛选搜索
...@@ -949,8 +887,8 @@ const getListData = () => { ...@@ -949,8 +887,8 @@ const getListData = () => {
.pop-mask { .pop-mask {
position: fixed; position: fixed;
inset: 0; inset: 0;
z-index: 100; z-index: 10000;
background-color: #00000066; background-color: #ffffff;
.address { .address {
.region-pop-content { .region-pop-content {
text-align: center; text-align: center;
...@@ -1330,68 +1268,81 @@ const getListData = () => { ...@@ -1330,68 +1268,81 @@ const getListData = () => {
.screen-pop-padding { .screen-pop-padding {
padding: 0; padding: 0;
} }
.content-two { .screen-pop-box-new {
display: flex; position: fixed;
.left { inset: 0;
width: 200rpx; background: #ffffff;
// max-height:900rpx; z-index: 999999;
background: #e8f2ff; .content-two {
.item { display: flex;
font-size: 32rpx; height: 80vh;
.left {
width: 200rpx; width: 200rpx;
text-align: center; // max-height:900rpx;
height: 100rpx; background: #e8f2ff;
line-height: 100rpx;
}
.light {
background: #ffffff;
color: #1f86ff;
}
}
.right {
width: calc(100% - 200rpx);
padding: 32rpx 24rpx;
.title {
font-size: 24rpx;
font-weight: 500;
color: #1b2026;
}
.list {
margin-top: 24rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
.item { .item {
width: 236rpx; font-size: 32rpx;
height: 60rpx; width: 200rpx;
line-height: 60rpx;
text-align: center; text-align: center;
border-radius: 8rpx; height: 100rpx;
background: #f0f4fa; line-height: 100rpx;
border: 1rpx solid #f0f4fa;
font-size: 24rpx;
color: #1b2026;
margin-right: 11rpx;
margin-bottom: 16rpx;
} }
.light-two { .light {
background: #ffffff; background: #ffffff;
border: 1rpx solid #1f86ff;
color: #1f86ff; color: #1f86ff;
} }
} }
.right {
width: 100%;
padding: 32rpx 24rpx;
.title {
font-size: 32rpx;
font-weight: blod;
color: #1b2026;
}
.list {
margin: 16rpx 0 40rpx;
display: flex;
flex-wrap: wrap;
align-items: center;
.item {
padding: 0 14rpx;
min-width: 195rpx;
height: 60rpx;
line-height: 60rpx;
text-align: center;
border-radius: 8rpx;
background: #f0f4fa;
border: 1rpx solid #f0f4fa;
font-size: 24rpx;
color: #1b2026;
margin-right: 11rpx;
margin-bottom: 16rpx;
}
.light-two {
background: #ffffff;
border: 1rpx solid #1f86ff;
color: #1f86ff;
}
}
}
} }
} .content-two-bottom {
.content-two-bottom { position: absolute;
padding: 16rpx; bottom: calc(30rpx + env(safe-area-inset-bottom));
display: flex; display: flex;
button { justify-content:space-around;
flex-shrink: 0; width: 100%;
background: #1f86ff; button {
color: #ffffff; width: 300rpx;
font-size: 24rpx; flex-shrink: 0;
background: #1f86ff;
color: #ffffff;
font-size: 28rpx;
}
} }
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 0; width: 0;
height: 0; height: 0;
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<view class="pos-details"> <view class="pos-details">
<view class="pos-title"> <view class="pos-title">
<text class="text">{{ partTimeJobData.name }}</text> <text class="text">{{ partTimeJobData.name }}</text>
<text class="text">({{ partTimeJobData.recruitmentNumber}}人)</text> <text class="text">({{ partTimeJobData.recruitmentNumber }}人)</text>
</view> </view>
<view class="salary-wrap"> <view class="salary-wrap">
<view v-if="partTimeJobData"> <view v-if="partTimeJobData">
...@@ -20,7 +20,15 @@ ...@@ -20,7 +20,15 @@
<view class="salary" v-else> <view class="salary" v-else>
<view v-if="partTimeJobData.minSalary > 0"> <view v-if="partTimeJobData.minSalary > 0">
<text class="number" <text class="number"
>{{ partTimeJobData.minSalary<1000?partTimeJobData.minSalary:partTimeJobData.minSalary / 1000 +'k'}}-{{ partTimeJobData.maxSalary<1000?partTimeJobData.maxSalary:partTimeJobData.maxSalary / 1000 +'k' }}</text >{{
partTimeJobData.minSalary < 1000
? partTimeJobData.minSalary
: partTimeJobData.minSalary / 1000 + "k"
}}-{{
partTimeJobData.maxSalary < 1000
? partTimeJobData.maxSalary
: partTimeJobData.maxSalary / 1000 + "k"
}}</text
> >
<text class="unit">/{{ partTimeJobData.company }}</text> <text class="unit">/{{ partTimeJobData.company }}</text>
</view> </view>
...@@ -37,16 +45,18 @@ ...@@ -37,16 +45,18 @@
<view class="experience-and-education flex-align-center"> <view class="experience-and-education flex-align-center">
<view class="flex-align-center"> <view class="flex-align-center">
<img src="@/static/image/postion/experience.png" alt="" /> <img src="@/static/image/postion/experience.png" alt="" />
<text v-if="partTimeJobData.minAgeRequirement>0">{{partTimeJobData.minAgeRequirement}}-{{partTimeJobData.maxAgeRequirement }}</text> <text v-if="partTimeJobData.minAgeRequirement > 0"
>{{ partTimeJobData.minAgeRequirement }}-{{ partTimeJobData.maxAgeRequirement }}</text
>
<text v-else>不限</text> <text v-else>不限</text>
</view> </view>
<view class="flex-align-center"> <view class="flex-align-center">
<img src="@/static/image/postion/education.png" alt="" /> <img src="@/static/image/postion/education.png" alt="" />
<text>{{ partTimeJobData.educationRequirement}}</text> <text>{{ partTimeJobData.educationRequirement }}</text>
</view> </view>
<view class="flex-align-center"> <view class="flex-align-center">
<img src="@/static/image/postion/people.png" alt="" /> <img src="@/static/image/postion/people.png" alt="" />
<text>{{ partTimeJobData.identityRequirement}}</text> <text>{{ partTimeJobData.identityRequirement }}</text>
</view> </view>
</view> </view>
<view class="pos-type flex-between"> <view class="pos-type flex-between">
...@@ -55,15 +65,19 @@ ...@@ -55,15 +65,19 @@
<text>{{ partTimeJobData.cityName }}</text> <text>{{ partTimeJobData.cityName }}</text>
</view> </view>
<view class="type"> <view class="type">
<text>{{partTimeJobData.workMode}}</text> <text>{{ partTimeJobData.workMode }}</text>
<text class="margin-8">|</text> <text class="margin-8">|</text>
<text>{{ partTimeJobData.jobTypeName }}</text> <text>{{ partTimeJobData.jobTypeName }}</text>
</view> </view>
</view> </view>
<view class="label"> <view class="label">
<view class="label-item" v-if="partTimeJobData.positionalTitle">{{partTimeJobData.positionalTitle}}</view> <view class="label-item" v-if="partTimeJobData.positionalTitle">{{ partTimeJobData.positionalTitle }}</view>
<view class="label-item" v-if="partTimeJobData.professionalCertificates">{{partTimeJobData.professionalCertificates}}</view> <view class="label-item" v-if="partTimeJobData.professionalCertificates">{{
<view class="label-item" v-if="partTimeJobData.specialCertificates">{{partTimeJobData.specialCertificates}}</view> partTimeJobData.professionalCertificates
}}</view>
<view class="label-item" v-if="partTimeJobData.specialCertificates">{{
partTimeJobData.specialCertificates
}}</view>
</view> </view>
<view class="cos-welfare" v-if="partTimeJobData.welfareTags"> <view class="cos-welfare" v-if="partTimeJobData.welfareTags">
<view class="welfare-list" v-for="(wel, i) in partTimeJobData.welfareTags" :key="i">{{ wel }}</view> <view class="welfare-list" v-for="(wel, i) in partTimeJobData.welfareTags" :key="i">{{ wel }}</view>
...@@ -111,7 +125,7 @@ ...@@ -111,7 +125,7 @@
</view> </view>
<view class="cos-position"> <view class="cos-position">
<text <text
>{{ partTimeJobData.companyInfo.location.split('-')[1] || "" }} <text class="margin-8"></text> | >{{ partTimeJobData.companyInfo.location.split("-")[1] || "" }} <text class="margin-8"></text> |
<text class="margin-8"></text>{{ partTimeJobData.companyInfo.jobVacancies || 0 }}个在招职位</text <text class="margin-8"></text>{{ partTimeJobData.companyInfo.jobVacancies || 0 }}个在招职位</text
> >
</view> </view>
...@@ -128,7 +142,7 @@ ...@@ -128,7 +142,7 @@
<!-- 职位推荐 --> <!-- 职位推荐 -->
<view class="pos-recommend margin-top24"> <view class="pos-recommend margin-top24">
<view class="title"> <view class="title">
<text class="gradient-title">优选职位</text> <text class="gradient-title">温馨提示</text>
</view> </view>
<!-- 职位列表 --> <!-- 职位列表 -->
<view <view
...@@ -174,18 +188,30 @@ ...@@ -174,18 +188,30 @@
</view> </view>
<!-- 聊工作/投简历Btn --> <!-- 聊工作/投简历Btn -->
<view class="btn" v-if="!partTimeJobData.application"> <view class="btn" v-if="!partTimeJobData.application">
<view class="btn-list back-color" @tap="bindDelivery">投简历</view> <view class="btn-list back-color" @tap="bindDelivery">投简历</view>
</view> </view>
<!-- 提示 --> <!-- 提示 -->
<view class="warn-wrap"> <view class="warn-wrap">
<view class="warn"> <view class="warn">
<view class="title flex-align-center"> <view class="title flex-align-center">
<!-- <image src="{{ossImgPrefix}}/warn.png" /> --> <text class="content">观山湖人社提醒您:</text>
乐业安全提示 <text class="content">求职请记牢“九要九不要”</text>
</view> </view>
<view class="content"> <!-- <view class="content">
未标明收费的职位不会收取任何费用,若商家要求缴纳费用或押金,<text>请一定提高警惕并第一时间向我们举报!</text> 未标明收费的职位不会收取任何费用,若商家要求缴纳费用或押金,<text>请一定提高警惕并第一时间向我们举报!</text>
</view> </view> -->
<text class="content">一 要查看机构或企业是否有相关证照和资质,不要盲目信从;</text>
<text class="content"
>
要坚决抵制收取押金、报名费、风险金、扣押证件等违法行为,谨慎研判收取培训等费用的合理性,不要轻易交费;</text
>
<text class="content">三 要看承诺薪资是否与社会同等岗位大体一致,不要轻信高薪</text>
<text class="content">四 要通过小红书、抖音等社交平台了解机构或企业的口碑,不要慌不择路;</text>
<text class="content">五 要详细询问公司的背景及应聘岗位的薪酬、内容、时长等信息,不要不清不楚;</text>
<text class="content">六 要在达成就业意向后及时签订规范的劳动合同或就业协议等书面文书,不要满不在乎;</text>
<text class="content">七 要仔细阅读并完全理解所签文书特别是涉及费用、服务内容、违约责任等条款,不要任人摆布;</text>
<text class="content">八 要注意保护个人信息,同时收集保留损害自身权益的证据,不要口说无凭;</text>
<text class="content">九 要及时向当地人社部门投诉、反映、举报侵害就业权益的行为,不要畏手畏脚。</text>
</view> </view>
</view> </view>
</div> </div>
...@@ -195,11 +221,14 @@ ...@@ -195,11 +221,14 @@
import steps from "@/components/steps/index.vue"; import steps from "@/components/steps/index.vue";
import { ref, reactive } from "vue"; import { ref, reactive } from "vue";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { getEnumText} from "@/utils/utils"; import { getEnumText } from "@/utils/utils";
import { getJobDetailApi, submitResumeApi } from "@/api/postion"; import { getJobDetailApi, submitResumeApi } from "@/api/postion";
import { getLoginUserApi } from "@/api/user";
const partTimeJobData = ref({}); const partTimeJobData = ref({});
const recommendList = ref([]); const recommendList = ref([]);
const stepViewData = ref(null); const stepViewData = ref(null);
const userActive = ref(null)
let dutyFlag = ref(false); let dutyFlag = ref(false);
const mapCenter = reactive({ const mapCenter = reactive({
latitude: 26.63, latitude: 26.63,
...@@ -228,15 +257,18 @@ const markers = reactive([ ...@@ -228,15 +257,18 @@ const markers = reactive([
const getJobDetail = id => { const getJobDetail = id => {
getJobDetailApi(id).then(async ({ data }) => { getJobDetailApi(id).then(async ({ data }) => {
data.id = id; data.id = id;
data.position.positionDesc = data.position.positionDesc.replace(/\n/g, '<br>') data.position.positionDesc = data.position.positionDesc.replace(/\n/g, "<br>");
partTimeJobData.value = data.position; partTimeJobData.value = data.position;
partTimeJobData.value.companyInfo = data.companyInfo; partTimeJobData.value.companyInfo = data.companyInfo;
partTimeJobData.value.application = data.application; partTimeJobData.value.application = data.application;
partTimeJobData.value.educationRequirement = await getEnumText("EnumEducationRequirement", data.position.educationRequirement); partTimeJobData.value.educationRequirement = await getEnumText(
"EnumEducationRequirement",
data.position.educationRequirement
);
partTimeJobData.value.identityRequirement = await getEnumText("EnumIdentityType", data.position.identityRequirement); partTimeJobData.value.identityRequirement = await getEnumText("EnumIdentityType", data.position.identityRequirement);
partTimeJobData.value.workMode = await getEnumText("EnumWorkMode", data.position.workMode); partTimeJobData.value.workMode = await getEnumText("EnumWorkMode", data.position.workMode);
partTimeJobData.value.company = await getEnumText("EnumSettlementType", data.position.settlementType) partTimeJobData.value.company = await getEnumText("EnumSettlementType", data.position.settlementType);
partTimeJobData.value.benefits = partTimeJobData.value.benefits.split(',') partTimeJobData.value.benefits = partTimeJobData.value.benefits.split(",");
// 设置地图点 // 设置地图点
markers[0].latitude = data.locationLatitude; markers[0].latitude = data.locationLatitude;
markers[0].longitude = data.locationLongitude; markers[0].longitude = data.locationLongitude;
...@@ -247,6 +279,13 @@ const getJobDetail = id => { ...@@ -247,6 +279,13 @@ const getJobDetail = id => {
}; };
/* 投递简历 */ /* 投递简历 */
const bindDelivery = () => { const bindDelivery = () => {
if (userActive.value === 0) {
uni.showToast({
title: "请先完善个人信息!",
icon: "none"
});
return
}
submitResumeApi(partTimeJobData.value.id).then(res => { submitResumeApi(partTimeJobData.value.id).then(res => {
if (res.code === 200) { if (res.code === 200) {
uni.showToast({ uni.showToast({
...@@ -269,6 +308,9 @@ const navigateTo = url => { ...@@ -269,6 +308,9 @@ const navigateTo = url => {
onLoad(({ id }) => { onLoad(({ id }) => {
getJobDetail(id); getJobDetail(id);
getLoginUserApi().then(res => {
userActive.value = res.data.status
});
}); });
</script> </script>
...@@ -737,16 +779,16 @@ onLoad(({ id }) => { ...@@ -737,16 +779,16 @@ onLoad(({ id }) => {
color: #1b2026; color: #1b2026;
} }
} }
.label{ .label {
margin-top:16rpx ; margin-top: 16rpx;
display: flex; display: flex;
.label-item{ .label-item {
background: #F2F3F5; background: #f2f3f5;
padding: 8rpx 16rpx; padding: 8rpx 16rpx;
color: #4E5969; color: #4e5969;
font-size: 24rpx; font-size: 24rpx;
margin-right: 16rpx; margin-right: 16rpx;
border-radius:5rpx ; border-radius: 5rpx;
} }
} }
.salary-wrap { .salary-wrap {
...@@ -934,18 +976,24 @@ onLoad(({ id }) => { ...@@ -934,18 +976,24 @@ onLoad(({ id }) => {
.warn { .warn {
padding: 34rpx; padding: 34rpx;
background: #fff2ed; background: #fff2ed;
display: flex;
flex-direction: column;
img { img {
width: 25rpx; width: 25rpx;
height: 28rpx; height: 28rpx;
margin-right: 14rpx; margin-right: 14rpx;
} }
.title { .title {
font-size: 28rpx; display: flex;
font-weight: 600; flex-direction: column;
color: #73331c; text {
font-size: 28rpx;
font-weight: 600;
color: #73331c;
}
} }
.content { .content {
margin-top: 16rpx; margin: 12rpx 0;
font-size: 22rpx; font-size: 22rpx;
font-weight: 600; font-weight: 600;
line-height: 36rpx; line-height: 36rpx;
......
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
<!-- <view v-if="v.status == 2" class="state success"> 待面试 </view> <!-- <view v-if="v.status == 2" class="state success"> 待面试 </view>
<view v-if="v.status == 4" class="state warning"> 已拒绝 </view> --> <view v-if="v.status == 4" class="state warning"> 已拒绝 </view> -->
<view class="card" v-if="postionData.application?.status == 4"> <view class="card" v-if="postionData.application?.status == 4">
<view class="t1">不合适</view> <view class="t1">很遗憾</view>
<view class="t2">很遗憾,您没有得到本岗位的面试邀约感谢您的投递!</view> <view class="t2">您没有得到本岗位的面试邀约,感谢您的投递!</view>
<view class="shadow"></view> <view class="shadow"></view>
</view> </view>
<view class="card success" v-if="postionData.application?.status == 2"> <view class="card success" v-if="postionData.application?.status == 2">
...@@ -13,6 +13,20 @@ ...@@ -13,6 +13,20 @@
<view class="t2">恭喜您获得本岗位的面试邀约,注意保持电话畅通或可以主动联系我们</view> <view class="t2">恭喜您获得本岗位的面试邀约,注意保持电话畅通或可以主动联系我们</view>
<view class="shadow"></view> <view class="shadow"></view>
</view> </view>
<view class="pos-card">
<view class="pos-name flex-between">
<text class="name">{{ postionData.position.name }}</text>
<view v-if="postionData.position.minSalary>0">{{ postionData.position.minSalary<1000?postionData.position.minSalary:postionData.position.minSalary / 1000 +'k'}}-{{ postionData.position.maxSalary<1000?postionData.position.maxSalary:postionData.position.maxSalary / 1000 +'k' }}<text>/{{ postionData.company }}</text></view>
<view v-else class="salary2">面议</view>
</view>
<view class="com-name">{{ postionData.position.companyName }}</view>
<view class="tags">
<text class="item" v-for="v in postionData.position.benefits?.split(',') || []" :key="v">{{ v }}</text>
</view>
</view>
<view class="pos-detail">
{{ postionData.position.positionDesc }}
</view>
<template v-if="postionData.application?.status == 2"> <template v-if="postionData.application?.status == 2">
<div class="interview-info"> <div class="interview-info">
...@@ -34,22 +48,7 @@ ...@@ -34,22 +48,7 @@
</div> </div>
</div> </div>
</template> </template>
<template v-else>
<view class="pos-card">
<view class="pos-name flex-between">
<text class="name">{{ postionData.position.name }}</text>
<view v-if="postionData.position.minSalary>0">{{ postionData.position.minSalary<1000?postionData.position.minSalary:postionData.position.minSalary / 1000 +'k'}}-{{ postionData.position.maxSalary<1000?postionData.position.maxSalary:postionData.position.maxSalary / 1000 +'k' }}<text>/{{ postionData.company }}</text></view>
<view v-else class="salary2">面议</view>
</view>
<view class="com-name">{{ postionData.position.companyName }}</view>
<view class="tags">
<text class="item" v-for="v in postionData.position.benefits?.split(',') || []" :key="v">{{ v }}</text>
</view>
</view>
<view class="pos-detail">
{{ postionData.position.positionDesc }}
</view>
</template>
<view class="steps-wrap"> <view class="steps-wrap">
<steps :data="postionData.application"></steps> <steps :data="postionData.application"></steps>
</view> </view>
...@@ -120,7 +119,7 @@ onLoad(({ id }) => { ...@@ -120,7 +119,7 @@ onLoad(({ id }) => {
flex-direction: column; flex-direction: column;
gap: 32rpx; gap: 32rpx;
padding: 0 32rpx; padding: 0 32rpx;
margin-top: 168rpx; margin-top: 100rpx;
div { div {
display: flex; display: flex;
p { p {
......
...@@ -34,9 +34,7 @@ ...@@ -34,9 +34,7 @@
placeholderW placeholderW
safeAreaInsetBottom safeAreaInsetBottom
> >
<wd-button :round="false" class="foot-btn" :disabled="params.questionDesc == '' || params.imagesPath == ''" <wd-button :round="false" class="foot-btn" :disabled="params.questionDesc == ''">投诉建议</wd-button>
>投诉建议</wd-button
>
</wd-tabbar> </wd-tabbar>
</view> </view>
</template> </template>
...@@ -56,7 +54,7 @@ const params = reactive({ ...@@ -56,7 +54,7 @@ const params = reactive({
onLoad(option => { onLoad(option => {
if (option.id) { if (option.id) {
id.value = option.id; id.value = option.id;
feedbackByIdFn(option.id); feedbackByIdFn(option.id);
} }
}); });
const feedbackByIdFn = id => { const feedbackByIdFn = id => {
...@@ -92,9 +90,8 @@ const chooseImage = () => { ...@@ -92,9 +90,8 @@ const chooseImage = () => {
}; };
const feedbackAddFn = () => { const feedbackAddFn = () => {
xma.showLoading(); if (params.questionDesc !== "") {
if (params.questionDesc == "" || params.imagesPath == "") { xma.showLoading();
} else {
feedbackAdd(params).then(res => { feedbackAdd(params).then(res => {
if (res.code == 200) { if (res.code == 200) {
xma.hideLoading(); xma.hideLoading();
......
...@@ -3,15 +3,14 @@ ...@@ -3,15 +3,14 @@
<div class="user-container"> <div class="user-container">
<view class="bg"></view> <view class="bg"></view>
<!-- 用户信息 --> <!-- 用户信息 -->
<view class="user-info flex-align-center"> <view class="user-info flex-align-center" @click="navigateTo('/pages/user/resume/essentialInformation/index')">
<view class="avatar"> <view class="avatar">
<!-- <image wx:if="{{avatarPath}}" src="{{imgPrefix}}/{{avatarPath}}" mode="" /> <!-- <img v-if="avatarPath" :src="evn.APP_IMAGE_BASE_API + avatarPath" />
<image wx:else="" class="userinfo-avatar" src="{{ossImgPrefix}}/user/default-avatar.png"></image> --> <img v-else src="@/static/image/user/default-avatar.png" alt="" /> -->
<img v-if="avatarPath" :src="evn.APP_IMAGE_BASE_API + avatarPath" /> <img src="@/static/image/user/default-avatar.png" alt="" />
<img v-else src="@/static/image/user/default-avatar.png" alt="" />
</view> </view>
<view class="name" @click="navigateTo('/pages/user/resume/essentialInformation/index')"> <view class="name">
<text >{{ realName || "未实名" }}</text> <text >{{ realName || "名" }}</text>
<img src="@/static/image/user/write.png" /> <img src="@/static/image/user/write.png" />
</view> </view>
<view class="education">{{ schoolName || '暂未写入' }} | {{ educationLevelText || "无" }}</view> <view class="education">{{ schoolName || '暂未写入' }} | {{ educationLevelText || "无" }}</view>
...@@ -95,19 +94,19 @@ const navList = [ ...@@ -95,19 +94,19 @@ const navList = [
url: "/pages/login/index", url: "/pages/login/index",
text: "退出登录" text: "退出登录"
}, },
{ // {
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href, // icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
url: "/pages/test", // url: "/pages/test",
text: "测试页面" // text: "测试页面"
}, // },
{ // {
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href, // icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
url: "/pages/login/test", // url: "/pages/login/test",
fn: () => { // fn: () => {
removeToken(); // removeToken();
}, // },
text: "退出登录(去测试登录)" // text: "退出登录(去测试登录)"
} // }
]; ];
/* 个人信息 */ /* 个人信息 */
const realName = ref(""); const realName = ref("");
...@@ -118,17 +117,17 @@ const educationLevelText = ref(""); ...@@ -118,17 +117,17 @@ const educationLevelText = ref("");
const getUserInfo = () => { const getUserInfo = () => {
getLoginUserApi().then(async res => { getLoginUserApi().then(async res => {
const { avatarPath: _avatarPath, name: _realName, education } = res.data; const { avatarPath: _avatarPath, name: _realName, education } = res.data;
realName.value = _realName; realName.value = _realName || null;
avatarPath.value = _avatarPath; avatarPath.value = _avatarPath || null;
/* this.setData({ /* this.setData({
avatarPath, avatarPath,
realName, realName,
}); */ }); */
educationLevelText.value = await getEnumText("EnumEducation", education); educationLevelText.value = await getEnumText("EnumEducation", education) || null;
}); });
getUserResumeApi().then(res => { getUserResumeApi().then(res => {
const { educationExperience } = res.data; const { educationExperience } = res.data;
schoolName.value = JSON.parse(educationExperience)[0].schoolName; schoolName.value = JSON.parse(educationExperience)[0].schoolName || null;
}); });
}; };
</script> </script>
......
<template> <template>
<NavBar :showIcon="true" :showTitle="true" title="教育经历" backgroundBox="#ffffff"></NavBar> <NavBar :showIcon="true" :showTitle="true" title="教育经历" backgroundBox="#ffffff"></NavBar>
<view class="item"> <view class="item">
<view class="label">学校名称</view> <view class="label"><span style="color: red;">*</span>学校名称</view>
<input <input
v-model="params.schoolName" v-model="params.schoolName"
placeholder-style="font-size: 24rpx;color: #77818f;" placeholder-style="font-size: 24rpx;color: #77818f;"
...@@ -10,12 +10,12 @@ ...@@ -10,12 +10,12 @@
/> />
</view> </view>
<view class="item"> <view class="item">
<view class="label">专业名称</view> <view class="label"><span style="color: red;">*</span>专业名称</view>
<input v-model="params.major" placeholder-style="font-size: 24rpx;color: #77818f;" placeholder="请输入专业名称" border="{{ false }}" /> <input v-model="params.major" placeholder-style="font-size: 24rpx;color: #77818f;" placeholder="请输入专业名称" border="{{ false }}" />
</view> </view>
<view class="item"> <view class="item">
<view class="label">开始时间</view> <view class="label"><span style="color: red;">*</span>开始时间</view>
<wd-datetime-picker <wd-datetime-picker
:default-value="new Date().getTime()" :default-value="new Date().getTime()"
:maxDate="new Date().getTime()" :maxDate="new Date().getTime()"
...@@ -31,7 +31,7 @@ ...@@ -31,7 +31,7 @@
</wd-datetime-picker> </wd-datetime-picker>
</view> </view>
<view class="item"> <view class="item">
<view class="label">结束时间</view> <view class="label"><span style="color: red;">*</span>结束时间</view>
<wd-datetime-picker <wd-datetime-picker
:default-value="new Date().getTime()" :default-value="new Date().getTime()"
:minDate="params.startDate" :minDate="params.startDate"
...@@ -90,7 +90,7 @@ const submit = () => { ...@@ -90,7 +90,7 @@ const submit = () => {
} }
if (!really) { if (!really) {
uni.showToast({ uni.showToast({
title: `请完善表单!`, title: `请完善相关信息`,
icon: "none" icon: "none"
}); });
return; return;
......
<template> <template>
<div class="essential-information"> <div class="essential-information">
<NavBar backgroundBox="#ffffff" :showIcon="true" :showTitle="true" title="基本信息"></NavBar> <NavBar backgroundBox="#ffffff" :showIcon="true" :showTitle="true" title="基本信息"></NavBar>
<view <!-- <view
class="real-name-authentication flex-between" class="real-name-authentication flex-between"
v-if="verified == 0" v-if="verified == 0"
@tap="toIdcard" @tap="toIdcard"
...@@ -15,25 +15,28 @@ ...@@ -15,25 +15,28 @@
</view> </view>
</view> </view>
<view class="btn">去认证</view> <view class="btn">去认证</view>
</view> </view> -->
<!-- 个人资料 --> <!-- 个人资料 -->
<view class="my-info"> <view class="my-info">
<view class="my-info-list flex-row-b-c pd-b-38 upload-avatar" @tap="bindUploadImg"> <view class="my-info-list flex-row-b-c pd-b-38 upload-avatar">
<view class="my-info-title avatar-label"> <view class="my-info-title avatar-label">
<text>头像</text> <text>个人照片</text>
<!-- <text style="font-size: 20rpx;color: #77818f;"> (点击上传)</text> -->
</view> </view>
<img class="avatar" v-if="userInfo.avatarPath" :src="evn.APP_IMAGE_BASE_API + userInfo.avatarPath" /> <!-- <img class="avatar" v-if="userInfo.avatarPath" :src="evn.APP_IMAGE_BASE_API + userInfo.avatarPath" />
<img class="avatar" v-else src="@/static/image/user/default-avatar.png" /> <img class="avatar" v-else src="@/static/image/user/default-avatar.png" /> -->
<img class="avatar" src="@/static/image/user/default-avatar.png" />
</view> </view>
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<text>姓名</text> <span style="color: red;">*</span><text>姓名</text>
</view> </view>
<input class="my-info-form" v-model="userInfo.name" placeholder="请输入" placeholder-class="placeholder-style" /> <input class="my-info-form" v-model="userInfo.name" placeholder="请输入" placeholder-class="placeholder-style" />
</view> </view>
<!-- 性别 --> <!-- 性别 -->
<view class="my-info-list pd-b-38"> <view class="my-info-list pd-b-38">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<text>性别</text> <text>性别</text>
</view> </view>
<view class="gender radios"> <view class="gender radios">
...@@ -46,6 +49,7 @@ ...@@ -46,6 +49,7 @@
<!-- 出生年月 --> <!-- 出生年月 -->
<view class="my-info-list flex-between"> <view class="my-info-list flex-between">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<text>出生年月</text> <text>出生年月</text>
</view> </view>
<wd-datetime-picker <wd-datetime-picker
...@@ -68,7 +72,8 @@ ...@@ -68,7 +72,8 @@
<!-- 身份 --> <!-- 身份 -->
<view class="my-info-list pd-b-38"> <view class="my-info-list pd-b-38">
<view class="my-info-title label"> <view class="my-info-title label">
<text>身份</text> <span style="color: red;">*</span>
<text>人员类别</text>
</view> </view>
<wd-checkbox-group v-model="userInfo.identityTypes" shape="dot" inline> <wd-checkbox-group v-model="userInfo.identityTypes" shape="dot" inline>
<wd-checkbox :modelValue="v.code" :key="v.code" v-for="v in identityTypeOpstion">{{ v.text }}</wd-checkbox> <wd-checkbox :modelValue="v.code" :key="v.code" v-for="v in identityTypeOpstion">{{ v.text }}</wd-checkbox>
...@@ -77,6 +82,7 @@ ...@@ -77,6 +82,7 @@
<!-- 户籍地* --> <!-- 户籍地* -->
<view class="my-info-list flex-between"> <view class="my-info-list flex-between">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<text>户籍地</text> <text>户籍地</text>
</view> </view>
<wd-col-picker <wd-col-picker
...@@ -98,6 +104,7 @@ ...@@ -98,6 +104,7 @@
<!-- 户籍详细地址 --> <!-- 户籍详细地址 -->
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<!-- <span style="color: red;">*</span> -->
<text>户籍详细地址</text> <text>户籍详细地址</text>
</view> </view>
<input <input
...@@ -110,6 +117,7 @@ ...@@ -110,6 +117,7 @@
<!-- 常住地* --> <!-- 常住地* -->
<view class="my-info-list flex-between"> <view class="my-info-list flex-between">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<text>常住地</text> <text>常住地</text>
</view> </view>
<wd-col-picker <wd-col-picker
...@@ -131,6 +139,7 @@ ...@@ -131,6 +139,7 @@
<!-- 常住详细地址 --> <!-- 常住详细地址 -->
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<!-- <span style="color: red;">*</span> -->
<text>常住详细地址</text> <text>常住详细地址</text>
</view> </view>
<input <input
...@@ -144,6 +153,7 @@ ...@@ -144,6 +153,7 @@
<!-- 学历 --> <!-- 学历 -->
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<text>学历</text> <text>学历</text>
</view> </view>
<wd-picker <wd-picker
...@@ -168,7 +178,8 @@ ...@@ -168,7 +178,8 @@
<!-- 专业 --> <!-- 专业 -->
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<text>专业(选填)</text> <span style="color: red;">*</span>
<text>专业</text>
</view> </view>
<!-- <input <!-- <input
class="my-info-form" class="my-info-form"
...@@ -198,7 +209,7 @@ ...@@ -198,7 +209,7 @@
</view> </view>
<!-- 专业技术职称 --> <!-- 专业技术职称 -->
<view class="two-rows"> <view class="two-rows">
<text class="title">专业技术职称(选填)</text> <text class="title">专业技术职称</text>
<view class="bottom-row"> <view class="bottom-row">
<view class="bottom-one"> <view class="bottom-one">
<input <input
...@@ -206,6 +217,7 @@ ...@@ -206,6 +217,7 @@
v-model="userInfo.positionalTitleOne" v-model="userInfo.positionalTitleOne"
placeholder="请填写专业技术职称" placeholder="请填写专业技术职称"
placeholder-class="placeholder-style" placeholder-class="placeholder-style"
@input="changePositionTitleOne"
/> />
<img class="write-icon" src="@/static/image/user/write.png" /> <img class="write-icon" src="@/static/image/user/write.png" />
</view> </view>
...@@ -231,7 +243,7 @@ ...@@ -231,7 +243,7 @@
</view> </view>
<!-- 职业资格/技能等级证书 --> <!-- 职业资格/技能等级证书 -->
<view class="two-rows"> <view class="two-rows">
<text class="title">职业资格/技能等级证书(选填)</text> <text class="title">职业资格/技能等级证书</text>
<view class="bottom-row"> <view class="bottom-row">
<view class="bottom-one"> <view class="bottom-one">
<input <input
...@@ -239,6 +251,7 @@ ...@@ -239,6 +251,7 @@
v-model="userInfo.professionalCertificatesOne" v-model="userInfo.professionalCertificatesOne"
placeholder="请填写职业资格" placeholder="请填写职业资格"
placeholder-class="placeholder-style" placeholder-class="placeholder-style"
@input="changeProfessionalCertificatesOne"
/> />
<img class="write-icon" src="@/static/image/user/write.png" /> <img class="write-icon" src="@/static/image/user/write.png" />
</view> </view>
...@@ -266,7 +279,7 @@ ...@@ -266,7 +279,7 @@
<!-- 特种作业证 --> <!-- 特种作业证 -->
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<text>特种作业证(选填)</text> <text>特种作业证</text>
</view> </view>
<input <input
class="my-info-form" class="my-info-form"
...@@ -278,6 +291,8 @@ ...@@ -278,6 +291,8 @@
<!-- 工作年限 --> <!-- 工作年限 -->
<view class="my-info-list flex-column" v-if="userInfo.identityCode != 0"> <view class="my-info-list flex-column" v-if="userInfo.identityCode != 0">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<!-- <text>{{identityCode == 0 ? '参加实习时间' : '参加工作时间'}}</text> --> <!-- <text>{{identityCode == 0 ? '参加实习时间' : '参加工作时间'}}</text> -->
<text>工作年限</text> <text>工作年限</text>
</view> </view>
...@@ -293,6 +308,7 @@ ...@@ -293,6 +308,7 @@
<!-- 身份证号 --> <!-- 身份证号 -->
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<text>身份证号</text> <text>身份证号</text>
</view> </view>
<input <input
...@@ -306,6 +322,7 @@ ...@@ -306,6 +322,7 @@
<!-- 手机 --> <!-- 手机 -->
<view class="my-info-list flex-column"> <view class="my-info-list flex-column">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red;">*</span>
<text>手机</text> <text>手机</text>
</view> </view>
<input <input
...@@ -382,7 +399,9 @@ const userInfo = ref({ ...@@ -382,7 +399,9 @@ const userInfo = ref({
positionalTitleTwo: null, positionalTitleTwo: null,
professionalCertificatesOne: null, professionalCertificatesOne: null,
professionalCertificatesTwo: null, professionalCertificatesTwo: null,
major:null major:null,
birthAddress: '',
residenceAddress:''
}); });
onMounted(() => { onMounted(() => {
getEumDataFn(); getEumDataFn();
...@@ -550,10 +569,35 @@ const getEumDataFn = () => { ...@@ -550,10 +569,35 @@ const getEumDataFn = () => {
const changeEducationLevel = e => { const changeEducationLevel = e => {
educationText.value = e.selectedItems.text; educationText.value = e.selectedItems.text;
}; };
const changePositionTitleOne = e => {
if (!e.detail.value) {
userInfo.value.positionalTitleTwo = null
}
};
const changeProfessionalCertificatesOne = e => {
if (!e.detail.value) {
userInfo.value.professionalCertificatesTwo = null
}
};
const changeEducationLevel2 = e => { const changeEducationLevel2 = e => {
if (!userInfo.value.positionalTitleOne) {
uni.showToast({
title: "请先填写专业技术职称!",
icon: "none"
});
return
}
userInfo.value.positionalTitleTwo = e.selectedItems.text; userInfo.value.positionalTitleTwo = e.selectedItems.text;
}; };
const changeEducationLevel3 = e => { const changeEducationLevel3 = e => {
if (!userInfo.value.professionalCertificatesOne) {
uni.showToast({
title: "请先填写职业资格或技能等级证书!",
icon: "none"
});
return
}
userInfo.value.professionalCertificatesTwo = e.selectedItems.text; userInfo.value.professionalCertificatesTwo = e.selectedItems.text;
}; };
...@@ -566,11 +610,11 @@ const getData = async () => { ...@@ -566,11 +610,11 @@ const getData = async () => {
return; return;
} }
userInfo.value = data; userInfo.value = data;
const residence = data.residenceAddress.split("-"); const residence = data.residenceAddress?.split("-");
const birth = data.birthAddress.split("-"); const birth = data.birthAddress?.split("-");
residenceCodes.value = data.residenceCodes; residenceCodes.value = data.residenceCodes;
birthCodes.value = data.birthCodes; birthCodes.value = data.birthCodes;
userInfo.value.identityTypes = data.identityTypes.split(",").map(item => item * 1); userInfo.value.identityTypes = data.identityTypes?.split(",").map(item => item * 1);
if (!data.major) { if (!data.major) {
userInfo.value.major = "不限"; userInfo.value.major = "不限";
} }
...@@ -582,10 +626,10 @@ const getData = async () => { ...@@ -582,10 +626,10 @@ const getData = async () => {
userInfo.value.professionalCertificatesOne = data.professionalCertificates.split("-")[0]; userInfo.value.professionalCertificatesOne = data.professionalCertificates.split("-")[0];
userInfo.value.professionalCertificatesTwo = data.professionalCertificates.split("-")[1]; userInfo.value.professionalCertificatesTwo = data.professionalCertificates.split("-")[1];
} }
provinceCityDistrict.value = residence[0]; provinceCityDistrict.value = residence?residence[0]:'';
provinceCityDistrict2.value = birth[0]; provinceCityDistrict2.value = birth?birth[0]:'';
userInfo.value.residenceAddress = residence[1]; userInfo.value.residenceAddress = residence?residence[1]:'';
userInfo.value.birthAddress = birth[1]; userInfo.value.birthAddress = birth?birth[1]:'';
educationText.value = educationOpstion.value[data.education - 1].text; educationText.value = educationOpstion.value[data.education - 1].text;
} }
}; };
...@@ -773,6 +817,7 @@ const submit = () => { ...@@ -773,6 +817,7 @@ const submit = () => {
font-size: 28rpx; font-size: 28rpx;
font-weight: 600; font-weight: 600;
color: #213452; color: #213452;
margin-left: 20rpx;
} }
.my-info .post-detail-data { .my-info .post-detail-data {
overflow: hidden; overflow: hidden;
......
...@@ -2,21 +2,22 @@ ...@@ -2,21 +2,22 @@
<NavBar :showIcon="true" backgroundBox="#ffffff" :showTitle="true" title="我的简历"></NavBar> <NavBar :showIcon="true" backgroundBox="#ffffff" :showTitle="true" title="我的简历"></NavBar>
<div class="resume-page"> <div class="resume-page">
<!-- 个人信息 --> <!-- 个人信息 -->
<view class="user-info flex-between"> <view class="user-info flex-between" @click="navigateTo('/pages/user/resume/essentialInformation/index')">
<view> <view>
<view class="name" <view class="name"
>{{ resumeData.realName || "未实名" }} >{{ resumeData.realName || "未实名" }}
<!-- <img src="@/static/image/icon/edit.png" /> --> <img src="@/static/image/icon/edit.png" />
</view> </view>
<view class="other" <view class="other"
>{{ resumeData.workExperienceYear }}年经验·{{ resumeData.age }}岁·{{ resumeData.educationLevel }}</view >{{ resumeData.workExperienceYear }}年经验·{{ resumeData.age }}岁·{{ resumeData.educationLevel }}</view
> >
</view> </view>
<image v-if="resumeData.avatarPath" class="avatar" :src="evn.APP_IMAGE_BASE_API + resumeData.avatarPath" mode="" /> <!-- <image v-if="resumeData.avatarPath" class="avatar" :src="evn.APP_IMAGE_BASE_API + resumeData.avatarPath" mode="" /> -->
<image v-else class="avatar" src="@/static/image/user/default-avatar.png" mode="" /> <!-- <image v-else class="avatar" src="@/static/image/user/default-avatar.png" mode="" /> -->
<image class="avatar" src="@/static/image/user/default-avatar.png" mode="" />
</view> </view>
<!-- 个人信息 --> <!-- 个人信息 -->
<view class="basics" v-if="userInfoActive"> <view class="basics" v-if="userInfoActive.workAge">
<text class="gradient-title">个人信息</text> <text class="gradient-title">个人信息</text>
<view class="basics-top"> <view class="basics-top">
<view class="item" > <view class="item" >
...@@ -34,7 +35,7 @@ ...@@ -34,7 +35,7 @@
</view> </view>
</view> </view>
<view class="information"> <view class="information">
<text class="label">身份</text> <text class="label">人员类别</text>
<text class="value">{{resumeData.identityTypes}}</text> <text class="value">{{resumeData.identityTypes}}</text>
</view> </view>
<view class="information"> <view class="information">
...@@ -103,7 +104,10 @@ ...@@ -103,7 +104,10 @@
<!-- 教育经历 --> <!-- 教育经历 -->
<view class="experience"> <view class="experience">
<view class="flex-between"> <view class="flex-between">
<text class="gradient-title">教育经历</text> <view>
<text class="gradient-title">教育经历</text>
<span style="font-size: 22rpx;color: #77818f;margin-left: 16rpx;">(点击+号可添加多条)</span>
</view>
<wd-icon <wd-icon
name="add" name="add"
size="24rpx" size="24rpx"
...@@ -141,7 +145,10 @@ ...@@ -141,7 +145,10 @@
<!-- 工作经历 --> <!-- 工作经历 -->
<view class="experience"> <view class="experience">
<view class="flex-between"> <view class="flex-between">
<text class="gradient-title">工作经历</text> <view>
<text class="gradient-title">工作经历</text>
<span style="font-size: 22rpx;color: #77818f;margin-left: 16rpx;">(点击+号可添加多条)</span>
</view>
<wd-icon <wd-icon
name="add" name="add"
size="24rpx" size="24rpx"
...@@ -338,7 +345,7 @@ const getOpstion = async () => { ...@@ -338,7 +345,7 @@ const getOpstion = async () => {
}; };
const toPage = (index) => { const toPage = (index) => {
if (!userInfoActive.value) { if (!userInfoActive.value.workAge) {
uni.showToast({ uni.showToast({
title: "请先完善个人基本信息", title: "请先完善个人基本信息",
icon: "none" icon: "none"
...@@ -368,7 +375,7 @@ const toPage = (index) => { ...@@ -368,7 +375,7 @@ const toPage = (index) => {
} }
const changeJobStatus = async e => { const changeJobStatus = async e => {
if (!userInfoActive.value) { if (!userInfoActive.value.workAge) {
uni.showToast({ uni.showToast({
title: "请先完善个人基本信息", title: "请先完善个人基本信息",
icon: "none" icon: "none"
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
> >
<view class="form-item"> <view class="form-item">
<view class="form-info"> <view class="form-info">
<view class="label">选择岗位</view> <view class="label"><span style="color: red">*</span>选择岗位</view>
</view> </view>
<div>{{ mValue.map(v => v.name).join("|") }}</div> <div>{{ mValue.map(v => v.name).join("|") }}</div>
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
> >
<view class="form-item"> <view class="form-item">
<view class="form-info"> <view class="form-info">
<view class="label">工作地点</view> <view class="label"><span style="color: red">*</span>工作地点</view>
</view> </view>
<div>{{ cityText }}</div> <div>{{ cityText }}</div>
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</view> </view>
</wd-col-picker> </wd-col-picker>
<!-- 薪资要求 --> <!-- 薪资要求 -->
<wd-col-picker <!-- <wd-col-picker
label="期望职位" label="期望职位"
v-model="salaryValue" v-model="salaryValue"
:columns="salaryOpstion" :columns="salaryOpstion"
...@@ -65,9 +65,33 @@ ...@@ -65,9 +65,33 @@
<div>{{ salaryText }}</div> <div>{{ salaryText }}</div>
<view class="arrow"></view> <view class="arrow"></view>
</view> </view>
</wd-col-picker> </wd-col-picker> -->
<view class="form-item" @click="onOpen">
<view class="form-info">
<view class="label"><span style="color: red">*</span>薪资要求</view>
</view>
<div>{{ salaryText }}</div>
<view class="arrow"></view>
</view>
<wd-popup
v-model="show"
position="bottom"
custom-style="height:40%;border-radius: 20rpx;z-index:999;"
@close="handleClose"
>
<view class="title-box"
><view></view>
<view class="title">薪资要求</view>
<wd-icon @click="handleClose" name="close" size="30rpx"></wd-icon>
</view>
<wd-picker-view @change="handleConfirm2" use-default-slot :columns="columns2" v-model="value2"></wd-picker-view>
<view style="display: flex; justify-content: center; width: 100%; margin-top: 30rpx"
><wd-button style="width: 80%" @click="confirmSalary" block :round="false">确定</wd-button></view
>
</wd-popup>
<view class="my-info-list pd-b-38"> <view class="my-info-list pd-b-38">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red">*</span>
<text>是否需要提供住宿</text> <text>是否需要提供住宿</text>
</view> </view>
<!-- <wd-radio-group v-model="accommodation" shape="dot" inline> <!-- <wd-radio-group v-model="accommodation" shape="dot" inline>
...@@ -75,15 +99,16 @@ ...@@ -75,15 +99,16 @@
<wd-radio :value="0" ></wd-radio > <wd-radio :value="0" ></wd-radio >
</wd-radio-group> --> </wd-radio-group> -->
<wd-radio-group v-model="accommodation3.active" shape="dot" inline> <wd-radio-group v-model="accommodation3.active" shape="dot" inline>
<wd-radio v-for="(item) in accommodation3" :key="item.code" :value="item.code" >{{item.text}}</wd-radio > <wd-radio v-for="item in accommodation3" :key="item.code" :value="item.code">{{ item.text }}</wd-radio>
</wd-radio-group> </wd-radio-group>
</view> </view>
<view class="my-info-list pd-b-38"> <view class="my-info-list pd-b-38">
<view class="my-info-title label"> <view class="my-info-title label">
<span style="color: red">*</span>
<text>工作类型</text> <text>工作类型</text>
</view> </view>
<wd-radio-group v-model="accommodation2.active" shape="dot" inline> <wd-radio-group v-model="accommodation2.active" shape="dot" inline>
<wd-radio v-for="(item) in accommodation2" :key="item.code" :value="item.code" >{{item.text}}</wd-radio > <wd-radio v-for="item in accommodation2" :key="item.code" :value="item.code">{{ item.text }}</wd-radio>
</wd-radio-group> </wd-radio-group>
</view> </view>
</view> </view>
...@@ -95,7 +120,7 @@ ...@@ -95,7 +120,7 @@
<script setup> <script setup>
import { dictJobTypeApi, getTreeListApi } from "@/api/common"; import { dictJobTypeApi, getTreeListApi } from "@/api/common";
import { saveJobIntentionApi,getCityNameByCodeApi } from "@/api/user"; import { saveJobIntentionApi, getCityNameByCodeApi, getCityNameByCodeApi2 } from "@/api/user";
import { ref } from "vue"; import { ref } from "vue";
import colPicker from "@/components/wd-col-picker22/wd-col-picker.vue"; import colPicker from "@/components/wd-col-picker22/wd-col-picker.vue";
import { getEnumText, getEumData } from "@/utils/utils"; import { getEnumText, getEumData } from "@/utils/utils";
...@@ -108,12 +133,12 @@ const salaryText = ref(""); ...@@ -108,12 +133,12 @@ const salaryText = ref("");
onLoad(async options => { onLoad(async options => {
// 获取工作类型 // 获取工作类型
await getEumDataFn() await getEumDataFn();
// 住宿 // 住宿
await getEumDataFn2() await getEumDataFn2();
if (options.data) { if (options.data) {
const data = JSON.parse(decodeURIComponent(options.data)); const data = JSON.parse(decodeURIComponent(options.data));
console.log('datadata',data); console.log("datadata", data);
const preferredPositionList = data.positionNames.split("|"); const preferredPositionList = data.positionNames.split("|");
mValue.value = preferredPositionList.map((item, index) => { mValue.value = preferredPositionList.map((item, index) => {
return { return {
...@@ -122,32 +147,47 @@ onLoad(async options => { ...@@ -122,32 +147,47 @@ onLoad(async options => {
parentId: data.positionParentIds[index] parentId: data.positionParentIds[index]
}; };
}); });
accommodation3.value.active = data.needAccommodation.toString(); accommodation3.value.active = data.needAccommodation.toString();
accommodation2.value.active = data.workMode.toString(); accommodation2.value.active = data.workMode.toString();
citySelectedItems = data.citySelectedItems; citySelectedItems = data.citySelectedItems;
getCityNameByCodeApi(citySelectedItems[2]).then(res => { const code = citySelectedItems[2]
cityText.value = res.data.provinceName+ "-" + res.data.cityName+ "-" + res.data.districtName; ? citySelectedItems[2]
}) : citySelectedItems[1]
salarySelectedItems = [{ value: data.minSalary.slice(0, -1) * 1000 }, { value: data.maxSalary.slice(0, -1) * 1000 }]; ? citySelectedItems[1]
: citySelectedItems[0];
getCityNameByCodeApi2(code).then(res => {
if (!res.data) {
cityText.value = "全国";
return;
}
const { provinceName, cityName, districtName } = res.data;
cityText.value = districtName
? `${provinceName}-${cityName}-${districtName}`
: cityName
? `${provinceName}-${cityName}`
: provinceName;
});
// salarySelectedItems = [{ value: data.minSalary.slice(0, -1) * 1000 }, { value: data.maxSalary.slice(0, -1) * 1000 }];
salaryText.value = data.minSalary.slice(0, -1) * 1000 + "元" + "~" + data.maxSalary.slice(0, -1) * 1000 + "元"; salaryText.value = data.minSalary.slice(0, -1) * 1000 + "元" + "~" + data.maxSalary.slice(0, -1) * 1000 + "元";
console.log("salarySelectedItems", salarySelectedItems); minSalary = data.minSalary.slice(0, -1) * 1000;
maxSalary = data.maxSalary.slice(0, -1) * 1000;
console.log("datadata", data);
} }
}); });
// 获取工作类型 // 获取工作类型
const getEumDataFn = async () => { const getEumDataFn = async () => {
const data = await getEumData("EnumWorkMode") const data = await getEumData("EnumWorkMode");
accommodation2.value = data accommodation2.value = data;
accommodation2.value.active = '' accommodation2.value.active = "";
} };
// 是否提供住宿 // 是否提供住宿
const getEumDataFn2 = async () => { const getEumDataFn2 = async () => {
const data = await getEumData("EnumAccommodation") const data = await getEumData("EnumAccommodation");
accommodation3.value = data accommodation3.value = data;
accommodation3.value.active = '' accommodation3.value.active = "";
} };
const handleDelete = index => { const handleDelete = index => {
mValue.value.splice(index, 1); mValue.value.splice(index, 1);
...@@ -189,7 +229,28 @@ const cityText = ref(""); ...@@ -189,7 +229,28 @@ const cityText = ref("");
let citySelectedItems = []; let citySelectedItems = [];
getTreeListApi().then(res => { getTreeListApi().then(res => {
cityOpstion.value.push(res.data); cityOpstion.value.push(res.data);
console.log(cityOpstion); cityOpstion.value[0].forEach(item => {
item.children.unshift({
name: "不限",
code: null,
children: null
});
item.children.forEach(item2 => {
if (item2.children) {
item2.children.unshift({
name: "不限",
code: null,
children: null
});
}
});
});
cityOpstion.value[0].unshift({
name: "全国",
code: null,
children: null
});
console.log("cityOpstion", cityOpstion.value[0]);
}); });
const columnChangeCity = ({ selectedItem, resolve, finish }) => { const columnChangeCity = ({ selectedItem, resolve, finish }) => {
if (selectedItem.children) { if (selectedItem.children) {
...@@ -202,61 +263,125 @@ const handleConfirmCity = ({ selectedItems }) => { ...@@ -202,61 +263,125 @@ const handleConfirmCity = ({ selectedItems }) => {
cityText.value = selectedItems.map(v => v.name).join("-"); cityText.value = selectedItems.map(v => v.name).join("-");
citySelectedItems = selectedItems.map(item => item.code); citySelectedItems = selectedItems.map(item => item.code);
}; };
/* 薪水 */ const show = ref(false);
const salaryOpstion = ref([]); const columns2 = ref([]);
const salaryValue = ref([]); const value2 = ref([]);
const accommodation = ref(1); let minSalary = null;
const accommodation2 = ref([]); let maxSalary = null;
const accommodation3 = ref([]); let satisfy = true;
let salarySelectedItems = [];
const initSalaryOpstion = () => { function onOpen() {
let temp = []; // if (my.value) return;
for (let i = 1; i < 50; i++) { show.value = true;
temp.push({ }
value: i * 1000, function handleClose() {
label: i * 1000 + "元", show.value = false;
next: true }
const confirmSalary = () => {
if (!satisfy) {
xma.showToast({
title: "最高薪资必须大于最低薪资!",
icon: "none"
}); });
minSalary = null;
maxSalary = null;
return;
} }
salaryOpstion.value.push(temp); show.value = false;
}; };
initSalaryOpstion();
const columnChangeSalary = ({ selectedItem, resolve, finish }) => { const handleConfirm2 = ({ value, selectedItem }) => {
let temp = []; minSalary = value[0].slice(0, -1) * 1;
if (selectedItem.next) { maxSalary = value[1].slice(0, -1) * 1;
// resolve(selectedItem.children); if (minSalary >= maxSalary) {
console.log(selectedItem); satisfy = false;
for (let i = 1; i < 50; i++) { return;
temp.push({
value: i * 1000 + selectedItem.value,
label: i * 1000 + selectedItem.value + "元",
next: false
});
resolve(temp);
}
} else {
finish();
} }
satisfy = true;
salaryText.value = value[0] + "~" + value[1];
// my.value = false;
// if (pinias.formData.settlementType === 1) {
// salaryText.value = value.join("~");
// } else {
// salaryText.value = value.map(num => `${num / multiple}k`).join("~");
// }
// const [min, max] = value;
// if (max) {
// pinias.setFormDataKey("maxSalary", max);
// pinias.setFormDataKey("minSalary", min);
// pinias.setFormDataKey("negotiableSalary", 0);
// } else {
// pinias.setFormDataKey("maxSalary", 0);
// pinias.setFormDataKey("minSalary", 0);
// pinias.setFormDataKey("negotiableSalary", 1);
// }
}; };
const handleConfirmSalary = ({ selectedItems }) => {
console.log(selectedItems); function generateArray() {
salaryText.value = selectedItems.map(v => v.label).join("~"); return Array.from({ length: 50 }, (_, index) => `${(index + 1) * 1000}元`);
salarySelectedItems = selectedItems; }
};
columns2.value.push(generateArray());
columns2.value.push(generateArray());
/* 薪水 */
// const salaryOpstion = ref([]);
// const salaryValue = ref([]);
const accommodation = ref(1);
const accommodation2 = ref([]);
const accommodation3 = ref([]);
// let salarySelectedItems = [];
// const initSalaryOpstion = () => {
// let temp = [];
// for (let i = 1; i < 50; i++) {
// temp.push({
// value: i * 1000,
// label: i * 1000 + "元",
// next: true
// });
// }
// salaryOpstion.value.push(temp);
// };
// initSalaryOpstion();
// const columnChangeSalary = ({ selectedItem, resolve, finish }) => {
// let temp = [];
// if (selectedItem.next) {
// // resolve(selectedItem.children);
// console.log(selectedItem);
// for (let i = 1; i < 50; i++) {
// temp.push({
// value: i * 1000 + selectedItem.value,
// label: i * 1000 + selectedItem.value + "元",
// next: false
// });
// resolve(temp);
// }
// } else {
// finish();
// }
// };
// const handleConfirmSalary = ({ selectedItems }) => {
// console.log(selectedItems);
// salaryText.value = selectedItems.map(v => v.label).join("~");
// salarySelectedItems = selectedItems;
// };
const submit = () => { const submit = () => {
let params = {}; let params = {};
const [p, c, d] = citySelectedItems; const [p, c, d] = citySelectedItems;
console.log('mValue.valuemValue.value',mValue.value); console.log("mValue.valuemValue.value", mValue.value);
params.positionNames = mValue.value.map(v => v.name).join(","); params.positionNames = mValue.value.map(v => v.name).join(",");
params.positionIds = mValue.value.map(v => v.id).join(","); params.positionIds = mValue.value.map(v => v.id).join(",");
params.positionParentIds = mValue.value.map(v => v.parentId).join(","); params.positionParentIds = mValue.value.map(v => v.parentId).join(",");
params.minSalary = salarySelectedItems[0].value; params.minSalary = minSalary || null;
params.maxSalary = salarySelectedItems[1].value; params.maxSalary = maxSalary || null;
params.provinceCode = p; params.provinceCode = p || null;
params.cityCode = c; params.cityCode = c || null;
params.districtCode = d; params.districtCode = d || null;
params.needAccommodation = accommodation3.value.active; params.needAccommodation = accommodation3.value.active;
params.workMode = accommodation2.value.active; params.workMode = accommodation2.value.active;
console.log("params", params);
saveJobIntentionApi(params).then(res => { saveJobIntentionApi(params).then(res => {
console.log(res); console.log(res);
if (res.code == 200) { if (res.code == 200) {
...@@ -280,81 +405,89 @@ const submit = () => { ...@@ -280,81 +405,89 @@ const submit = () => {
padding: 0 32rpx; padding: 0 32rpx;
background-color: #ffffff; background-color: #ffffff;
} }
.title-box {
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 32rpx;
margin: 30rpx;
}
.my-info-list { .my-info-list {
position: relative; position: relative;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 32rpx 0; padding: 32rpx 0;
padding-top: 48rpx; padding-top: 48rpx;
padding-right: 5rpx; padding-right: 5rpx;
/* height: 96rpx; /* height: 96rpx;
line-height: 96rpx; */ line-height: 96rpx; */
overflow: hidden; overflow: hidden;
background: #ffffff; background: #ffffff;
border-bottom: 1rpx solid #e9e9e9; border-bottom: 1rpx solid #e9e9e9;
/* picker { /* picker {
flex: 1; flex: 1;
} */ } */
.wd-radio-group{ .wd-radio-group {
text-align: end; text-align: end;
} }
.label { .label {
flex: 0 0 200rpx; flex: 0 0 200rpx;
margin: 0; margin: 0;
font-size: 24rpx; font-size: 24rpx;
font-weight: 500; font-weight: 500;
line-height: 36rpx; line-height: 36rpx;
color: #77818f; color: #77818f;
} }
.placeholder-style { .placeholder-style {
font-size: 28rpx; font-size: 28rpx;
font-weight: normal; font-weight: normal;
line-height: 36rpx; line-height: 36rpx;
color: #77818f; color: #77818f;
} }
.my-info-form { .my-info-form {
flex: 1; flex: 1;
padding: 0; padding: 0;
} }
.radios { .radios {
font-size: 28rpx; font-size: 28rpx;
line-height: 36rpx; line-height: 36rpx;
color: #1b2026; color: #1b2026;
.radios-item { .radios-item {
display: flex; display: flex;
align-items: center; align-items: center;
margin-right: 48rpx; margin-right: 48rpx;
.inner {
box-sizing: border-box;
width: 32rpx;
height: 32rpx;
margin-right: 16rpx;
border: 2rpx solid #77818f;
border-radius: 50%;
}
&.active {
.inner { .inner {
box-sizing: border-box; display: flex;
width: 32rpx; align-items: center;
height: 32rpx; justify-content: center;
margin-right: 16rpx; border-color: #1f86ff;
border: 2rpx solid #77818f; &::after {
border-radius: 50%; display: block;
} width: 16rpx;
&.active { height: 16rpx;
.inner { content: "";
display: flex; background-color: #1f86ff;
align-items: center; border-radius: 50%;
justify-content: center;
border-color: #1f86ff;
&::after {
display: block;
width: 16rpx;
height: 16rpx;
content: "";
background-color: #1f86ff;
border-radius: 50%;
}
} }
} }
} }
} }
} }
}
.container .header { .container .header {
padding: 30rpx 0; padding: 30rpx 0;
} }
......
...@@ -81,7 +81,7 @@ const submit = () => { ...@@ -81,7 +81,7 @@ const submit = () => {
} }
if (!release) { if (!release) {
uni.showToast({ uni.showToast({
title: "请完善信息", title: "请完善相关信息",
icon: "none" icon: "none"
}); });
return; return;
......
...@@ -9,14 +9,14 @@ ...@@ -9,14 +9,14 @@
<!-- 单位名称 --> <!-- 单位名称 -->
<view class="form-item"> <view class="form-item">
<view class="form-info"> <view class="form-info">
<view class="label">单位名称</view> <view class="label"><span style="color: red;">*</span>单位名称</view>
<input type="text" v-model="params.companyName" placeholder="请输入" placeholder-class="placeholder" /> <input type="text" v-model="params.companyName" placeholder="请输入" placeholder-class="placeholder" />
</view> </view>
</view> </view>
<!-- 在职时间 --> <!-- 在职时间 -->
<view class="form-item" bindtap="goToSelectJobType"> <view class="form-item" bindtap="goToSelectJobType">
<view class="form-info"> <view class="form-info">
<view class="label">在职时间</view> <view class="label"><span style="color: red;">*</span>在职时间</view>
<view class="time-wrapper flex-r-c mt20"> <view class="time-wrapper flex-r-c mt20">
<wd-datetime-picker <wd-datetime-picker
:default-value="new Date().getTime()" :default-value="new Date().getTime()"
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
> >
<view class="form-item"> <view class="form-item">
<view class="form-info"> <view class="form-info">
<view class="label">职位类型</view> <view class="label"><span style="color: red;">*</span>职位类型</view>
<view :class="['cont', 'mt20', !jobTypeText ? 'placeholder-style' : '']">{{ <view :class="['cont', 'mt20', !jobTypeText ? 'placeholder-style' : '']">{{
jobTypeText || "请选择" jobTypeText || "请选择"
}}</view> }}</view>
...@@ -64,7 +64,7 @@ ...@@ -64,7 +64,7 @@
<!-- 工作内容 --> <!-- 工作内容 -->
<view class="form-item"> <view class="form-item">
<view class="form-info"> <view class="form-info">
<view class="label">工作内容</view> <view class="label"><span style="color: red;">*</span>工作内容</view>
<textarea class="input-textarea" :maxlength="500" cursor-spacing="500" v-model="params.content" placeholder="请输入" placeholder-class="placeholder"/> <textarea class="input-textarea" :maxlength="500" cursor-spacing="500" v-model="params.content" placeholder="请输入" placeholder-class="placeholder"/>
</view> </view>
</view> </view>
...@@ -153,7 +153,7 @@ const save = () => { ...@@ -153,7 +153,7 @@ const save = () => {
} }
if (!really) { if (!really) {
uni.showToast({ uni.showToast({
title: `请完善表单!`, title: `请完善相关信息`,
icon: "none" icon: "none"
}); });
return; return;
......
import axios from "axios"; import axios from "axios";
import { getToken } from "./token"; import { getToken } from "./token";
const baseURL = "https://lygsh-api.wjzpgz.com/"; const baseURL = "https://lygsh-api.wjzpgz.com/";
// const baseURL = "http://192.168.11.48:8080/"; // const baseURL = "http://192.168.11.82:8080/";
// 创建一个 axios 实例 // 创建一个 axios 实例
const instance = axios.create({ const instance = axios.create({
baseURL, // 设置基础 URL baseURL, // 设置基础 URL
...@@ -66,8 +66,8 @@ instance.interceptors.response.use( ...@@ -66,8 +66,8 @@ instance.interceptors.response.use(
content: '请等待审核,无需重复提交', content: '请等待审核,无需重复提交',
success: function (confirm) { success: function (confirm) {
if (confirm.confirm) { if (confirm.confirm) {
xma.navigateTo({ xma.reLaunch({
url: '/pages/postionList/appeal/index' url: '/pages/login/index'
}) })
} }
...@@ -89,6 +89,17 @@ instance.interceptors.response.use( ...@@ -89,6 +89,17 @@ instance.interceptors.response.use(
} }
}); });
} }
} else if (code === 14) {
uni.showModal({
title: '提示',
content: '您的账号已被禁用',
success: function (confirm) {
if (confirm.confirm) {
// console.log('已禁用');
}
}
})
} }
uni.hideLoading() uni.hideLoading()
// 在这里可以对响应数据进行预处理 // 在这里可以对响应数据进行预处理
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment