Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mp-enterprise-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-enterprise-people-recruitment-h5
Commits
767df028
Commit
767df028
authored
Oct 31, 2024
by
李明环(东信)
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of…
Merge branch 'master' of
https://codeup.aliyun.com/62eb413b37e2c6c98549e0c9/gsh-hr-department/mp-enterprise-people-recruitment-h5
parents
95b762d1
72074153
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
950 additions
and
65 deletions
+950
-65
settings.json
.vscode/settings.json
+1
-1
article.js
src/api/article.js
+2
-5
user.js
src/api/user.js
+11
-0
form-item.vue
src/components/form/form-item.vue
+1
-0
selectbox.vue
src/components/form/selectbox.vue
+3
-1
index.vue
src/pages/articleDetails/index.vue
+38
-12
index.vue
src/pages/login/index.vue
+1
-1
test.vue
src/pages/login/test.vue
+2
-4
addPost.vue
src/pages/signUp/addPost.vue
+813
-14
index.vue
src/pages/signUp/index.vue
+4
-2
fillIn.vue
src/pages/user/businessLicense/fillIn.vue
+0
-7
index.vue
src/pages/user/index.vue
+72
-17
history.png
src/static/image/user/history.png
+0
-0
position.png
src/static/image/user/position.png
+0
-0
post.png
src/static/image/user/post.png
+0
-0
user-out.png
src/static/image/user/user-out.png
+0
-0
utils.js
src/utils/utils.js
+2
-1
No files found.
.vscode/settings.json
View file @
767df028
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
"files.eol"
:
"
\n
"
,
"files.eol"
:
"
\n
"
,
"typescript.tsdk"
:
"node_modules/typescript/lib"
,
"typescript.tsdk"
:
"node_modules/typescript/lib"
,
"[vue]"
:
{
"[vue]"
:
{
"editor.defaultFormatter"
:
"
esbenp.prettier-vscode
"
"editor.defaultFormatter"
:
"
octref.vetur
"
},
},
"[typescript]"
:
{
"[typescript]"
:
{
"editor.defaultFormatter"
:
"esbenp.prettier-vscode"
"editor.defaultFormatter"
:
"esbenp.prettier-vscode"
...
...
src/api/article.js
View file @
767df028
...
@@ -8,8 +8,4 @@ export const getArticleDetailApi = id => instance.post(`/article/detail/${id}`);
...
@@ -8,8 +8,4 @@ export const getArticleDetailApi = id => instance.post(`/article/detail/${id}`);
export
const
getArticleTypesApi
=
type
=>
instance
.
post
(
`/article/category/list/
${
type
}
`
);
export
const
getArticleTypesApi
=
type
=>
instance
.
post
(
`/article/category/list/
${
type
}
`
);
//招聘会报名状态
//招聘会报名状态
export
const
registerStatus
=
articleId
=>
instance
.
post
(
`/jobFair/register/status/
${
articleId
}
`
);
export
const
registerStatus
=
articleId
=>
instance
.
post
(
`/article/jobFair/check/
${
articleId
}
`
);
\ No newline at end of file
// 参加招聘会
export
const
jobFairRegisterApi
=
params
=>
instance
.
post
(
`/jobFair/register`
,
params
);
src/api/user.js
View file @
767df028
...
@@ -49,6 +49,17 @@ export const companyReviewInfo = params => instance.post("/b/company/review/info
...
@@ -49,6 +49,17 @@ export const companyReviewInfo = params => instance.post("/b/company/review/info
export
const
companyReviewUpdate
=
params
=>
instance
.
post
(
"/b/company/review/update"
,
params
);
export
const
companyReviewUpdate
=
params
=>
instance
.
post
(
"/b/company/review/update"
,
params
);
//职位列表
//职位列表
export
const
positionList
=
params
=>
instance
.
post
(
"/b/position/list"
,
params
);
export
const
positionList
=
params
=>
instance
.
post
(
"/b/position/list"
,
params
);
//批量创建岗位
export
const
positionAddList
=
params
=>
instance
.
post
(
"/b/position/addList"
,
params
);
//批量更新职位
export
const
positionuUdateList
=
params
=>
instance
.
post
(
"/b/position/updateList"
,
params
);
//根据id获取反馈信息
//根据id获取反馈信息
export
const
feedbackById
=
params
=>
instance
.
post
(
`/feedback/
${
params
}
`
);
export
const
feedbackById
=
params
=>
instance
.
post
(
`/feedback/
${
params
}
`
);
//根据id获取反馈信息
export
const
jobFair
=
params
=>
instance
.
post
(
`/jobFair/
${
params
}
`
);
// 参加招聘会
export
const
jobFairRegisterApi
=
params
=>
instance
.
post
(
`/jobFair/register`
,
params
);
src/components/form/form-item.vue
View file @
767df028
...
@@ -39,6 +39,7 @@ const iconPath = new URL(`../../static/image/icon/${props.icon}.png`, import.met
...
@@ -39,6 +39,7 @@ const iconPath = new URL(`../../static/image/icon/${props.icon}.png`, import.met
font-size
:
32rpx
;
font-size
:
32rpx
;
font-weight
:
600
;
font-weight
:
600
;
line-height
:
36rpx
;
line-height
:
36rpx
;
white-space
:
nowrap
;
}
}
.icon
{
.icon
{
position
:
absolute
;
position
:
absolute
;
...
...
src/components/form/selectbox.vue
View file @
767df028
...
@@ -39,7 +39,7 @@ const props = defineProps({
...
@@ -39,7 +39,7 @@ const props = defineProps({
default
:
()
=>
[]
default
:
()
=>
[]
}
}
});
});
const
emit
=
defineEmits
([
"update:modelValue"
]);
const
emit
=
defineEmits
([
"update:modelValue"
,
"update"
]);
// 激活类名
// 激活类名
const
isActive
=
e
=>
{
const
isActive
=
e
=>
{
if
(
props
.
multiple
)
{
if
(
props
.
multiple
)
{
...
@@ -61,6 +61,8 @@ const onClickItem = e => {
...
@@ -61,6 +61,8 @@ const onClickItem = e => {
}
else
{
}
else
{
emit
(
"update:modelValue"
,
value
);
emit
(
"update:modelValue"
,
value
);
}
}
emit
(
"update"
);
};
};
</
script
>
</
script
>
...
...
src/pages/articleDetails/index.vue
View file @
767df028
...
@@ -26,10 +26,14 @@
...
@@ -26,10 +26,14 @@
placeholder
placeholder
safeAreaInsetBottom
safeAreaInsetBottom
>
>
<wd-button
@
tap=
"next"
:disabled=
"data.bmStutas || !data.bm"
round=
"false"
class=
"foot-btn"
>
{{
<
!--
<
wd-button
@
tap=
"next"
:disabled=
"data.bmStutas || !data.bm"
round=
"false"
class=
"foot-btn"
>
{{
!
data
.
bmStutas
&&
data
.
bm
?
"立即报名"
:
data
.
bmStutas
?
"已报名"
:
"报名结束"
!
data
.
bmStutas
&&
data
.
bm
?
"立即报名"
:
data
.
bmStutas
?
"已报名"
:
"报名结束"
}}
</wd-button>
-->
<wd-button
@
tap=
"next"
:disabled=
"!data.bm"
round=
"false"
class=
"foot-btn"
>
{{
data
.
bm
?
"立即报名"
:
"报名结束"
}}
</wd-button>
}}
</wd-button>
</wd-tabbar>
</wd-tabbar>
<wd-action-sheet
v-model=
"show"
:actions=
"actions"
@
close=
"close"
@
select=
"select"
/>
</div>
</div>
</
template
>
</
template
>
...
@@ -39,6 +43,15 @@ import evn from "@/utils/config.js";
...
@@ -39,6 +43,15 @@ import evn from "@/utils/config.js";
import
{
ref
}
from
"vue"
;
import
{
ref
}
from
"vue"
;
import
dayjs
from
"dayjs"
;
import
dayjs
from
"dayjs"
;
const
data
=
ref
({});
const
data
=
ref
({});
const
show
=
ref
(
false
);
const
actions
=
ref
([
{
name
:
"更新岗位"
},
{
name
:
"新增岗位"
}
]);
let
articleId
=
ref
(
null
);
let
articleId
=
ref
(
null
);
onLoad
(({
id
})
=>
{
onLoad
(({
id
})
=>
{
articleId
.
value
=
id
;
articleId
.
value
=
id
;
...
@@ -53,12 +66,27 @@ onLoad(({ id }) => {
...
@@ -53,12 +66,27 @@ onLoad(({ id }) => {
data
.
value
.
bm
=
false
;
data
.
value
.
bm
=
false
;
}
}
registerStatus
(
id
).
then
(
Res
=>
{
//
registerStatus(id).then(Res => {
data
.
value
.
bmStutas
=
Res
.
data
;
//
data.value.bmStutas = Res.data;
});
//
});
});
});
console
.
log
(
"data.value"
,
data
.
value
.
bm
,
data
.
value
.
bmStutas
);
});
});
function
showActions
()
{}
function
close
()
{
show
.
value
=
false
;
}
function
select
({
item
,
index
})
{
if
(
index
==
0
)
{
xma
.
navigateTo
({
url
:
`/pages/signUp/addPost?articleId=
${
articleId
.
value
}
&type=update`
});
}
else
{
xma
.
navigateTo
({
url
:
`/pages/signUp/addPost?articleId=
${
articleId
.
value
}
&type=add`
});
}
}
onShow
(()
=>
{
onShow
(()
=>
{
const
currentTime
=
Date
.
now
();
const
currentTime
=
Date
.
now
();
getArticleDetailApi
(
articleId
.
value
).
then
(
res
=>
{
getArticleDetailApi
(
articleId
.
value
).
then
(
res
=>
{
...
@@ -71,16 +99,14 @@ onShow(() => {
...
@@ -71,16 +99,14 @@ onShow(() => {
data
.
value
.
bm
=
false
;
data
.
value
.
bm
=
false
;
}
}
registerStatus
(
articleId
.
value
).
then
(
Res
=>
{
//
registerStatus(articleId.value).then(Res => {
data
.
value
.
bmStutas
=
Res
.
data
;
//
data.value.bmStutas = Res.data;
});
//
});
});
});
});
});
const
form
=
ref
();
function
next
()
{
function
next
()
{
xma
.
navigateTo
({
show
.
value
=
true
;
url
:
`/pages/signUp/index?articleId=
${
articleId
.
value
}
`
});
}
}
</
script
>
</
script
>
...
...
src/pages/login/index.vue
View file @
767df028
...
@@ -43,7 +43,7 @@ const login = () => {
...
@@ -43,7 +43,7 @@ const login = () => {
});
});
}
else
{
}
else
{
uni
.
navigateTo
({
uni
.
navigateTo
({
url
:
"/pages/user/businessLicense/fillIn"
url
:
"/pages/user/businessLicense/fillIn
?steps=1
"
});
});
}
}
});
});
...
...
src/pages/login/test.vue
View file @
767df028
...
@@ -25,12 +25,10 @@ const login = async () => {
...
@@ -25,12 +25,10 @@ const login = async () => {
// 已经判断是否注册过企业
// 已经判断是否注册过企业
if
(
userInfoRes
.
data
)
{
if
(
userInfoRes
.
data
)
{
const
{
status
}
=
userInfoRes
.
data
;
const
{
status
}
=
userInfoRes
.
data
;
console
.
log
(
"status"
,
typeof
status
);
switch
(
status
)
{
switch
(
status
)
{
case
0
:
case
0
:
uni
.
navigateTo
({
uni
.
navigateTo
({
url
:
`/pages/user/businessLicense/fillIn`
url
:
`/pages/user/businessLicense/fillIn
?steps=1
`
});
});
break
;
break
;
default
:
default
:
...
@@ -41,7 +39,7 @@ const login = async () => {
...
@@ -41,7 +39,7 @@ const login = async () => {
}
}
}
else
{
}
else
{
uni
.
navigateTo
({
uni
.
navigateTo
({
url
:
`/pages/user/businessLicense/fillIn`
url
:
`/pages/user/businessLicense/fillIn
?steps=1
`
});
});
}
}
}
}
...
...
src/pages/signUp/addPost.vue
View file @
767df028
<
template
>
<
template
>
<div
class=
"page"
>
<div
class=
"page"
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"岗位信息"
backgroundBox=
"#FFFFFF"
></NavBar>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"岗位信息"
backgroundBox=
"#FFFFFF"
></NavBar>
<wd-tabs
sticky
:offset-top=
"0"
v-model=
"tab"
>
<view
class=
"from-1"
v-if=
"pageType == 'update'"
>
<block
v-for=
"item in tabList"
:key=
"item.id"
>
<wd-tab
:title=
"item.name"
>
<view
class=
"from-1"
v-if=
"tab == 0"
>
<wd-checkbox-group
v-model=
"value"
>
<wd-checkbox-group
v-model=
"value"
>
<view
class=
"wd-cell-item"
v-for=
"i in gwList"
:key=
"i.id"
>
<view
class=
"wd-cell-item"
v-for=
"i in gwList"
:key=
"i.id"
>
<wd-checkbox
:value=
"i
"
></wd-checkbox>
<wd-checkbox
:modelValue=
"i.id
"
></wd-checkbox>
<view
class=
"right"
>
<view
class=
"right"
>
<view
class=
"position-name"
>
{{
i
.
name
}}
</view>
<view
class=
"position-name"
>
{{
i
.
name
}}
</view>
<view
class=
"tip"
>
贵阳|
{{
i
.
workDic
}}
|
{{
i
.
jobTypeName
}}
</view>
<view
class=
"tip"
>
贵阳|
{{
i
.
workDic
}}
|
{{
i
.
jobTypeName
}}
</view>
...
@@ -15,18 +12,255 @@
...
@@ -15,18 +12,255 @@
</view>
</view>
</wd-checkbox-group>
</wd-checkbox-group>
</view>
</view>
<view
v-else
>
2
</view>
<view
v-else
>
</wd-tab>
<view
class=
"from-2"
v-for=
"(item, index) in jobForm"
:key=
"index"
>
</block>
<view
class=
"title"
>
新增岗位信息
{{
index
+
1
}}
</view>
</wd-tabs>
<selectbox
@
update=
"initSalaryColumns"
:options=
"EnumWorkMode"
label-key=
"text"
value-key=
"code"
v-model=
"item.workMode"
></selectbox>
<!-- 职位类型 -->
<form-row>
<form-item
title=
"职位类型"
>
<wd-col-picker
v-model=
"positionTypeValue"
:columns=
"columns"
:column-change=
"columnChange"
@
confirm=
"params => handleConfirm(params, item)"
label-key=
"name"
value-key=
"id"
use-default-slot
>
<view
:class=
"`inner flex-between $
{item.jobTypeName ? '' : 'placeholder'}`">
{{
item
.
jobTypeName
||
"请选择职位类型"
}}
</view>
</wd-col-picker>
</form-item>
</form-row>
<!-- 职位标题 -->
<form-row>
<form-item
title=
"职位标题"
icon=
"arrow"
>
<input
type=
"text"
v-model=
"item.name"
placeholder=
"输入职位标题如“财务总监”"
/>
</form-item>
</form-row>
<!-- 职位描述 -->
<form-row>
<form-item
title=
"职位描述"
:border=
"false"
icon=
""
>
<textarea
v-model=
"item.positionDesc"
placeholder=
"请输入你的职位描述"
></textarea>
</form-item>
</form-row>
<view
class=
"transverse"
>
<form-item
title=
"职位薪资"
icon=
""
>
<view
v-if=
"item.settlementType == 4"
:class=
"`inner flex-between $
{item.salaryText ? '' : 'placeholder'}`"
@click="onOpen(item, index)"
>
{{
item
.
salaryText
||
"请选择月薪范围"
}}
<!--
<view
class=
"arrow"
></view>
-->
<checkbox
class=
"checkbox"
:value=
"item.negotiableSalary"
@
click=
"onChecked(item)"
:checked=
"item.negotiableSalary == 1"
>
面议
</checkbox
>
</view>
<view
v-else
:class=
"`inner flex-between $
{item.salaryText ? '' : 'placeholder'}`"
@click="onOpen(item, index)"
>
{{
item
.
salaryText
||
"请选择时薪范围"
}}
<!--
<view
class=
"arrow"
></view>
-->
<checkbox
class=
"checkbox"
:value=
"item.negotiableSalary"
@
click=
"onChecked(item)"
:checked=
"item.negotiableSalary == 1"
>
面议
</checkbox
>
</view>
</form-item>
<form-item
title=
"工作地址"
icon=
""
>
<wd-col-picker
v-model=
"cityValue"
:columns=
"cityOpstion"
value-key=
"code"
label-key=
"name"
:column-change=
"columnChangeCity"
@
confirm=
"params => handleConfirmCity(params, item)"
use-default-slot
>
<p
:class=
"
{ placeholder: !item.cityText }" class="text-single">
{{
item
.
cityText
||
"请选择公司所在地"
}}
</p>
</wd-col-picker>
</form-item>
</view>
<form-item
title=
"是否提供食宿"
icon=
""
>
<wd-radio-group
v-model=
"item.accommodation"
inline
shape=
"dot"
>
<wd-radio
v-for=
"(v, n) in radioOpstion"
:value=
"v.code"
:key=
"n"
>
{{
v
.
text
}}
</wd-radio>
</wd-radio-group>
</form-item>
<form-item
title=
"福利待遇"
icon=
""
>
<view
class=
"welfare"
>
<view
v-for=
"(el, nl) in item.myBenefits"
:class=
"`t $
{el.active ? 'active' : ''}`"
@tap="onChangeBenefits(el, item)"
:key="nl"
>
{{
el
.
text
}}
</view
>
</view>
</form-item>
<form-item
title=
"身份要求"
icon=
""
>
<wd-picker
:columns=
"identityPostion"
value-key=
"code"
label-key=
"text"
v-model=
"item.identityRequirement"
@
confirm=
"params => handleConfirmIdentity(params, item)"
use-default-slot
>
<view
:class=
"`inner flex-between $
{item.identityText ? '' : 'placeholder'}`">
<view
class=
"flex-align-center"
>
{{
item
.
identityText
||
"请选择身份要求"
}}
</view>
</view>
</wd-picker>
</form-item>
<view
class=
"transverse"
>
<form-item
title=
"学历要求"
icon=
""
>
<wd-picker
:columns=
"educationPostion"
value-key=
"code"
label-key=
"text"
v-model=
"item.educationRequirement"
@
confirm=
"params => handleConfirmEducation(params, item)"
use-default-slot
>
<view
:class=
"`inner flex-between $
{item.educationText ? '' : 'placeholder'}`">
<view
class=
"flex-align-center"
>
{{
item
.
educationText
||
"请选择学历"
}}
</view>
</view>
</wd-picker>
</form-item
><form-item
title=
"年龄要求"
icon=
""
>
<wd-col-picker
v-model=
"ageValue"
:columns=
"ageColumns"
:column-change=
"ageColumnChange"
@
confirm=
"params => ageHandleConfirm(params, item)"
use-default-slot
>
<view
:class=
"`inner flex-between $
{item.ageText ? '' : 'placeholder'}`">
{{
item
.
ageText
||
"请选择年龄范围"
}}
</view>
</wd-col-picker>
</form-item>
</view>
<form-row
:fill=
"false"
>
<form-item
title=
"专业技术职称"
icon=
"edit"
>
<input
type=
"text"
@
input=
"inputMajor($event, item)"
v-model=
"item.majorInputValue"
placeholder=
"请填写职称"
/>
</form-item>
<form-item
title=
""
>
<wd-picker
:columns=
"levelOptions"
value-key=
"text"
label-key=
"text"
v-model=
"majorSelectValue"
@
confirm=
"params => handMajoration(params, item)"
use-default-slot
>
<view
:class=
"`inner flex-between $
{majorSelectValue ? '' : 'placeholder'}`">
<view
class=
"flex-align-center"
bind:tap=
"onShowIdentitySelect"
>
{{
majorSelectValue
||
"请选择职业等级"
}}
</view>
</view>
</wd-picker>
</form-item>
</form-row>
<form-row
:fill=
"false"
>
<form-item
title=
"职业资格/技能等级证书"
icon=
"edit"
>
<input
type=
"text"
@
input=
"inputLeve($event, item)"
v-model=
"item.certificateInputValue"
placeholder=
"请填写职业资格"
/>
</form-item>
<form-item
title=
""
>
<wd-picker
:columns=
"levelOptions"
value-key=
"text"
label-key=
"text"
@
confirm=
"params => handlelevelation(params, item)"
v-model=
"certificateSelectValue"
use-default-slot
>
<view
:class=
"`inner flex-between $
{item.certificateSelectValue ? '' : 'placeholder'}`">
<view
class=
"flex-align-center"
>
{{
item
.
certificateSelectValue
||
"请选择职业资格等级"
}}
</view>
</view>
</wd-picker>
</form-item>
</form-row>
<form-item
title=
"特种作业证"
icon=
"edit"
>
<input
v-model=
"item.specialCertificates"
type=
"text"
placeholder=
"请填写特种作业证"
/>
</form-item>
<form-row
:fill=
"false"
>
<form-item
title=
"招聘人数"
icon=
"edit"
>
<input
type=
"number"
v-model=
"item.recruitmentNumber"
placeholder=
"请输入招聘人数"
/>
</form-item>
<form-item
title=
"联系电话"
icon=
"edit"
>
<input
type=
"number"
v-model=
"item.contactPhone"
placeholder=
"请输入联系电话"
/>
</form-item>
</form-row
><form-item
title=
"联系人"
icon=
"edit"
>
<input
type=
"text"
v-model=
"item.contactPerson"
placeholder=
"请输入联系人"
/>
</form-item>
</view>
</view>
<wd-popup
v-model=
"salaryShow"
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=
"params => salaryHandleConfirm(params, item)"
use-default-slot
:columns=
"salaryColumns"
v-if=
"salaryShow"
v-model=
"salaryValue"
></wd-picker-view>
<view
style=
"display: flex; justify-content: center; width: 100%"
><wd-button
style=
"width: 80%"
@
click=
"handleClose"
block
:round=
"false"
>
确定
</wd-button></view
>
</wd-popup>
<wd-tabbar
<wd-tabbar
v-if=
"
tab == 0
"
v-if=
"
pageType == 'update'
"
custom-style=
"display: flex;justify-content: center !important;z-index:1;"
custom-style=
"display: flex;justify-content: center !important;z-index:1;"
fixed
fixed
placeholder
placeholder
safeAreaInsetBottom
safeAreaInsetBottom
>
>
<view
class=
"footer"
>
<button
class=
"foot-btn"
@
click=
"
openMask"
>
下一步
</button></view>
<view
class=
"footer"
>
<button
class=
"foot-btn"
@
click=
"
submitFrom"
>
提交报名
</button></view>
</wd-tabbar>
</wd-tabbar>
<wd-tabbar
<wd-tabbar
v-else
v-else
...
@@ -37,7 +271,7 @@
...
@@ -37,7 +271,7 @@
>
>
<view
class=
"footer"
>
<view
class=
"footer"
>
<button
class=
"foot-btn1"
@
click=
"addPost"
>
继续添加
</button>
<button
class=
"foot-btn1"
@
click=
"addPost"
>
继续添加
</button>
<button
class=
"foot-btn"
@
click=
"
openMask
"
>
提交报名
</button></view
<button
class=
"foot-btn"
@
click=
"
submitFrom
"
>
提交报名
</button></view
>
>
</wd-tabbar>
</wd-tabbar>
</div>
</div>
...
@@ -45,34 +279,535 @@
...
@@ -45,34 +279,535 @@
<
script
setup
>
<
script
setup
>
import
{
ref
}
from
"vue"
;
import
{
ref
}
from
"vue"
;
import
{
positionList
}
from
"@/api/user"
;
import
{
positionList
,
positionAddList
,
positionuUdateList
,
jobFair
,
jobFairRegisterApi
}
from
"@/api/user"
;
import
Selectbox
from
"@/components/form/selectbox.vue"
;
import
FormItem
from
"@/components/form/form-item.vue"
;
import
FormRow
from
"@/components/form/form-row.vue"
;
import
{
dictJobTypeApi
,
getTreeListApi
}
from
"@/api/common"
;
import
{
validateForm
}
from
"@/utils/utils"
;
import
town
from
"@/assets/town.json"
;
import
{
getEumData
}
from
"@/utils/utils"
;
import
{
getEumData
}
from
"@/utils/utils"
;
const
tab
=
ref
(
0
);
const
tab
=
ref
(
0
);
const
value
=
ref
([]);
const
value
=
ref
([]);
const
gwList
=
ref
([]);
const
gwList
=
ref
([]);
const
columns
=
ref
([]);
/* 获取省市区 */
const
cityOpstion
=
ref
([]);
const
cityValue
=
ref
([]);
const
cityText
=
ref
(
""
);
let
citySelectedItems
=
[];
const
salaryShow
=
ref
(
false
);
const
salaryValue
=
ref
([]);
const
identityPostion
=
ref
([]);
const
educationPostion
=
ref
([]);
/* 福利待遇 */
/* 薪资选择 */
let
salaryText
=
ref
(
""
);
const
salaryColumns
=
ref
([]);
/* 是否提供住宿 */
const
radioOpstion
=
ref
([]);
const
certificateInputValue
=
ref
(
""
);
const
certificateSelectValue
=
ref
(
""
);
const
majorInputValue
=
ref
(
""
);
const
majorSelectValue
=
ref
(
""
);
/* 职业类型 */
const
positionTypeValue
=
ref
([]);
/* 兼职全职枚举 */
const
EnumWorkMode
=
ref
([]);
const
EnumWorkMode
=
ref
([]);
const
articleIds
=
ref
(
""
);
const
pageType
=
ref
(
""
);
/* 等级选择项 */
const
levelOptions
=
ref
([
"初级"
,
"中级"
,
"高级"
,
"高级以上"
]);
const
ageValue
=
ref
([]);
const
ageColumns
=
ref
([]);
const
jobForm
=
ref
([
{
workMode
:
1
,
name
:
""
,
jobTypeId
:
null
,
jobTypePid
:
""
,
jobTypeName
:
""
,
postitDesc
:
""
,
negotiableSalary
:
0
,
settlementType
:
4
,
minSalary
:
null
,
maxSalary
:
null
,
benefits
:
""
,
identityRequirement
:
1
,
educationRequirement
:
0
,
minAgeRequirement
:
0
,
maxAgeRequirement
:
0
,
recruitmentNumber
:
1
,
accommodation
:
0
,
provinceCode
:
""
,
cityCode
:
""
,
districtCode
:
""
,
street
:
""
,
address
:
""
,
contactPerson
:
""
,
contactPhone
:
""
,
positionalTitle
:
""
,
professionalCertificates
:
""
,
specialCertificates
:
""
,
articleId
:
articleIds
.
value
,
salaryText
:
""
,
//显示
myBenefits
:
[
{
text
:
"年底双薪"
,
active
:
false
},
{
text
:
"节假日福利"
,
active
:
false
},
{
text
:
"旅游团建"
,
active
:
false
},
{
text
:
"生日福利"
,
active
:
false
},
{
text
:
"五险一金"
,
active
:
false
},
{
text
:
"三险一金"
,
active
:
false
}
]
}
]);
onLoad
(({
articleId
,
type
})
=>
{
articleIds
.
value
=
articleId
;
pageType
.
value
=
type
;
jobForm
.
value
[
0
].
articleId
=
articleId
;
jobFair
(
articleId
).
then
(
res
=>
{
value
.
value
=
res
.
data
.
positionIds
.
split
(
","
);
console
.
log
(
"res"
,
res
);
});
});
const
tabList
=
ref
([
const
tabList
=
ref
([
{
id
:
213213
,
name
:
"选择已有岗位"
,
type
:
1
},
{
id
:
213213
,
name
:
"选择已有岗位"
,
type
:
1
},
{
id
:
1651651
,
name
:
"新增岗位"
,
type
:
2
}
{
id
:
1651651
,
name
:
"新增岗位"
,
type
:
2
}
]);
]);
const
getEnumCertificatesLevel
=
async
()
=>
{
levelOptions
.
value
=
await
getEumData
(
"EnumCertificatesLevel"
);
};
getEnumCertificatesLevel
();
const
initPostion
=
async
()
=>
{
identityPostion
.
value
=
await
getEumData
(
"EnumIdentityRequirement"
);
educationPostion
.
value
=
await
getEumData
(
"EnumEducationRequirement"
);
};
initPostion
();
function
handleClose
()
{
if
(
salaryValue
.
value
[
1
]
<
salaryValue
.
value
[
0
])
{
xma
.
showToast
({
title
:
"最高薪资不能小于最低薪资"
,
icon
:
"none"
});
return
;
}
salaryShow
.
value
=
false
;
}
const
initageColumns
=
()
=>
{
const
temp
=
[
{
value
:
"不限"
,
label
:
"不限"
,
next
:
false
}
];
for
(
let
i
=
16
;
i
<
81
;
i
++
)
{
temp
.
push
({
value
:
i
,
label
:
i
+
"岁"
,
next
:
true
});
}
ageColumns
.
value
.
push
(
temp
);
};
initageColumns
();
const
getEnumWorkMode
=
async
()
=>
{
const
getEnumWorkMode
=
async
()
=>
{
EnumWorkMode
.
value
=
await
getEumData
(
"EnumWorkMode"
);
EnumWorkMode
.
value
=
await
getEumData
(
"EnumWorkMode"
);
console
.
log
(
"EnumWorkMode.value"
,
EnumWorkMode
.
value
);
};
};
getTreeListApi
({
provinceName
:
"贵州省"
}).
then
(
res
=>
{
cityOpstion
.
value
.
push
(
res
.
data
[
0
].
children
);
});
getEnumWorkMode
();
getEnumWorkMode
();
positionList
({}).
then
(
res
=>
{
positionList
({}).
then
(
res
=>
{
res
.
data
=
res
.
data
.
map
(
item
=>
{
res
.
data
=
res
.
data
.
map
(
item
=>
{
item
.
workDic
=
EnumWorkMode
.
value
.
find
(
v
=>
v
.
code
==
item
.
workMode
).
text
;
item
.
workDic
=
EnumWorkMode
.
value
.
find
(
v
=>
v
.
code
==
item
.
workMode
).
text
;
return
item
;
return
item
;
});
});
// res.data = res.data.filter(item => {
// return !item.articleId;
// });
gwList
.
value
=
res
.
data
;
gwList
.
value
=
res
.
data
;
});
});
const
getJobType
=
()
=>
{
dictJobTypeApi
({}).
then
(
res
=>
{
columns
.
value
.
push
(
res
.
data
);
});
};
getJobType
();
const
initRadioOpstion
=
async
()
=>
{
radioOpstion
.
value
=
await
getEumData
(
"EnumAccommodation"
);
};
initRadioOpstion
();
// 职业类型
const
columnChange
=
({
selectedItem
,
resolve
,
finish
})
=>
{
if
(
selectedItem
.
children
?.
length
>
0
)
{
resolve
(
selectedItem
.
children
);
}
else
{
finish
();
}
};
const
handleConfirm
=
(
params
,
item
)
=>
{
const
{
selectedItems
,
value
}
=
params
;
item
.
jobTypeName
=
selectedItems
[
1
].
name
;
item
.
jobTypeId
=
selectedItems
[
1
].
id
;
item
.
jobTypePid
=
selectedItems
[
0
].
id
;
console
.
log
(
"selectedItems"
,
item
.
jobTypeName
,
item
.
jobTypeId
,
item
.
jobTypePid
);
};
// 职业类型
// 地址
const
columnChangeCity
=
({
selectedItem
,
resolve
,
finish
})
=>
{
if
(
selectedItem
.
children
)
{
resolve
(
selectedItem
.
children
);
}
else
{
// 选择街道
if
(
selectedItem
.
children
===
null
&&
town
[
selectedItem
.
code
])
{
resolve
(
town
[
selectedItem
.
code
].
map
((
v
,
i
)
=>
({
...
v
,
code
:
i
})));
}
else
{
finish
();
}
}
};
const
handleConfirmCity
=
(
params
,
item
)
=>
{
const
{
selectedItems
}
=
params
;
item
.
cityText
=
selectedItems
.
map
(
v
=>
v
.
name
||
""
).
join
(
"-"
);
citySelectedItems
=
selectedItems
;
const
[
city
,
district
,
street
]
=
selectedItems
;
item
.
address
=
selectedItems
.
map
(
v
=>
v
.
name
||
""
).
join
(
""
);
item
.
provinceCode
=
520000
;
item
.
cityName
=
city
.
name
;
item
.
cityCode
=
city
.
code
;
item
.
districtCode
=
district
.
code
;
item
.
street
=
street
?
street
.
name
:
""
;
console
.
log
(
"item.cityName"
,
item
.
cityName
);
};
// 地址
// 薪资-fun
const
activeIndex
=
ref
(
0
);
const
initSalaryColumns
=
()
=>
{
salaryColumns
.
value
=
[];
let
index
=
activeIndex
.
value
;
let
multiple
=
1
;
// 确定 settlementType
jobForm
.
value
[
index
].
settlementType
=
jobForm
.
value
[
index
].
workMode
===
2
?
1
:
4
;
// 设置基准值
multiple
=
jobForm
.
value
[
index
].
settlementType
===
1
?
50
:
1000
;
const
temp
=
[];
const
maxSalary
=
jobForm
.
value
[
index
].
settlementType
==
1
?
1000
:
50
*
multiple
;
if
(
jobForm
.
value
[
index
].
settlementType
==
1
)
{
temp
.
push
({
value
:
10
,
label
:
"10"
,
next
:
true
});
}
// 生成序列
for
(
let
i
=
1
;
i
*
multiple
<=
maxSalary
;
i
++
)
{
const
currentValue
=
i
*
multiple
;
temp
.
push
({
value
:
currentValue
,
label
:
jobForm
.
value
[
index
].
settlementType
==
1
?
currentValue
:
`
${
currentValue
/
1000
}
k`
,
next
:
true
});
}
// 确保 columns.value 是一个数组
if
(
!
Array
.
isArray
(
salaryColumns
.
value
))
{
salaryColumns
.
value
=
[];
}
// 清空原来的数组,以确保只包含新的数据
salaryColumns
.
value
.
length
=
0
;
// 将 temp 复制两次,推入 columns.value
salaryColumns
.
value
.
push
([...
temp
],
[...
temp
]);
};
initSalaryColumns
();
function
onChecked
(
item
)
{
item
.
negotiableSalary
=
item
.
negotiableSalary
==
1
?
0
:
1
;
// 如果勾选了面议
if
(
item
.
negotiableSalary
==
1
)
{
salaryText
.
value
=
""
;
item
.
maxSalary
=
0
;
item
.
minSalary
=
0
;
item
.
negotiableSalary
=
1
;
}
else
{
item
.
negotiableSalary
=
0
;
}
}
function
onOpen
(
item
,
index
)
{
salaryValue
.
value
=
[];
activeIndex
.
value
=
index
;
initSalaryColumns
();
if
(
item
.
negotiableSalary
==
1
)
return
;
salaryShow
.
value
=
true
;
}
const
salaryHandleConfirm
=
(
params
,
item
)
=>
{
let
multiple
=
1
;
multiple
=
jobForm
.
value
[
activeIndex
.
value
].
settlementType
===
1
?
50
:
1000
;
const
{
selectedItems
,
value
}
=
params
;
if
(
value
[
1
]
<
value
[
0
])
{
xma
.
showToast
({
title
:
"最高薪资不能小于最低薪资"
,
icon
:
"none"
});
return
;
}
jobForm
.
value
[
activeIndex
.
value
].
negotiableSalary
=
0
;
if
(
jobForm
.
value
[
activeIndex
.
value
].
settlementType
===
1
)
{
jobForm
.
value
[
activeIndex
.
value
].
salaryText
=
value
.
join
(
"~"
);
}
else
{
jobForm
.
value
[
activeIndex
.
value
].
salaryText
=
value
.
map
(
num
=>
`
${
num
/
multiple
}
k`
).
join
(
"~"
);
}
const
[
min
,
max
]
=
value
;
if
(
max
)
{
jobForm
.
value
[
activeIndex
.
value
].
maxSalary
=
max
;
jobForm
.
value
[
activeIndex
.
value
].
minSalary
=
min
;
jobForm
.
value
[
activeIndex
.
value
].
negotiableSalary
=
0
;
}
else
{
jobForm
.
value
[
activeIndex
.
value
].
maxSalary
=
0
;
jobForm
.
value
[
activeIndex
.
value
].
minSalary
=
0
;
jobForm
.
value
[
activeIndex
.
value
].
negotiableSalary
=
1
;
}
};
const
onChangeBenefits
=
(
el
,
item
)
=>
{
el
.
active
=
!
el
.
active
;
item
.
benefits
=
item
.
myBenefits
.
filter
(
benefit
=>
benefit
.
active
)
// 只保留选中的
.
map
(
benefit
=>
benefit
.
text
)
// 获取文本
.
join
(
", "
);
};
// 选择身份
const
handleConfirmIdentity
=
(
params
,
item
)
=>
{
const
{
selectedItems
,
value
}
=
params
;
item
.
identityText
=
selectedItems
.
text
;
};
const
ageColumnChange
=
({
selectedItem
,
resolve
,
finish
})
=>
{
console
.
log
(
selectedItem
);
if
(
selectedItem
.
next
)
{
const
temp
=
[];
for
(
let
i
=
1
;
i
<
50
;
i
++
)
{
temp
.
push
({
value
:
i
+
selectedItem
.
value
,
label
:
i
+
selectedItem
.
value
+
"岁"
,
next
:
false
});
resolve
(
temp
);
}
}
else
{
finish
();
}
};
const
ageHandleConfirm
=
(
params
,
item
)
=>
{
const
{
selectedItems
,
value
}
=
params
;
item
.
ageText
=
value
.
join
(
"~"
);
const
[
min
,
max
]
=
value
;
if
(
max
)
{
// 没有选择不限
item
.
maxAgeRequirement
=
max
;
item
.
minAgeRequirement
=
min
;
}
else
{
item
.
maxAgeRequirement
=
0
;
item
.
minAgeRequirement
=
0
;
}
};
// 选择学历
const
handleConfirmEducation
=
(
params
,
item
)
=>
{
const
{
selectedItems
,
value
}
=
params
;
item
.
educationText
=
selectedItems
.
text
;
};
const
inputLeve
=
(
e
,
item
)
=>
{
const
{
value
}
=
e
.
detail
;
item
.
certificateInputValue
=
value
;
item
.
professionalCertificates
=
value
+
"-"
+
certificateSelectValue
.
value
;
};
const
handlelevelation
=
(
params
,
item
)
=>
{
const
{
selectedItems
,
value
}
=
params
;
item
.
professionalCertificates
=
certificateInputValue
.
value
+
"-"
+
value
;
};
const
inputMajor
=
(
e
,
item
)
=>
{
const
{
value
}
=
e
.
detail
;
item
.
majorInputValue
=
value
;
item
.
positionalTitle
=
value
+
"-"
+
majorSelectValue
.
value
;
};
const
handMajoration
=
(
params
,
item
)
=>
{
const
{
selectedItems
,
value
}
=
params
;
item
.
positionalTitle
=
majorInputValue
.
value
+
"-"
+
value
;
};
const
selectedJobs
=
ref
([]);
const
submitFrom
=
()
=>
{
if
(
pageType
.
value
==
"update"
)
{
let
updateArr
=
gwList
.
value
.
filter
(
item
=>
value
.
value
.
includes
(
String
(
item
.
id
)));
updateArr
=
updateArr
.
map
(
item
=>
{
return
item
.
id
;
});
if
(
updateArr
.
length
>
0
)
{
xma
.
showLoading
({
title
:
"提交中..."
,
mask
:
true
});
jobFairRegisterApi
({
positionIdList
:
updateArr
,
articleId
:
articleIds
.
value
}).
then
(
res
=>
{
xma
.
hideLoading
();
if
(
res
.
code
==
200
)
{
xma
.
navigateBack
({
delta
:
1
});
}
});
}
else
{
xma
.
showToast
({
title
:
"请选择职位"
,
icon
:
"none"
});
}
}
else
{
console
.
log
(
"jobForm.value"
,
jobForm
.
value
);
const
allValid
=
jobForm
.
value
.
length
>
0
&&
jobForm
.
value
.
every
(
item
=>
{
return
(
item
&&
validateForm
(
item
,
[
"jobTypeId"
,
"jobTypeName"
,
"name"
,
"positionDesc"
,
"address"
,
"identityRequirement"
,
"educationRequirement"
,
"contactPhone"
,
"contactPerson"
])
);
});
if
(
allValid
)
{
xma
.
showLoading
({
title
:
"提交中..."
,
mask
:
true
});
positionAddList
(
jobForm
.
value
).
then
(
res
=>
{
xma
.
hideLoading
();
if
(
res
.
code
==
200
)
{
xma
.
navigateBack
({
delta
:
1
});
}
});
}
else
{
xma
.
showToast
({
title
:
"请填写完整"
,
icon
:
"none"
});
}
}
};
function
openMask
()
{
tab
.
value
=
1
;
}
function
addPost
()
{
jobForm
.
value
.
push
({
workMode
:
1
,
name
:
""
,
jobTypeId
:
null
,
jobTypePid
:
""
,
jobTypeName
:
""
,
postitDesc
:
""
,
negotiableSalary
:
0
,
settlementType
:
4
,
minSalary
:
null
,
maxSalary
:
null
,
benefits
:
""
,
identityRequirement
:
1
,
educationRequirement
:
null
,
minAgeRequirement
:
null
,
maxAgeRequirement
:
null
,
recruitmentNumber
:
1
,
accommodation
:
0
,
provinceCode
:
""
,
cityCode
:
""
,
districtCode
:
""
,
street
:
""
,
address
:
""
,
contactPerson
:
""
,
contactPhone
:
""
,
positionalTitle
:
""
,
professionalCertificates
:
""
,
specialCertificates
:
""
,
articleId
:
articleIds
.
value
,
salaryText
:
""
,
//显示
myBenefits
:
[
{
text
:
"年底双薪"
,
active
:
false
},
{
text
:
"节假日福利"
,
active
:
false
},
{
text
:
"旅游团建"
,
active
:
false
},
{
text
:
"生日福利"
,
active
:
false
},
{
text
:
"五险一金"
,
active
:
false
},
{
text
:
"三险一金"
,
active
:
false
}
]
});
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
page
{
}
.page
{
.page
{
width
:
100%
;
width
:
100%
;
.title-box
{
box-sizing
:
border-box
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
padding
:
32rpx
;
}
.from-1
{
.from-1
{
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
...
@@ -99,6 +834,70 @@ positionList({}).then(res => {
...
@@ -99,6 +834,70 @@ positionList({}).then(res => {
}
}
}
}
}
}
.from-2
{
width
:
100%
;
box-sizing
:
border-box
;
display
:
flex
;
flex-direction
:
column
;
padding
:
32rpx
;
margin-top
:
32rpx
;
.title
{
font-size
:
48rpx
;
font-weight
:
500
;
color
:
#1b2026
;
margin-bottom
:
32rpx
;
}
textarea
{
box-sizing
:
border-box
;
width
:
100%
;
padding
:
32rpx
;
background
:
#f2f5fb
;
border-radius
:
8rpx
;
}
.placeholder
{
width
:
50%
;
text-wrap
:
nowrap
;
}
.checkbox
{
white-space
:
nowrap
;
flex-shrink
:
0
;
}
.transverse
{
display
:
flex
;
align-items
:
baseline
;
justify-content
:
space-between
;
:deep
(
.uni-checkbox-input
)
{
border-radius
:
50%
!
important
;
margin-left
:
20rpx
;
flex-shrink
:
0
;
}
}
.welfare
{
display
:
flex
;
flex-wrap
:
wrap
;
gap
:
24rpx
;
view
{
gap
:
12rpx
;
padding
:
12rpx
20rpx
;
font-size
:
24rpx
;
line-height
:
36rpx
;
color
:
#1f86ff
;
background
:
rgb
(
31
134
255
/
10%
);
border-radius
:
8rpx
;
&
.active
{
color
:
#ffffff
;
background-color
:
#1f86ff
;
}
}
}
.text-single
{
width
:
100%
;
margin-left
:
20rpx
;
white-space
:
wrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
}
.footer
{
.footer
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
...
...
src/pages/signUp/index.vue
View file @
767df028
...
@@ -38,14 +38,16 @@ import { getCompanyInfoApi } from "@/api/user";
...
@@ -38,14 +38,16 @@ import { getCompanyInfoApi } from "@/api/user";
import
{
useStore
}
from
"./store"
;
import
{
useStore
}
from
"./store"
;
const
pinias
=
useStore
();
const
pinias
=
useStore
();
const
enterpriseInformation
=
ref
({});
const
enterpriseInformation
=
ref
({});
onLoad
(
options
=>
{
const
articleIds
=
ref
(
""
);
onLoad
(({
articleId
})
=>
{
articleIds
.
value
=
articleId
;
getCompanyInfoApi
().
then
(
res
=>
{
getCompanyInfoApi
().
then
(
res
=>
{
enterpriseInformation
.
value
=
res
.
data
;
enterpriseInformation
.
value
=
res
.
data
;
});
});
});
});
const
next
=
()
=>
{
const
next
=
()
=>
{
uni
.
navigateTo
({
uni
.
navigateTo
({
url
:
"/pages/signUp/addPost"
url
:
`/pages/signUp/addPost?articleId=
${
articleIds
.
value
}
`
});
});
};
};
</
script
>
</
script
>
...
...
src/pages/user/businessLicense/fillIn.vue
View file @
767df028
...
@@ -178,13 +178,6 @@ const nextStep = () => {
...
@@ -178,13 +178,6 @@ const nextStep = () => {
default
:
default
:
break
;
break
;
}
}
if
(
flag
)
{
uni
.
showToast
({
title
:
"请先完成操作"
,
icon
:
"none"
});
return
;
}
};
};
/* 选择图片 */
/* 选择图片 */
const
chooseImage
=
sourceType
=>
{
const
chooseImage
=
sourceType
=>
{
...
...
src/pages/user/index.vue
View file @
767df028
...
@@ -29,7 +29,7 @@
...
@@ -29,7 +29,7 @@
<wd-overlay
:show=
"displayExpired"
>
<wd-overlay
:show=
"displayExpired"
>
<view
class=
"popup-display-expired"
>
<view
class=
"popup-display-expired"
>
<view
class=
"sumbit-error"
>
<view
class=
"sumbit-error"
>
<image
src=
"@/static/image/user/displayExpired.png"
></image>
<view
class=
"title"
>
企业信息已失效
</view>
<image
class=
"a"
src=
"@/static/image/user/displayExpired.png"
></image>
<view
class=
"title"
>
企业信息已失效
</view>
<view
class=
"txt"
<view
class=
"txt"
>
由于您超过
<text
style=
"color: #1f86ff"
>
1
</text>
月未登录 现已将您的账号禁用 您可完成申述后继续使用
</view
>
由于您超过
<text
style=
"color: #1f86ff"
>
1
</text>
月未登录 现已将您的账号禁用 您可完成申述后继续使用
</view
>
>
...
@@ -40,6 +40,17 @@
...
@@ -40,6 +40,17 @@
>
>
</view>
</view>
</wd-overlay>
</wd-overlay>
<wd-overlay
:show=
"showOut"
>
<view
class=
"popup-display-expired"
>
<view
class=
"sumbit-error"
>
<image
class=
"u"
src=
"@/static/image/user/user-out.png"
></image>
<view
class=
"title"
></view>
<view
class=
"txt"
>
您的大堂经理职位 匹配的人员已超过7天未处理
</view>
<view
class=
"btn-box1"
>
<view
class=
"tz-btn btn"
@
tap=
"goToHome('/pages/recommend/index')"
>
去看看
</view>
</view></view
>
</view>
</wd-overlay>
<div
class=
"user-container"
>
<div
class=
"user-container"
>
<view
class=
"bg"
></view>
<view
class=
"bg"
></view>
<!-- 用户信息 -->
<!-- 用户信息 -->
...
@@ -81,6 +92,7 @@ import { getEnumText } from "@/utils/utils";
...
@@ -81,6 +92,7 @@ import { getEnumText } from "@/utils/utils";
import
{
ref
,
reactive
}
from
"vue"
;
import
{
ref
,
reactive
}
from
"vue"
;
import
evn
from
"@/utils/config.js"
;
import
evn
from
"@/utils/config.js"
;
const
show
=
ref
(
false
);
const
show
=
ref
(
false
);
const
showOut
=
ref
(
false
);
const
displayExpired
=
ref
(
false
);
const
displayExpired
=
ref
(
false
);
let
name
=
ref
(
""
);
let
name
=
ref
(
""
);
let
id
=
ref
(
""
);
let
id
=
ref
(
""
);
...
@@ -95,6 +107,16 @@ const navigateTo = (url, fn) => {
...
@@ -95,6 +107,16 @@ const navigateTo = (url, fn) => {
url
url
});
});
};
};
const
goToHome
=
(
url
,
fn
)
=>
{
showOut
.
value
=
false
;
if
(
fn
)
{
fn
();
}
url
&&
xma
.
switchTab
({
url
});
};
const
navList
=
reactive
([
const
navList
=
reactive
([
{
{
icon
:
new
URL
(
"@/static/image/user/history.png"
,
import
.
meta
.
url
).
href
,
icon
:
new
URL
(
"@/static/image/user/history.png"
,
import
.
meta
.
url
).
href
,
...
@@ -104,14 +126,14 @@ const navList = reactive([
...
@@ -104,14 +126,14 @@ const navList = reactive([
auditStatus
:
""
auditStatus
:
""
},
},
{
{
icon
:
new
URL
(
"@/static/image/user/
history
.png"
,
import
.
meta
.
url
).
href
,
icon
:
new
URL
(
"@/static/image/user/
post
.png"
,
import
.
meta
.
url
).
href
,
url
:
"/pages/user/positionManagement/index"
,
url
:
"/pages/user/positionManagement/index"
,
text
:
"职位管理"
,
text
:
"职位管理"
,
subText
:
""
,
subText
:
""
,
auditStatus
:
""
auditStatus
:
""
},
},
{
{
icon
:
new
URL
(
"@/static/image/user/
history
.png"
,
import
.
meta
.
url
).
href
,
icon
:
new
URL
(
"@/static/image/user/
position
.png"
,
import
.
meta
.
url
).
href
,
url
:
"/pages/recommend/releasePostion/step1"
,
url
:
"/pages/recommend/releasePostion/step1"
,
text
:
"岗位发布"
,
text
:
"岗位发布"
,
subText
:
""
,
subText
:
""
,
...
@@ -129,20 +151,20 @@ const navList = reactive([
...
@@ -129,20 +151,20 @@ const navList = reactive([
removeToken
();
removeToken
();
},
},
text
:
"退出登录"
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/user/businessLicense/fillIn"
,
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/user/businessLicense/fillIn",
// text: "企业认证"
// }
]);
]);
/* 个人信息 */
/* 个人信息 */
const
userInfo
=
ref
({});
const
userInfo
=
ref
({});
...
@@ -246,6 +268,13 @@ onShow(() => {
...
@@ -246,6 +268,13 @@ onShow(() => {
width
:
30rpx
;
width
:
30rpx
;
height
:
30rpx
;
height
:
30rpx
;
}
}
.u
{
width
:
274rpx
;
height
:
192rpx
;
position
:
absolute
;
top
:
20rpx
;
right
:
20rpx
;
}
.title
{
.title
{
padding
:
32rpx
0
;
padding
:
32rpx
0
;
font-size
:
36rpx
;
font-size
:
36rpx
;
...
@@ -303,11 +332,18 @@ onShow(() => {
...
@@ -303,11 +332,18 @@ onShow(() => {
padding
:
0
32rpx
32rpx
;
padding
:
0
32rpx
32rpx
;
background-color
:
#ffffff
;
background-color
:
#ffffff
;
border-radius
:
10rpx
;
border-radius
:
10rpx
;
image
{
.a
{
position
:
absolute
;
position
:
absolute
;
width
:
448rpx
;
width
:
448rpx
;
height
:
448rpx
;
height
:
448rpx
;
}
}
.u
{
width
:
274rpx
;
height
:
192rpx
;
position
:
absolute
;
top
:
120rpx
;
}
.title
{
.title
{
padding
:
32rpx
0
;
padding
:
32rpx
0
;
margin-top
:
300rpx
;
margin-top
:
300rpx
;
...
@@ -342,6 +378,25 @@ onShow(() => {
...
@@ -342,6 +378,25 @@ onShow(() => {
background
:
#1f86ff
;
background
:
#1f86ff
;
}
}
}
}
.btn-box1
{
display
:
flex
;
align-items
:
center
;
margin-top
:
40rpx
;
justify-content
:
center
;
.btn
{
box-sizing
:
border-box
;
padding
:
14rpx
34rpx
;
border-radius
:
12rpx
;
}
.cancel-button
{
color
:
#1f86ff
;
background
:
rgb
(
31
134
255
/
10%
);
}
.tz-btn
{
color
:
#ffffff
;
background
:
#1f86ff
;
}
}
}
}
}
}
.nav-bar
{
.nav-bar
{
...
...
src/static/image/user/history.png
View replaced file @
95b762d1
View file @
767df028
1.02 KB
|
W:
|
H:
1.14 KB
|
W:
|
H:
2-up
Swipe
Onion skin
src/static/image/user/position.png
0 → 100644
View file @
767df028
605 Bytes
src/static/image/user/post.png
0 → 100644
View file @
767df028
923 Bytes
src/static/image/user/user-out.png
0 → 100644
View file @
767df028
12 KB
src/utils/utils.js
View file @
767df028
...
@@ -71,6 +71,7 @@ export const formatTimestamp = (timestamp, formatString = "YYYY-MM-DD hh:mm:ss")
...
@@ -71,6 +71,7 @@ export const formatTimestamp = (timestamp, formatString = "YYYY-MM-DD hh:mm:ss")
export
const
validateForm
=
(
formData
,
requiredFields
)
=>
{
export
const
validateForm
=
(
formData
,
requiredFields
)
=>
{
const
phoneRegex
=
/^1
[
3-9
]\d{9}
$/
;
// 正则表达式匹配中国大陆手机号码
const
phoneRegex
=
/^1
[
3-9
]\d{9}
$/
;
// 正则表达式匹配中国大陆手机号码
for
(
const
field
of
requiredFields
)
{
for
(
const
field
of
requiredFields
)
{
const
fieldValue
=
formData
[
field
];
if
(
field
===
"contactPhone"
||
field
===
"phone"
)
{
if
(
field
===
"contactPhone"
||
field
===
"phone"
)
{
if
(
!
formData
[
field
]
||
!
phoneRegex
.
test
(
formData
[
field
]))
{
if
(
!
formData
[
field
]
||
!
phoneRegex
.
test
(
formData
[
field
]))
{
uni
.
showToast
({
uni
.
showToast
({
...
@@ -80,7 +81,7 @@ export const validateForm = (formData, requiredFields) => {
...
@@ -80,7 +81,7 @@ export const validateForm = (formData, requiredFields) => {
});
});
return
false
;
return
false
;
}
}
}
else
if
(
!
formData
[
field
]
)
{
}
else
if
(
fieldValue
===
null
||
fieldValue
===
undefined
||
fieldValue
===
""
)
{
console
.
log
(
field
);
console
.
log
(
field
);
uni
.
showToast
({
uni
.
showToast
({
...
...
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