Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mp-customer-people-recruitment-h5
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
彭佳妮(贵阳日报)
mp-customer-people-recruitment-h5
Commits
aab3fdf3
Commit
aab3fdf3
authored
Dec 09, 2024
by
陈宗胤(贵阳日报)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug
parent
16b95493
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
648 additions
and
453 deletions
+648
-453
user.js
src/api/user.js
+4
-1
index.vue
src/components/postionCard1/index.vue
+1
-1
index.vue
src/pages/dynamic/index.vue
+4
-2
index.vue
src/pages/login/index.vue
+7
-8
test.vue
src/pages/login/test.vue
+2
-1
index.vue
src/pages/postionList/demandRegistration/index.vue
+1
-1
index.vue
src/pages/postionList/index.vue
+134
-183
index.vue
src/pages/postionList/positionDetails/index.vue
+79
-31
index.vue
src/pages/user/deliveryFeedback/index.vue
+18
-19
index.vue
src/pages/user/feedbackDetails/index.vue
+4
-7
index.vue
src/pages/user/index.vue
+23
-24
index.vue
src/pages/user/resume/educationExperience/index.vue
+5
-5
index.vue
src/pages/user/resume/essentialInformation/index.vue
+65
-20
index.vue
src/pages/user/resume/index.vue
+17
-10
index.vue
src/pages/user/resume/jobIntention/index.vue
+264
-131
index.vue
src/pages/user/resume/realNameAuthentication/index.vue
+1
-1
index.vue
src/pages/user/resume/workExperience/index.vue
+5
-5
request.js
src/utils/request.js
+14
-3
No files found.
src/api/user.js
View file @
aab3fdf3
...
...
@@ -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
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
);
// 保存工作经历
...
...
@@ -32,6 +32,9 @@ export const getInterviewListApi = params => instance.post("/job/getInterviewLis
//更具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`
);
...
...
src/components/postionCard1/index.vue
View file @
aab3fdf3
...
...
@@ -12,7 +12,7 @@
</view>
<view
class=
"flex-between"
>
<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>
</
template
>
...
...
src/pages/dynamic/index.vue
View file @
aab3fdf3
...
...
@@ -19,12 +19,14 @@ import articleList from "@/components/articleList/index.vue";
import
{
getArticleListApi
,
getArticleTypesApi
}
from
"@/api/article.js"
;
import
{
reactive
,
ref
}
from
"vue"
;
const
active
=
ref
(
""
);
const
typeList
=
ref
([{
id
:
-
1
,
name
:
"招聘会岗位报名"
}]);
// const typeList = ref([{ id: -1, name: "招聘会岗位查看" }]);
const
typeList
=
ref
([]);
getArticleTypesApi
(
2
).
then
(
res
=>
{
typeList
.
value
.
push
(...
res
.
data
);
changeType
({
id
:
typeList
.
value
[
0
].
id
})
});
onShow
(()
=>
{
changeType
({
id
:
""
});
// changeType({ id: -1
});
});
const
changeType
=
type
=>
{
...
...
src/pages/login/index.vue
View file @
aab3fdf3
...
...
@@ -23,22 +23,21 @@
import
NavBar
from
"@/components/navBar/index.vue"
;
import
{
xinhuaMpLogin
}
from
"@/api/user.js"
;
import
{
setToken
,
getToken
}
from
"@/utils/token"
;
import
{
removeToken
}
from
"@/utils/token"
;
const
res
=
ref
(
""
);
onLoad
(()
=>
{
// const token = getToken();
// if (token) {
// uni.switchTab({
// url: "/pages/postionList/index"
// });
// }
removeToken
();
uni
.
removeStorageSync
(
"userInfo"
);
});
const
login
=
()
=>
{
xma
.
xh
.
getUserProfile
({
range
:
[
"ACCOUNT"
,
"MOBILE"
],
range
:
[
"ACCOUNT"
,
"MOBILE"
,
'CITIZEN'
],
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
=>
{
if
(
data
.
code
!==
200
)
return
res
.
value
=
data
;
console
.
log
(
"datadatadata"
,
data
);
setToken
(
data
.
data
);
...
...
src/pages/login/test.vue
View file @
aab3fdf3
...
...
@@ -18,7 +18,8 @@ const login = async () => {
const
a
=
await
getSmsCode
({
username
:
phone
.
value
});
testLogin
({
username
:
phone
.
value
,
code
:
"000000"
code
:
"000000"
,
userType
:
"consumer"
,
}).
then
(
res
=>
{
console
.
log
(
res
);
if
(
res
.
code
===
200
)
{
...
...
src/pages/postionList/demandRegistration/index.vue
View file @
aab3fdf3
<
template
>
<NavBar
:showIcon=
"true"
backgroundBox=
"#ffffff"
:showTitle=
"true"
title=
"
职业指导
"
></NavBar>
<NavBar
:showIcon=
"true"
backgroundBox=
"#ffffff"
:showTitle=
"true"
title=
"
需求登记
"
></NavBar>
<div
class=
"page"
>
<scroll-view
scroll-y=
"
{{
true
}}
" @scrolltolower="getData">
<view
class=
"item"
v-for=
"(item, index) in list"
:key=
"item.id"
>
...
...
src/pages/postionList/index.vue
View file @
aab3fdf3
...
...
@@ -2,12 +2,7 @@
<view
style=
"height: 100%; padding-bottom: 40px"
>
<NavBar
:showIcon=
"false"
backgroundBox=
"#ffffff"
>
<view
class=
"search-form"
>
<input
v-model=
"keyword"
placeholder=
"请输入要查询的内容"
placeholder-class=
"log-input-p"
type=
"text"
/>
<input
v-model=
"keyword"
placeholder=
"可查询公司、岗位名称等"
placeholder-class=
"log-input-p"
type=
"text"
/>
<wd-icon
class=
"search-icon"
name=
"search"
@
tap=
"confirm"
></wd-icon>
</view>
</NavBar>
...
...
@@ -37,6 +32,7 @@
</view>
-->
<view
class=
"filter-other flex-between"
>
<wd-col-picker
title=
"请选择工作地点"
label=
"选择地址"
v-model=
"valueCity"
:columns=
"columnsCity"
...
...
@@ -50,6 +46,7 @@
</wd-col-picker>
<view
class=
"filter-opstion"
>
<wd-col-picker
title=
"请选择专业"
v-model=
"majorValue"
:columns=
"majorOpstion"
value-key=
"name"
...
...
@@ -58,7 +55,7 @@
@
confirm=
"handleConfirmMajor"
use-default-slot
>
<view
class=
"item"
>
{{
majorText
||
"
不限
"
}}
<view
class=
"arrow"
></view>
</view>
<view
class=
"item"
>
{{
majorText
||
"
专业
"
}}
<view
class=
"arrow"
></view>
</view>
</wd-col-picker>
</view>
<view
class=
"item"
:class=
"
{ active: maskType == 'other' }" @tap="openMask('other')"
...
...
@@ -66,128 +63,70 @@
></view>
</view>
</view>
<!-- 蒙版弹框 -->
<view
:style=
"
{ top: contentHeight }" @touchmove.stop.prevent class="pop-mask" v-if="maskType" @click="maskType = null">
<!--
<NavBar
:showIcon=
"false"
backgroundBox=
"#ffffff"
:showTitle=
"true"
title=
"筛选"
/>
-->
<view
class=
"select-nav"
:style=
"
{ top: '0px' }" catchtouchmove="
{{
true
}}
" @tap.stop>
<view
class=
"recommend"
>
推荐
</view>
<view
class=
"select-item"
>
<!--
<text
:class=
"
{ active: maskType == 'address' }" @tap="openMask('address')">贵州省
</text>
-->
<text
:class=
"
{ active: maskType == 'other' }" @tap="openMask('other')">更多筛选
</text>
</view>
</view>
<!-- 区域弹窗 -->
<!--
<view
@
click
.
stop=
""
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
class=
"screen-pop-box-new"
@
touchmove
.
stop
.
prevent
:style=
"
{paddingTop:contentHeight}" v-if="maskType === 'other'">
<scroll-view
class=
"content-two"
scroll-y=
"true"
>
<view
class=
"right"
>
<view
class=
"title"
>
薪酬
</view>
<view
class=
"list"
>
<view
class=
"item"
:class=
"
{ 'light-two': activeOne === index }"
v-for="(item, index) in salary"
:key="index"
@tap="choiceDetails(0,item, index)"
>
{{
item
.
text
}}
</view
>
</view>
<view
class=
"region-pop-right"
>
<scroll-view
scroll-y
style=
"height: 652rpx"
>
<view
class=
"region-list"
:class=
"
{ 'region-list-color': regionId == -1 }" @tap="bindRegionList(-1)"
>全部
</view
>
<view
class=
"region-list"
:class=
"
{ 'region-list-color': regionId == v.code }"
v-for="v in regionData"
:key="v.code"
@tap="bindRegionList(v.code)"
>
{{
v
.
name
}}
</view
>
</scroll-view>
<view
class=
"title"
>
学历
</view>
<view
class=
"list"
>
<view
class=
"item"
:class=
"
{ 'light-two': activeTwo === index }"
v-for="(item, index) in educationData"
:key="item.code"
@tap="choiceDetails(1,item, index)"
>
{{
item
.
text
}}
</view
>
</view>
</view>
</view>
-->
<!-- 筛选弹窗 -->
<view
@
click
.
stop=
""
catchtap=
"preventD"
class=
"screen-pop other screen-pop-padding
{{
screenPop
?
'screen-pop-tion'
:
''
}}
"
v-if="maskType === 'other'"
>
<view
class=
"screen-pop-box"
>
<view
class=
"content-two"
>
<view
class=
"left"
>
<view
class=
"item"
@
tap=
"choice(0)"
:class=
"
{ light: active === 0 }">薪酬
</view>
<view
class=
"item"
@
tap=
"choice(1)"
:class=
"
{ light: active === 1 }">学历
</view>
<view
class=
"item"
@
tap=
"choice(2)"
:class=
"
{ light: active === 2 }">食宿条件
</view>
<view
class=
"item"
@
tap=
"choice(3)"
:class=
"
{ light: active === 3 }">身份
</view>
<view
class=
"item"
@
tap=
"choice(4)"
:class=
"
{ light: active === 4 }">职位类型
</view>
</view>
<view
class=
"right"
>
<view
class=
"title"
>
{{
active
===
0
?
"薪酬要求"
:
selectionTitle
}}
</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
class=
"title"
>
食宿条件
</view>
<view
class=
"list"
>
<view
class=
"item"
:class=
"
{ 'light-two': activeThree === index }"
v-for="(item, index) in eatAndLiveData"
:key="item.code"
@tap="choiceDetails(2,item, index)"
>
{{
item
.
text
}}
</view
>
</view>
<view
class=
"title"
>
人员类别
</view>
<view
class=
"list"
>
<view
class=
"item"
:class=
"
{ 'light-two': activeFour === index }"
v-for="(item, index) in identityData"
:key="item.code"
@tap="choiceDetails(3,item, index)"
>
{{
item
.
text
}}{{
item
.
text
}}
</view
>
</view>
<view
class=
"content-two-bottom"
>
<button
@
tap=
"resetParams"
>
重置
</button>
<button
@
tap=
"confirmParameters"
>
确认
</button>
<view
class=
"title"
>
职位类型
</view>
<view
class=
"list"
>
<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>
</scroll-view>
<view
class=
"content-two-bottom"
>
<button
@
tap=
"resetParams"
>
重置
</button>
<button
@
tap=
"confirmParameters"
>
确认
</button>
</view>
</view>
<!-- 全职职位列表 -->
...
...
@@ -387,7 +326,7 @@ const openMask = type => {
};
// 城市筛选
const
valueCity
=
ref
([]);
const
cityText
=
ref
(
"
全国
"
);
const
cityText
=
ref
(
"
工作地点
"
);
const
columnsCity
=
ref
([]);
const
getColumnsCity
=
()
=>
{
getTreeListApi
().
then
(
res
=>
{
...
...
@@ -596,12 +535,11 @@ const choice = index => {
break
;
default
:
selectionTitle
.
value
=
"职位类型"
;
console
.
log
(
positionType
.
value
);
dataList
.
value
=
positionType
.
value
;
}
};
const
choiceDetails
=
(
data
,
index
)
=>
{
switch
(
active
.
value
)
{
const
choiceDetails
=
(
active
,
data
,
index
)
=>
{
switch
(
active
)
{
case
0
:
activeOne
.
value
=
index
*
1
;
minSalary
=
data
.
min
;
...
...
@@ -658,14 +596,14 @@ const resetParams = () => {
identityRequirement
=
null
;
jobTypePid
=
null
;
pageNo
=
1
;
positionListData
.
value
=
[];
positionListData
.
value
=
[];
getListData
();
};
// 职位搜索
const
confirm
=
e
=>
{
pageNo
=
1
;
positionListData
.
value
=
[];
positionListData
.
value
=
[];
getListData
();
};
// 职位筛选搜索
...
...
@@ -949,8 +887,8 @@ const getListData = () => {
.pop-mask
{
position
:
fixed
;
inset
:
0
;
z-index
:
100
;
background-color
:
#
000000
66
;
z-index
:
100
00
;
background-color
:
#
ffffff
;
.address
{
.region-pop-content
{
text-align
:
center
;
...
...
@@ -1330,68 +1268,81 @@ const getListData = () => {
.screen-pop-padding
{
padding
:
0
;
}
.content-two
{
display
:
flex
;
.left
{
width
:
200rpx
;
// max-height:900rpx;
background
:
#e8f2ff
;
.item
{
font-size
:
32rpx
;
.screen-pop-box-new
{
position
:
fixed
;
inset
:
0
;
background
:
#ffffff
;
z-index
:
999999
;
.content-two
{
display
:
flex
;
height
:
80vh
;
.left
{
width
:
200rpx
;
text-align
:
center
;
height
:
100rpx
;
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
;
// max-height:900rpx;
background
:
#e8f2ff
;
.item
{
width
:
236rpx
;
height
:
60rpx
;
line-height
:
60rpx
;
font-size
:
32rpx
;
width
:
200rpx
;
text-align
:
center
;
border-radius
:
8rpx
;
background
:
#f0f4fa
;
border
:
1rpx
solid
#f0f4fa
;
font-size
:
24rpx
;
color
:
#1b2026
;
margin-right
:
11rpx
;
margin-bottom
:
16rpx
;
height
:
100rpx
;
line-height
:
100rpx
;
}
.light
-two
{
.light
{
background
:
#ffffff
;
border
:
1rpx
solid
#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
{
padding
:
16rpx
;
display
:
flex
;
button
{
flex-shrink
:
0
;
background
:
#1f86ff
;
color
:
#ffffff
;
font-size
:
24rpx
;
.content-two-bottom
{
position
:
absolute
;
bottom
:
calc
(
30rpx
+
env
(
safe-area-inset-bottom
));
display
:
flex
;
justify-content
:space-around
;
width
:
100%
;
button
{
width
:
300rpx
;
flex-shrink
:
0
;
background
:
#1f86ff
;
color
:
#ffffff
;
font-size
:
28rpx
;
}
}
}
::-webkit-scrollbar
{
width
:
0
;
height
:
0
;
...
...
src/pages/postionList/positionDetails/index.vue
View file @
aab3fdf3
...
...
@@ -9,7 +9,7 @@
<view
class=
"pos-details"
>
<view
class=
"pos-title"
>
<text
class=
"text"
>
{{
partTimeJobData
.
name
}}
</text>
<text
class=
"text"
>
(
{{
partTimeJobData
.
recruitmentNumber
}}
人)
</text>
<text
class=
"text"
>
(
{{
partTimeJobData
.
recruitmentNumber
}}
人)
</text>
</view>
<view
class=
"salary-wrap"
>
<view
v-if=
"partTimeJobData"
>
...
...
@@ -20,7 +20,15 @@
<view
class=
"salary"
v-else
>
<view
v-if=
"partTimeJobData.minSalary > 0"
>
<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>
</view>
...
...
@@ -37,16 +45,18 @@
<view
class=
"experience-and-education flex-align-center"
>
<view
class=
"flex-align-center"
>
<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>
</view>
<view
class=
"flex-align-center"
>
<img
src=
"@/static/image/postion/education.png"
alt=
""
/>
<text>
{{
partTimeJobData
.
educationRequirement
}}
</text>
<text>
{{
partTimeJobData
.
educationRequirement
}}
</text>
</view>
<view
class=
"flex-align-center"
>
<img
src=
"@/static/image/postion/people.png"
alt=
""
/>
<text>
{{
partTimeJobData
.
identityRequirement
}}
</text>
<text>
{{
partTimeJobData
.
identityRequirement
}}
</text>
</view>
</view>
<view
class=
"pos-type flex-between"
>
...
...
@@ -55,15 +65,19 @@
<text>
{{
partTimeJobData
.
cityName
}}
</text>
</view>
<view
class=
"type"
>
<text>
{{
partTimeJobData
.
workMode
}}
</text>
<text>
{{
partTimeJobData
.
workMode
}}
</text>
<text
class=
"margin-8"
>
|
</text>
<text>
{{
partTimeJobData
.
jobTypeName
}}
</text>
</view>
</view>
<view
class=
"label"
>
<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.specialCertificates"
>
{{
partTimeJobData
.
specialCertificates
}}
</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.specialCertificates"
>
{{
partTimeJobData
.
specialCertificates
}}
</view>
</view>
<view
class=
"cos-welfare"
v-if=
"partTimeJobData.welfareTags"
>
<view
class=
"welfare-list"
v-for=
"(wel, i) in partTimeJobData.welfareTags"
:key=
"i"
>
{{
wel
}}
</view>
...
...
@@ -111,7 +125,7 @@
</view>
<view
class=
"cos-position"
>
<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
>
</view>
...
...
@@ -128,7 +142,7 @@
<!-- 职位推荐 -->
<view
class=
"pos-recommend margin-top24"
>
<view
class=
"title"
>
<text
class=
"gradient-title"
>
优选职位
</text>
<text
class=
"gradient-title"
>
温馨提示
</text>
</view>
<!-- 职位列表 -->
<view
...
...
@@ -174,18 +188,30 @@
</view>
<!-- 聊工作/投简历Btn -->
<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
class=
"warn-wrap"
>
<view
class=
"warn"
>
<view
class=
"title flex-align-center"
>
<
!--
<image
src=
"
{{
ossImgPrefix
}}
/warn.png" /> --
>
乐业安全提示
<
text
class=
"content"
>
观山湖人社提醒您:
</text
>
<text
class=
"content"
>
求职请记牢“九要九不要”
</text>
</view>
<view
class=
"content"
>
<
!--
<
view
class=
"content"
>
未标明收费的职位不会收取任何费用,若商家要求缴纳费用或押金,
<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>
</div>
...
...
@@ -195,11 +221,14 @@
import
steps
from
"@/components/steps/index.vue"
;
import
{
ref
,
reactive
}
from
"vue"
;
import
dayjs
from
"dayjs"
;
import
{
getEnumText
}
from
"@/utils/utils"
;
import
{
getEnumText
}
from
"@/utils/utils"
;
import
{
getJobDetailApi
,
submitResumeApi
}
from
"@/api/postion"
;
import
{
getLoginUserApi
}
from
"@/api/user"
;
const
partTimeJobData
=
ref
({});
const
recommendList
=
ref
([]);
const
stepViewData
=
ref
(
null
);
const
userActive
=
ref
(
null
)
let
dutyFlag
=
ref
(
false
);
const
mapCenter
=
reactive
({
latitude
:
26.63
,
...
...
@@ -228,15 +257,18 @@ const markers = reactive([
const
getJobDetail
=
id
=>
{
getJobDetailApi
(
id
).
then
(
async
({
data
})
=>
{
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
.
companyInfo
=
data
.
companyInfo
;
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
.
workMode
=
await
getEnumText
(
"EnumWorkMode"
,
data
.
position
.
workMode
);
partTimeJobData
.
value
.
company
=
await
getEnumText
(
"EnumSettlementType"
,
data
.
position
.
settlementType
)
partTimeJobData
.
value
.
benefits
=
partTimeJobData
.
value
.
benefits
.
split
(
','
)
partTimeJobData
.
value
.
company
=
await
getEnumText
(
"EnumSettlementType"
,
data
.
position
.
settlementType
)
;
partTimeJobData
.
value
.
benefits
=
partTimeJobData
.
value
.
benefits
.
split
(
","
);
// 设置地图点
markers
[
0
].
latitude
=
data
.
locationLatitude
;
markers
[
0
].
longitude
=
data
.
locationLongitude
;
...
...
@@ -247,6 +279,13 @@ const getJobDetail = id => {
};
/* 投递简历 */
const
bindDelivery
=
()
=>
{
if
(
userActive
.
value
===
0
)
{
uni
.
showToast
({
title
:
"请先完善个人信息!"
,
icon
:
"none"
});
return
}
submitResumeApi
(
partTimeJobData
.
value
.
id
).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
uni
.
showToast
({
...
...
@@ -269,6 +308,9 @@ const navigateTo = url => {
onLoad
(({
id
})
=>
{
getJobDetail
(
id
);
getLoginUserApi
().
then
(
res
=>
{
userActive
.
value
=
res
.
data
.
status
});
});
</
script
>
...
...
@@ -737,16 +779,16 @@ onLoad(({ id }) => {
color
:
#1b2026
;
}
}
.label
{
margin-top
:
16rpx
;
.label
{
margin-top
:
16rpx
;
display
:
flex
;
.label-item
{
background
:
#
F2F3F
5
;
.label-item
{
background
:
#
f2f3f
5
;
padding
:
8rpx
16rpx
;
color
:
#4
E
5969
;
color
:
#4
e
5969
;
font-size
:
24rpx
;
margin-right
:
16rpx
;
border-radius
:
5rpx
;
border-radius
:
5rpx
;
}
}
.salary-wrap
{
...
...
@@ -934,18 +976,24 @@ onLoad(({ id }) => {
.warn
{
padding
:
34rpx
;
background
:
#fff2ed
;
display
:
flex
;
flex-direction
:
column
;
img
{
width
:
25rpx
;
height
:
28rpx
;
margin-right
:
14rpx
;
}
.title
{
font-size
:
28rpx
;
font-weight
:
600
;
color
:
#73331c
;
display
:
flex
;
flex-direction
:
column
;
text
{
font-size
:
28rpx
;
font-weight
:
600
;
color
:
#73331c
;
}
}
.content
{
margin
-top
:
16rpx
;
margin
:
12rpx
0
;
font-size
:
22rpx
;
font-weight
:
600
;
line-height
:
36rpx
;
...
...
src/pages/user/deliveryFeedback/index.vue
View file @
aab3fdf3
...
...
@@ -4,8 +4,8 @@
<!--
<view
v-if=
"v.status == 2"
class=
"state success"
>
待面试
</view>
<view
v-if=
"v.status == 4"
class=
"state warning"
>
已拒绝
</view>
-->
<view
class=
"card"
v-if=
"postionData.application?.status == 4"
>
<view
class=
"t1"
>
不合适
</view>
<view
class=
"t2"
>
很遗憾,您没有得到本岗位的面试邀约
感谢您的投递!
</view>
<view
class=
"t1"
>
很遗憾
</view>
<view
class=
"t2"
>
您没有得到本岗位的面试邀约,
感谢您的投递!
</view>
<view
class=
"shadow"
></view>
</view>
<view
class=
"card success"
v-if=
"postionData.application?.status == 2"
>
...
...
@@ -13,6 +13,20 @@
<view
class=
"t2"
>
恭喜您获得本岗位的面试邀约,注意保持电话畅通或可以主动联系我们
</view>
<view
class=
"shadow"
></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"
>
<div
class=
"interview-info"
>
...
...
@@ -34,22 +48,7 @@
</div>
</div>
</
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"
>
<steps
:data=
"postionData.application"
></steps>
</view>
...
...
@@ -120,7 +119,7 @@ onLoad(({ id }) => {
flex-direction
:
column
;
gap
:
32rpx
;
padding
:
0
32rpx
;
margin-top
:
1
68
rpx
;
margin-top
:
1
00
rpx
;
div
{
display
:
flex
;
p
{
...
...
src/pages/user/feedbackDetails/index.vue
View file @
aab3fdf3
...
...
@@ -34,9 +34,7 @@
placeholderW
safeAreaInsetBottom
>
<wd-button
:round=
"false"
class=
"foot-btn"
:disabled=
"params.questionDesc == '' || params.imagesPath == ''"
>
投诉建议
</wd-button
>
<wd-button
:round=
"false"
class=
"foot-btn"
:disabled=
"params.questionDesc == ''"
>
投诉建议
</wd-button>
</wd-tabbar>
</view>
</
template
>
...
...
@@ -56,7 +54,7 @@ const params = reactive({
onLoad
(
option
=>
{
if
(
option
.
id
)
{
id
.
value
=
option
.
id
;
feedbackByIdFn
(
option
.
id
);
feedbackByIdFn
(
option
.
id
);
}
});
const
feedbackByIdFn
=
id
=>
{
...
...
@@ -92,9 +90,8 @@ const chooseImage = () => {
};
const
feedbackAddFn
=
()
=>
{
xma
.
showLoading
();
if
(
params
.
questionDesc
==
""
||
params
.
imagesPath
==
""
)
{
}
else
{
if
(
params
.
questionDesc
!==
""
)
{
xma
.
showLoading
();
feedbackAdd
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
xma
.
hideLoading
();
...
...
src/pages/user/index.vue
View file @
aab3fdf3
...
...
@@ -3,15 +3,14 @@
<div
class=
"user-container"
>
<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"
>
<!--
<image
wx:if=
"
{{
avatarPath
}}
" src="
{{
imgPrefix
}}
/
{{
avatarPath
}}
" mode="" />
<image
wx:else=
""
class=
"userinfo-avatar"
src=
"
{{
ossImgPrefix
}}
/user/default-avatar.png">
</image>
-->
<img
v-if=
"avatarPath"
:src=
"evn.APP_IMAGE_BASE_API + avatarPath"
/>
<img
v-else
src=
"@/static/image/user/default-avatar.png"
alt=
""
/>
<!--
<img
v-if=
"avatarPath"
:src=
"evn.APP_IMAGE_BASE_API + avatarPath"
/>
<img
v-else
src=
"@/static/image/user/default-avatar.png"
alt=
""
/>
-->
<img
src=
"@/static/image/user/default-avatar.png"
alt=
""
/>
</view>
<view
class=
"name"
@
click=
"navigateTo('/pages/user/resume/essentialInformation/index')"
>
<text
>
{{
realName
||
"
未实
名"
}}
</text>
<view
class=
"name"
>
<text
>
{{
realName
||
"
姓
名"
}}
</text>
<img
src=
"@/static/image/user/write.png"
/>
</view>
<view
class=
"education"
>
{{
schoolName
||
'暂未写入'
}}
|
{{
educationLevelText
||
"无"
}}
</view>
...
...
@@ -95,19 +94,19 @@ const navList = [
url
:
"/pages/login/index"
,
text
:
"退出登录"
},
{
icon
:
new
URL
(
"@/static/image/user/loginout.png"
,
import
.
meta
.
url
).
href
,
url
:
"/pages/test"
,
text
:
"测试页面"
},
{
icon
:
new
URL
(
"@/static/image/user/loginout.png"
,
import
.
meta
.
url
).
href
,
url
:
"/pages/login/test"
,
fn
:
()
=>
{
removeToken
();
},
text
:
"退出登录(去测试登录)"
}
//
{
//
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
//
url: "/pages/test",
//
text: "测试页面"
//
},
//
{
//
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
//
url: "/pages/login/test",
//
fn: () => {
//
removeToken();
//
},
//
text: "退出登录(去测试登录)"
//
}
];
/* 个人信息 */
const
realName
=
ref
(
""
);
...
...
@@ -118,17 +117,17 @@ const educationLevelText = ref("");
const
getUserInfo
=
()
=>
{
getLoginUserApi
().
then
(
async
res
=>
{
const
{
avatarPath
:
_avatarPath
,
name
:
_realName
,
education
}
=
res
.
data
;
realName
.
value
=
_realName
;
avatarPath
.
value
=
_avatarPath
;
realName
.
value
=
_realName
||
null
;
avatarPath
.
value
=
_avatarPath
||
null
;
/* this.setData({
avatarPath,
realName,
}); */
educationLevelText
.
value
=
await
getEnumText
(
"EnumEducation"
,
education
);
educationLevelText
.
value
=
await
getEnumText
(
"EnumEducation"
,
education
)
||
null
;
});
getUserResumeApi
().
then
(
res
=>
{
const
{
educationExperience
}
=
res
.
data
;
schoolName
.
value
=
JSON
.
parse
(
educationExperience
)[
0
].
schoolName
;
schoolName
.
value
=
JSON
.
parse
(
educationExperience
)[
0
].
schoolName
||
null
;
});
};
</
script
>
...
...
src/pages/user/resume/educationExperience/index.vue
View file @
aab3fdf3
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"教育经历"
backgroundBox=
"#ffffff"
></NavBar>
<view
class=
"item"
>
<view
class=
"label"
>
学校名称
</view>
<view
class=
"label"
>
<span
style=
"color: red;"
>
*
</span>
学校名称
</view>
<input
v-model=
"params.schoolName"
placeholder-style=
"font-size: 24rpx;color: #77818f;"
...
...
@@ -10,12 +10,12 @@
/>
</view>
<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
}}
" />
</view>
<view
class=
"item"
>
<view
class=
"label"
>
开始时间
</view>
<view
class=
"label"
>
<span
style=
"color: red;"
>
*
</span>
开始时间
</view>
<wd-datetime-picker
:default-value=
"new Date().getTime()"
:maxDate=
"new Date().getTime()"
...
...
@@ -31,7 +31,7 @@
</wd-datetime-picker>
</view>
<view
class=
"item"
>
<view
class=
"label"
>
结束时间
</view>
<view
class=
"label"
>
<span
style=
"color: red;"
>
*
</span>
结束时间
</view>
<wd-datetime-picker
:default-value=
"new Date().getTime()"
:minDate=
"params.startDate"
...
...
@@ -90,7 +90,7 @@ const submit = () => {
}
if
(
!
really
)
{
uni
.
showToast
({
title
:
`请完善
表单!
`
,
title
:
`请完善
相关信息
`
,
icon
:
"none"
});
return
;
...
...
src/pages/user/resume/essentialInformation/index.vue
View file @
aab3fdf3
<
template
>
<div
class=
"essential-information"
>
<NavBar
backgroundBox=
"#ffffff"
:showIcon=
"true"
:showTitle=
"true"
title=
"基本信息"
></NavBar>
<view
<
!--
<
view
class=
"real-name-authentication flex-between"
v-if=
"verified == 0"
@
tap=
"toIdcard"
...
...
@@ -15,25 +15,28 @@
</view>
</view>
<view
class=
"btn"
>
去认证
</view>
</view>
</view>
-->
<!-- 个人资料 -->
<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"
>
<text>
头像
</text>
<text>
个人照片
</text>
<!--
<text
style=
"font-size: 20rpx;color: #77818f;"
>
(点击上传)
</text>
-->
</view>
<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-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"
src=
"@/static/image/user/default-avatar.png"
/>
</view>
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<text>
姓名
</text>
<
span
style=
"color: red;"
>
*
</span><
text>
姓名
</text>
</view>
<input
class=
"my-info-form"
v-model=
"userInfo.name"
placeholder=
"请输入"
placeholder-class=
"placeholder-style"
/>
</view>
<!-- 性别 -->
<view
class=
"my-info-list pd-b-38"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<text>
性别
</text>
</view>
<view
class=
"gender radios"
>
...
...
@@ -46,6 +49,7 @@
<!-- 出生年月 -->
<view
class=
"my-info-list flex-between"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<text>
出生年月
</text>
</view>
<wd-datetime-picker
...
...
@@ -68,7 +72,8 @@
<!-- 身份 -->
<view
class=
"my-info-list pd-b-38"
>
<view
class=
"my-info-title label"
>
<text>
身份
</text>
<span
style=
"color: red;"
>
*
</span>
<text>
人员类别
</text>
</view>
<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>
...
...
@@ -77,6 +82,7 @@
<!-- 户籍地* -->
<view
class=
"my-info-list flex-between"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<text>
户籍地
</text>
</view>
<wd-col-picker
...
...
@@ -98,6 +104,7 @@
<!-- 户籍详细地址 -->
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<!--
<span
style=
"color: red;"
>
*
</span>
-->
<text>
户籍详细地址
</text>
</view>
<input
...
...
@@ -110,6 +117,7 @@
<!-- 常住地* -->
<view
class=
"my-info-list flex-between"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<text>
常住地
</text>
</view>
<wd-col-picker
...
...
@@ -131,6 +139,7 @@
<!-- 常住详细地址 -->
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<!--
<span
style=
"color: red;"
>
*
</span>
-->
<text>
常住详细地址
</text>
</view>
<input
...
...
@@ -144,6 +153,7 @@
<!-- 学历 -->
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<text>
学历
</text>
</view>
<wd-picker
...
...
@@ -168,7 +178,8 @@
<!-- 专业 -->
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<text>
专业(选填)
</text>
<span
style=
"color: red;"
>
*
</span>
<text>
专业
</text>
</view>
<!--
<input
class=
"my-info-form"
...
...
@@ -198,7 +209,7 @@
</view>
<!-- 专业技术职称 -->
<view
class=
"two-rows"
>
<text
class=
"title"
>
专业技术职称
(选填)
</text>
<text
class=
"title"
>
专业技术职称
</text>
<view
class=
"bottom-row"
>
<view
class=
"bottom-one"
>
<input
...
...
@@ -206,6 +217,7 @@
v-model=
"userInfo.positionalTitleOne"
placeholder=
"请填写专业技术职称"
placeholder-class=
"placeholder-style"
@
input=
"changePositionTitleOne"
/>
<img
class=
"write-icon"
src=
"@/static/image/user/write.png"
/>
</view>
...
...
@@ -231,7 +243,7 @@
</view>
<!-- 职业资格/技能等级证书 -->
<view
class=
"two-rows"
>
<text
class=
"title"
>
职业资格/技能等级证书
(选填)
</text>
<text
class=
"title"
>
职业资格/技能等级证书
</text>
<view
class=
"bottom-row"
>
<view
class=
"bottom-one"
>
<input
...
...
@@ -239,6 +251,7 @@
v-model=
"userInfo.professionalCertificatesOne"
placeholder=
"请填写职业资格"
placeholder-class=
"placeholder-style"
@
input=
"changeProfessionalCertificatesOne"
/>
<img
class=
"write-icon"
src=
"@/static/image/user/write.png"
/>
</view>
...
...
@@ -266,7 +279,7 @@
<!-- 特种作业证 -->
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<text>
特种作业证
(选填)
</text>
<text>
特种作业证
</text>
</view>
<input
class=
"my-info-form"
...
...
@@ -278,6 +291,8 @@
<!-- 工作年限 -->
<view
class=
"my-info-list flex-column"
v-if=
"userInfo.identityCode != 0"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<!--
<text>
{{
identityCode
==
0
?
'参加实习时间'
:
'参加工作时间'
}}
</text>
-->
<text>
工作年限
</text>
</view>
...
...
@@ -293,6 +308,7 @@
<!-- 身份证号 -->
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<text>
身份证号
</text>
</view>
<input
...
...
@@ -306,6 +322,7 @@
<!-- 手机 -->
<view
class=
"my-info-list flex-column"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red;"
>
*
</span>
<text>
手机
</text>
</view>
<input
...
...
@@ -382,7 +399,9 @@ const userInfo = ref({
positionalTitleTwo
:
null
,
professionalCertificatesOne
:
null
,
professionalCertificatesTwo
:
null
,
major
:
null
major
:
null
,
birthAddress
:
''
,
residenceAddress
:
''
});
onMounted
(()
=>
{
getEumDataFn
();
...
...
@@ -550,10 +569,35 @@ const getEumDataFn = () => {
const
changeEducationLevel
=
e
=>
{
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
=>
{
if
(
!
userInfo
.
value
.
positionalTitleOne
)
{
uni
.
showToast
({
title
:
"请先填写专业技术职称!"
,
icon
:
"none"
});
return
}
userInfo
.
value
.
positionalTitleTwo
=
e
.
selectedItems
.
text
;
};
const
changeEducationLevel3
=
e
=>
{
if
(
!
userInfo
.
value
.
professionalCertificatesOne
)
{
uni
.
showToast
({
title
:
"请先填写职业资格或技能等级证书!"
,
icon
:
"none"
});
return
}
userInfo
.
value
.
professionalCertificatesTwo
=
e
.
selectedItems
.
text
;
};
...
...
@@ -566,11 +610,11 @@ const getData = async () => {
return
;
}
userInfo
.
value
=
data
;
const
residence
=
data
.
residenceAddress
.
split
(
"-"
);
const
birth
=
data
.
birthAddress
.
split
(
"-"
);
const
residence
=
data
.
residenceAddress
?
.
split
(
"-"
);
const
birth
=
data
.
birthAddress
?
.
split
(
"-"
);
residenceCodes
.
value
=
data
.
residenceCodes
;
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
)
{
userInfo
.
value
.
major
=
"不限"
;
}
...
...
@@ -582,10 +626,10 @@ const getData = async () => {
userInfo
.
value
.
professionalCertificatesOne
=
data
.
professionalCertificates
.
split
(
"-"
)[
0
];
userInfo
.
value
.
professionalCertificatesTwo
=
data
.
professionalCertificates
.
split
(
"-"
)[
1
];
}
provinceCityDistrict
.
value
=
residence
[
0
]
;
provinceCityDistrict2
.
value
=
birth
[
0
]
;
userInfo
.
value
.
residenceAddress
=
residence
[
1
]
;
userInfo
.
value
.
birthAddress
=
birth
[
1
]
;
provinceCityDistrict
.
value
=
residence
?
residence
[
0
]:
''
;
provinceCityDistrict2
.
value
=
birth
?
birth
[
0
]:
''
;
userInfo
.
value
.
residenceAddress
=
residence
?
residence
[
1
]:
''
;
userInfo
.
value
.
birthAddress
=
birth
?
birth
[
1
]:
''
;
educationText
.
value
=
educationOpstion
.
value
[
data
.
education
-
1
].
text
;
}
};
...
...
@@ -773,6 +817,7 @@ const submit = () => {
font-size
:
28rpx
;
font-weight
:
600
;
color
:
#213452
;
margin-left
:
20rpx
;
}
.my-info
.post-detail-data
{
overflow
:
hidden
;
...
...
src/pages/user/resume/index.vue
View file @
aab3fdf3
...
...
@@ -2,21 +2,22 @@
<NavBar
:showIcon=
"true"
backgroundBox=
"#ffffff"
:showTitle=
"true"
title=
"我的简历"
></NavBar>
<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
class=
"name"
>
{{
resumeData
.
realName
||
"未实名"
}}
<
!--
<img
src=
"@/static/image/icon/edit.png"
/>
--
>
<
img
src=
"@/static/image/icon/edit.png"
/
>
</view>
<view
class=
"other"
>
{{
resumeData
.
workExperienceYear
}}
年经验·
{{
resumeData
.
age
}}
岁·
{{
resumeData
.
educationLevel
}}
</view
>
</view>
<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-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
class=
"avatar"
src=
"@/static/image/user/default-avatar.png"
mode=
""
/>
</view>
<!-- 个人信息 -->
<view
class=
"basics"
v-if=
"userInfoActive"
>
<view
class=
"basics"
v-if=
"userInfoActive
.workAge
"
>
<text
class=
"gradient-title"
>
个人信息
</text>
<view
class=
"basics-top"
>
<view
class=
"item"
>
...
...
@@ -34,7 +35,7 @@
</view>
</view>
<view
class=
"information"
>
<text
class=
"label"
>
身份
</text>
<text
class=
"label"
>
人员类别
</text>
<text
class=
"value"
>
{{
resumeData
.
identityTypes
}}
</text>
</view>
<view
class=
"information"
>
...
...
@@ -103,7 +104,10 @@
<!-- 教育经历 -->
<view
class=
"experience"
>
<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
name=
"add"
size=
"24rpx"
...
...
@@ -141,7 +145,10 @@
<!-- 工作经历 -->
<view
class=
"experience"
>
<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
name=
"add"
size=
"24rpx"
...
...
@@ -338,7 +345,7 @@ const getOpstion = async () => {
};
const
toPage
=
(
index
)
=>
{
if
(
!
userInfoActive
.
value
)
{
if
(
!
userInfoActive
.
value
.
workAge
)
{
uni
.
showToast
({
title
:
"请先完善个人基本信息"
,
icon
:
"none"
...
...
@@ -368,7 +375,7 @@ const toPage = (index) => {
}
const
changeJobStatus
=
async
e
=>
{
if
(
!
userInfoActive
.
value
)
{
if
(
!
userInfoActive
.
value
.
workAge
)
{
uni
.
showToast
({
title
:
"请先完善个人基本信息"
,
icon
:
"none"
...
...
src/pages/user/resume/jobIntention/index.vue
View file @
aab3fdf3
...
...
@@ -22,7 +22,7 @@
>
<view
class=
"form-item"
>
<view
class=
"form-info"
>
<view
class=
"label"
>
选择岗位
</view>
<view
class=
"label"
>
<span
style=
"color: red"
>
*
</span>
选择岗位
</view>
</view>
<div>
{{
mValue
.
map
(
v
=>
v
.
name
).
join
(
"|"
)
}}
</div>
...
...
@@ -42,7 +42,7 @@
>
<view
class=
"form-item"
>
<view
class=
"form-info"
>
<view
class=
"label"
>
工作地点
</view>
<view
class=
"label"
>
<span
style=
"color: red"
>
*
</span>
工作地点
</view>
</view>
<div>
{{
cityText
}}
</div>
...
...
@@ -50,7 +50,7 @@
</view>
</wd-col-picker>
<!-- 薪资要求 -->
<wd-col-picker
<
!--
<
wd-col-picker
label=
"期望职位"
v-model=
"salaryValue"
:columns=
"salaryOpstion"
...
...
@@ -65,9 +65,33 @@
<div>
{{
salaryText
}}
</div>
<view
class=
"arrow"
></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-title label"
>
<span
style=
"color: red"
>
*
</span>
<text>
是否需要提供住宿
</text>
</view>
<!--
<wd-radio-group
v-model=
"accommodation"
shape=
"dot"
inline
>
...
...
@@ -75,15 +99,16 @@
<wd-radio
:value=
"0"
>
否
</wd-radio
>
</wd-radio-group>
-->
<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>
</view>
<view
class=
"my-info-list pd-b-38"
>
<view
class=
"my-info-title label"
>
<span
style=
"color: red"
>
*
</span>
<text>
工作类型
</text>
</view>
<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>
</view>
</view>
...
...
@@ -95,7 +120,7 @@
<
script
setup
>
import
{
dictJobTypeApi
,
getTreeListApi
}
from
"@/api/common"
;
import
{
saveJobIntentionApi
,
getCityNameByCodeApi
}
from
"@/api/user"
;
import
{
saveJobIntentionApi
,
getCityNameByCodeApi
,
getCityNameByCodeApi2
}
from
"@/api/user"
;
import
{
ref
}
from
"vue"
;
import
colPicker
from
"@/components/wd-col-picker22/wd-col-picker.vue"
;
import
{
getEnumText
,
getEumData
}
from
"@/utils/utils"
;
...
...
@@ -108,12 +133,12 @@ const salaryText = ref("");
onLoad
(
async
options
=>
{
// 获取工作类型
await
getEumDataFn
()
await
getEumDataFn
()
;
// 住宿
await
getEumDataFn2
()
await
getEumDataFn2
()
;
if
(
options
.
data
)
{
const
data
=
JSON
.
parse
(
decodeURIComponent
(
options
.
data
));
console
.
log
(
'datadata'
,
data
);
console
.
log
(
"datadata"
,
data
);
const
preferredPositionList
=
data
.
positionNames
.
split
(
"|"
);
mValue
.
value
=
preferredPositionList
.
map
((
item
,
index
)
=>
{
return
{
...
...
@@ -122,32 +147,47 @@ onLoad(async options => {
parentId
:
data
.
positionParentIds
[
index
]
};
});
accommodation3
.
value
.
active
=
data
.
needAccommodation
.
toString
();
accommodation2
.
value
.
active
=
data
.
workMode
.
toString
();
citySelectedItems
=
data
.
citySelectedItems
;
getCityNameByCodeApi
(
citySelectedItems
[
2
]).
then
(
res
=>
{
cityText
.
value
=
res
.
data
.
provinceName
+
"-"
+
res
.
data
.
cityName
+
"-"
+
res
.
data
.
districtName
;
})
salarySelectedItems
=
[{
value
:
data
.
minSalary
.
slice
(
0
,
-
1
)
*
1000
},
{
value
:
data
.
maxSalary
.
slice
(
0
,
-
1
)
*
1000
}];
const
code
=
citySelectedItems
[
2
]
?
citySelectedItems
[
2
]
:
citySelectedItems
[
1
]
?
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
+
"元"
;
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
data
=
await
getEumData
(
"EnumWorkMode"
)
accommodation2
.
value
=
data
accommodation2
.
value
.
active
=
''
}
const
data
=
await
getEumData
(
"EnumWorkMode"
)
;
accommodation2
.
value
=
data
;
accommodation2
.
value
.
active
=
""
;
}
;
// 是否提供住宿
const
getEumDataFn2
=
async
()
=>
{
const
data
=
await
getEumData
(
"EnumAccommodation"
)
accommodation3
.
value
=
data
accommodation3
.
value
.
active
=
''
}
const
data
=
await
getEumData
(
"EnumAccommodation"
)
;
accommodation3
.
value
=
data
;
accommodation3
.
value
.
active
=
""
;
}
;
const
handleDelete
=
index
=>
{
mValue
.
value
.
splice
(
index
,
1
);
...
...
@@ -189,7 +229,28 @@ const cityText = ref("");
let
citySelectedItems
=
[];
getTreeListApi
().
then
(
res
=>
{
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
})
=>
{
if
(
selectedItem
.
children
)
{
...
...
@@ -202,61 +263,125 @@ const handleConfirmCity = ({ selectedItems }) => {
cityText
.
value
=
selectedItems
.
map
(
v
=>
v
.
name
).
join
(
"-"
);
citySelectedItems
=
selectedItems
.
map
(
item
=>
item
.
code
);
};
/* 薪水 */
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
const
show
=
ref
(
false
);
const
columns2
=
ref
([]);
const
value2
=
ref
([]);
let
minSalary
=
null
;
let
maxSalary
=
null
;
let
satisfy
=
true
;
function
onOpen
()
{
// if (my.value) return;
show
.
value
=
true
;
}
function
handleClose
()
{
show
.
value
=
false
;
}
const
confirmSalary
=
()
=>
{
if
(
!
satisfy
)
{
xma
.
showToast
({
title
:
"最高薪资必须大于最低薪资!"
,
icon
:
"none"
});
minSalary
=
null
;
maxSalary
=
null
;
return
;
}
s
alaryOpstion
.
value
.
push
(
temp
)
;
s
how
.
value
=
false
;
};
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
handleConfirm2
=
({
value
,
selectedItem
})
=>
{
minSalary
=
value
[
0
].
slice
(
0
,
-
1
)
*
1
;
maxSalary
=
value
[
1
].
slice
(
0
,
-
1
)
*
1
;
if
(
minSalary
>=
maxSalary
)
{
satisfy
=
false
;
return
;
}
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
);
salaryText
.
value
=
selectedItems
.
map
(
v
=>
v
.
label
).
join
(
"~"
);
salarySelectedItems
=
selectedItems
;
};
function
generateArray
()
{
return
Array
.
from
({
length
:
50
},
(
_
,
index
)
=>
`
${(
index
+
1
)
*
1000
}
元`
);
}
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
=
()
=>
{
let
params
=
{};
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
.
positionIds
=
mValue
.
value
.
map
(
v
=>
v
.
id
).
join
(
","
);
params
.
positionParentIds
=
mValue
.
value
.
map
(
v
=>
v
.
parentId
).
join
(
","
);
params
.
minSalary
=
salarySelectedItems
[
0
].
value
;
params
.
maxSalary
=
salarySelectedItems
[
1
].
value
;
params
.
provinceCode
=
p
;
params
.
cityCode
=
c
;
params
.
districtCode
=
d
;
params
.
minSalary
=
minSalary
||
null
;
params
.
maxSalary
=
maxSalary
||
null
;
params
.
provinceCode
=
p
||
null
;
params
.
cityCode
=
c
||
null
;
params
.
districtCode
=
d
||
null
;
params
.
needAccommodation
=
accommodation3
.
value
.
active
;
params
.
workMode
=
accommodation2
.
value
.
active
;
console
.
log
(
"params"
,
params
);
saveJobIntentionApi
(
params
).
then
(
res
=>
{
console
.
log
(
res
);
if
(
res
.
code
==
200
)
{
...
...
@@ -280,81 +405,89 @@ const submit = () => {
padding
:
0
32rpx
;
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
{
position
:
relative
;
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
32rpx
0
;
padding-top
:
48rpx
;
padding-right
:
5rpx
;
position
:
relative
;
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
32rpx
0
;
padding-top
:
48rpx
;
padding-right
:
5rpx
;
/* height: 96rpx;
/* height: 96rpx;
line-height: 96rpx; */
overflow
:
hidden
;
background
:
#ffffff
;
border-bottom
:
1rpx
solid
#e9e9e9
;
overflow
:
hidden
;
background
:
#ffffff
;
border-bottom
:
1rpx
solid
#e9e9e9
;
/* picker {
/* picker {
flex: 1;
} */
.wd-radio-group
{
text-align
:
end
;
}
.label
{
flex
:
0
0
200rpx
;
margin
:
0
;
font-size
:
24rpx
;
font-weight
:
500
;
line-height
:
36rpx
;
color
:
#77818f
;
}
.placeholder-style
{
font-size
:
28rpx
;
font-weight
:
normal
;
line-height
:
36rpx
;
color
:
#77818f
;
}
.my-info-form
{
flex
:
1
;
padding
:
0
;
}
.radios
{
font-size
:
28rpx
;
line-height
:
36rpx
;
color
:
#1b2026
;
.radios-item
{
display
:
flex
;
align-items
:
center
;
margin-right
:
48rpx
;
.wd-radio-group
{
text-align
:
end
;
}
.label
{
flex
:
0
0
200rpx
;
margin
:
0
;
font-size
:
24rpx
;
font-weight
:
500
;
line-height
:
36rpx
;
color
:
#77818f
;
}
.placeholder-style
{
font-size
:
28rpx
;
font-weight
:
normal
;
line-height
:
36rpx
;
color
:
#77818f
;
}
.my-info-form
{
flex
:
1
;
padding
:
0
;
}
.radios
{
font-size
:
28rpx
;
line-height
:
36rpx
;
color
:
#1b2026
;
.radios-item
{
display
:
flex
;
align-items
:
center
;
margin-right
:
48rpx
;
.inner
{
box-sizing
:
border-box
;
width
:
32rpx
;
height
:
32rpx
;
margin-right
:
16rpx
;
border
:
2rpx
solid
#77818f
;
border-radius
:
50%
;
}
&
.active
{
.inner
{
box-sizing
:
border-box
;
width
:
32rpx
;
height
:
32rpx
;
margin-right
:
16rpx
;
border
:
2rpx
solid
#77818f
;
border-radius
:
50%
;
}
&
.active
{
.inner
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
border-color
:
#1f86ff
;
&
:
:
after
{
display
:
block
;
width
:
16rpx
;
height
:
16rpx
;
content
:
""
;
background-color
:
#1f86ff
;
border-radius
:
50%
;
}
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
border-color
:
#1f86ff
;
&
:
:
after
{
display
:
block
;
width
:
16rpx
;
height
:
16rpx
;
content
:
""
;
background-color
:
#1f86ff
;
border-radius
:
50%
;
}
}
}
}
}
}
.container
.header
{
padding
:
30rpx
0
;
}
...
...
src/pages/user/resume/realNameAuthentication/index.vue
View file @
aab3fdf3
...
...
@@ -81,7 +81,7 @@ const submit = () => {
}
if
(
!
release
)
{
uni
.
showToast
({
title
:
"请完善信息"
,
title
:
"请完善
相关
信息"
,
icon
:
"none"
});
return
;
...
...
src/pages/user/resume/workExperience/index.vue
View file @
aab3fdf3
...
...
@@ -9,14 +9,14 @@
<!-- 单位名称 -->
<view
class=
"form-item"
>
<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"
/>
</view>
</view>
<!-- 在职时间 -->
<view
class=
"form-item"
bindtap=
"goToSelectJobType"
>
<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"
>
<wd-datetime-picker
:default-value=
"new Date().getTime()"
...
...
@@ -53,7 +53,7 @@
>
<view
class=
"form-item"
>
<view
class=
"form-info"
>
<view
class=
"label"
>
职位类型
</view>
<view
class=
"label"
>
<span
style=
"color: red;"
>
*
</span>
职位类型
</view>
<view
:class=
"['cont', 'mt20', !jobTypeText ? 'placeholder-style' : '']"
>
{{
jobTypeText
||
"请选择"
}}
</view>
...
...
@@ -64,7 +64,7 @@
<!-- 工作内容 -->
<view
class=
"form-item"
>
<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"
/>
</view>
</view>
...
...
@@ -153,7 +153,7 @@ const save = () => {
}
if
(
!
really
)
{
uni
.
showToast
({
title
:
`请完善
表单!
`
,
title
:
`请完善
相关信息
`
,
icon
:
"none"
});
return
;
...
...
src/utils/request.js
View file @
aab3fdf3
import
axios
from
"axios"
;
import
{
getToken
}
from
"./token"
;
const
baseURL
=
"https://lygsh-api.wjzpgz.com/"
;
// const baseURL = "http://192.168.11.
48
:8080/";
// const baseURL = "http://192.168.11.
82
:8080/";
// 创建一个 axios 实例
const
instance
=
axios
.
create
({
baseURL
,
// 设置基础 URL
...
...
@@ -66,8 +66,8 @@ instance.interceptors.response.use(
content
:
'请等待审核,无需重复提交'
,
success
:
function
(
confirm
)
{
if
(
confirm
.
confirm
)
{
xma
.
navigateTo
({
url
:
'/pages/
postionList/appeal
/index'
xma
.
reLaunch
({
url
:
'/pages/
login
/index'
})
}
...
...
@@ -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
()
// 在这里可以对响应数据进行预处理
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment