Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
XBPX-ZP
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
刘旭
XBPX-ZP
Commits
8cb40226
提交
8cb40226
authored
12月 07, 2023
作者:
刘旭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新代码
上级
a1d48a04
隐藏空白字符变更
内嵌
并排
正在显示
42 个修改的文件
包含
709 行增加
和
233 行删除
+709
-233
headers.vue
src/Layout/headers.vue
+7
-0
icon-learn-time.png
src/assets/img/icon-learn-time.png
+0
-0
icon-stutus.png
src/assets/img/icon-stutus.png
+0
-0
customSelect.vue
src/components/customSelect.vue
+4
-3
policy.vue
src/components/policy.vue
+12
-4
previewFile.vue
src/components/previewFile.vue
+11
-5
common.ts
src/services/api/common.ts
+8
-0
recruitmentManagement.ts
src/services/api/recruitmentManagement.ts
+7
-0
streetOfficeSpecialTopic.ts
src/services/api/streetOfficeSpecialTopic.ts
+7
-0
index.vue
src/views/collegeStudents/index.vue
+2
-2
index.scss
src/views/counterpartAssistance/index.scss
+31
-0
index.vue
src/views/counterpartAssistance/index.vue
+36
-3
flexible.vue
src/views/flexibleEmploym/components/flexible.vue
+12
-4
index.vue
src/views/flexibleEmploym/index.vue
+68
-6
index.scss
src/views/home/index.scss
+12
-5
index.vue
src/views/home/index.vue
+1
-1
index.vue
src/views/policy/index.vue
+8
-6
info.vue
src/views/recruitmentManagement/components/info.vue
+4
-4
position.vue
src/views/recruitmentManagement/components/position.vue
+4
-4
previewPosition.vue
...iews/recruitmentManagement/components/previewPosition.vue
+10
-5
previewResume.vue
src/views/recruitmentManagement/components/previewResume.vue
+46
-17
resume.vue
src/views/recruitmentManagement/components/resume.vue
+1
-1
talent.vue
src/views/recruitmentManagement/components/talent.vue
+5
-5
userInfo.vue
src/views/recruitmentManagement/components/userInfo.vue
+7
-1
index.ts
src/views/recruitmentManagement/config/index.ts
+12
-10
editCompany.vue
src/views/recruitmentManagement/editCompany.vue
+0
-1
editPosition.vue
src/views/recruitmentManagement/editPosition.vue
+4
-6
editResume.vue
src/views/recruitmentManagement/editResume.vue
+60
-18
enterpriseRecruitment.vue
src/views/recruitmentManagement/enterpriseRecruitment.vue
+1
-1
index.vue
src/views/recruitmentManagement/index.vue
+84
-41
personalRecruitment.vue
src/views/recruitmentManagement/personalRecruitment.vue
+22
-12
positionDetail.vue
src/views/recruitmentManagement/positionDetail.vue
+37
-15
editResume.scss
src/views/recruitmentManagement/style/editResume.scss
+6
-1
enterprise.scss
src/views/recruitmentManagement/style/enterprise.scss
+1
-0
personal.scss
src/views/recruitmentManagement/style/personal.scss
+1
-0
positionDetail.scss
src/views/recruitmentManagement/style/positionDetail.scss
+34
-13
index.scss
src/views/streetOfficeSpecialTopic/index.scss
+6
-0
index.vue
src/views/streetOfficeSpecialTopic/index.vue
+68
-26
index.scss
src/views/trainingBase/index.scss
+31
-0
index.vue
src/views/trainingBase/index.vue
+36
-3
components.d.ts
types/components.d.ts
+3
-0
vite.config.ts
vite.config.ts
+0
-10
没有找到文件。
src/Layout/headers.vue
浏览文件 @
8cb40226
...
...
@@ -62,6 +62,9 @@
</div>
<
template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item
v-if=
"JSON.stringify(personalInfo) !== '
{}'" @click="toUserResume"
>个人信息
</el-dropdown-item
>
<el-dropdown-item
@
click=
"logout"
>
退出登录
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
...
...
@@ -105,6 +108,10 @@ const login = () => {
if
(
token
.
value
)
return
show
.
value
=
true
}
const
toUserResume
=
()
=>
{
router
.
push
(
'/recruitmentManagement/editResume'
)
}
const
logout
=
()
=>
{
userInfoStore
.
$reset
()
globalStore
.
$reset
()
...
...
src/assets/img/icon-learn-time.png
0 → 100644
浏览文件 @
8cb40226
482 Bytes
src/assets/img/icon-stutus.png
0 → 100644
浏览文件 @
8cb40226
582 Bytes
src/components/customSelect.vue
浏览文件 @
8cb40226
...
...
@@ -81,9 +81,10 @@ const mouseleave = () => {
const
handleChange
=
(
item
:
any
)
=>
{
dropdownRef
.
value
.
style
.
display
=
'none'
if
(
item
.
FENTRYID
===
props
.
modelValue
)
return
emits
(
'update:modelValue'
,
''
)
emits
(
'update:modelValue'
,
item
.
FENTRYID
)
emits
(
'change'
,
item
.
FENTRYID
)
if
(
item
.
FENTRYID
===
props
.
modelValue
)
{
emits
(
'update:modelValue'
,
''
)
}
else
emits
(
'update:modelValue'
,
item
.
FENTRYID
)
emits
(
'change'
)
}
</
script
>
...
...
src/components/policy.vue
浏览文件 @
8cb40226
...
...
@@ -12,10 +12,14 @@
index
+
1
}}
</span>
<el-link>
{{
item
.
FTITLE
}}
</el-link>
<img
v-show=
"index
<
3
"
src=
"@/assets/img/icon-new.png"
width=
"28"
height=
"15"
alt=
""
/>
<img
v-show=
"index
<
3
"
src=
"@/assets/img/icon-new.png"
width=
"28"
height=
"15"
/>
</div>
<div
v-show=
"isMore"
class=
"policy-footer"
@
click=
"seeMore"
>
查看更多
<el-icon><i-ep-DArrowRight
/></el-icon>
<div
v-if=
"isMore"
class=
"policy-footer"
>
<span
v-if=
"list.length >= params.total"
style=
"cursor: no-drop"
>
没有更多了
</span>
<div
v-else
style=
"display: flex; align-items: center"
@
click=
"seeMore"
>
查看更多
<el-icon
color=
"#177CFA"
><i-ep-DArrowRight
/></el-icon>
</div>
</div>
</div>
</div>
...
...
@@ -31,6 +35,10 @@ defineProps({
type
:
Array
,
default
:
()
=>
[]
}
as
any
,
params
:
{
type
:
Object
,
default
:
()
=>
{}
}
as
any
,
isMore
:
{
type
:
Boolean
,
default
:
false
...
...
@@ -119,7 +127,7 @@ const seeMore = () => {
justify-content
:
flex-end
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#
05a8ff
;
color
:
#
177cfa
;
cursor
:
pointer
;
}
}
...
...
src/components/previewFile.vue
浏览文件 @
8cb40226
<
template
>
<el-dialog
:modelValue=
"show"
:title=
"title"
@
close=
"handleClose"
>
<div
style=
"display: flex; justify-content: center; width: 100%
"
>
<el-dialog
:modelValue=
"show"
width=
"850"
:title=
"title"
@
close=
"handleClose"
>
<div
class=
"preview-content"
style=
"height: calc(100vh - 182px)
"
>
<vue-office-docx
v-if=
"suffix === 'docx'"
:src=
"url"
style=
"height:
100vh
"
style=
"height:
calc(100vh - 182px); width: 810px
"
@
rendered=
"rendered"
/>
<iframe
...
...
@@ -18,6 +18,7 @@
<vue-office-pdf
v-else-if=
"suffix === 'pdf'"
:src=
"url"
style=
"height: calc(100vh - 182px)"
@
rendered=
"renderedHandler"
@
error=
"errorHandler"
/>
...
...
@@ -76,7 +77,12 @@ const handleClose = () => {
<
style
lang=
"scss"
scoped
>
.child
{
width
:
100%
;
height
:
calc
(
100vh
-
70px
);
border
:
0
;
height
:
calc
(
100vh
-
182px
);
}
.preview-content
{
display
:
flex
;
justify-content
:
center
;
width
:
100%
;
height
:
calc
(
100vh
-
182px
);
}
</
style
>
src/services/api/common.ts
浏览文件 @
8cb40226
...
...
@@ -29,3 +29,11 @@ export const getInformation = (data: any) => {
data
)
}
// 查询海报
export
const
getPoster
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SelectPoster,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
src/services/api/recruitmentManagement.ts
浏览文件 @
8cb40226
...
...
@@ -118,3 +118,10 @@ export const deleteResume = (data: any) => {
data
)
}
export
const
getHotPosition
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeHotJobPage,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
src/services/api/streetOfficeSpecialTopic.ts
浏览文件 @
8cb40226
...
...
@@ -6,3 +6,10 @@ export const getStreet = () => {
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeStreet,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
)
}
// 街道办资料
export
const
getStreetPosition
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeStreetRecruitmentPage,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
src/views/collegeStudents/index.vue
浏览文件 @
8cb40226
...
...
@@ -42,7 +42,7 @@
</div>
<div
v-else-if=
"index === 5"
class=
"live-broadcast"
>
<div
v-for=
"col in 6"
:key=
"col"
class=
"live-broadcast-item"
>
<img
src=
"@/assets/img/
Frame377
.png"
height=
"214"
/>
<img
src=
"@/assets/img/
Banner
.png"
height=
"214"
/>
<p>
有时候,上天没有给你想要的,不是因为你不配,而是你值得更好的
有时候,上天没有给你想要的,不是因为你不配,而是你值得更好的
...
...
@@ -62,7 +62,7 @@
</div>
<div
v-else-if=
"index === 6"
class=
"flx-direction-column"
>
<div
v-for=
"col in 5"
:key=
"col"
class=
"entrepreneurship-item"
>
<img
src=
"@/assets/img/
Frame379
.png"
/>
<img
src=
"@/assets/img/
Banner
.png"
/>
<div
class=
"entrepreneurship-item-rg"
>
Lorem ipsum dolor sit amet, consectetur adipiscingelit. Aenean euismod bibendum
laoreet. Proin gravidadolor sit amet lacus accumsan et viverra justocommodo. Proin
...
...
src/views/counterpartAssistance/index.scss
0 → 100644
浏览文件 @
8cb40226
.skill-container
{
width
:
100%
;
.container
{
width
:
1316px
;
text-align
:
center
;
img
{
width
:
100%
;
margin-top
:
24px
;
border-radius
:
12px
;
}
.train-list
{
display
:
flex
;
margin
:
24px
0
;
border
:
1px
solid
#177cfa
;
border-radius
:
8px
;
.train-item
{
flex
:
0
0
20%
;
height
:
58px
;
line-height
:
58px
;
border-right
:
1px
solid
#177cfa
;
font-size
:
24px
;
font-weight
:
500
;
color
:
#177cfa
;
&
:nth-child
(
5
)
{
border-right
:
0
;
}
}
}
}
}
src/views/counterpartAssistance/index.vue
浏览文件 @
8cb40226
<
template
>
<div>
对口帮扶
</div>
<div
v-loading=
"loading"
class=
"skill-container flx-center"
>
<div
class=
"container"
>
<img
:src=
"baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE"
height=
"560"
/>
<div
style=
"margin: 24px 0 360px"
>
<contentBlock
:list=
"commonData?.GaQnData"
@
change=
"handleChange"
/>
</div>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
></
script
>
<
script
setup
lang=
"ts"
>
import
{
baseURL
}
from
'@/services'
import
{
getCommon
}
from
'@/services/api/common'
import
contentBlock
from
'@/components/contentBlock.vue'
<
style
scoped
></
style
>
const
router
=
useRouter
()
const
loading
=
ref
(
true
)
const
queryList
=
ref
({
pageIndex
:
1
,
pageSize
:
10
,
FormType
:
'N'
})
const
commonData
:
any
=
ref
()
const
handleChange
=
(
row
:
any
)
=>
{
router
.
push
({
path
:
'/commonDetail'
,
query
:
{
FID
:
row
.
FID
,
FormType
:
'N'
,
FTITLE
:
row
.
FTITLE
}
})
}
const
init
=
async
()
=>
{
const
res
:
any
=
await
getCommon
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
commonData
.
value
=
res
.
data
loading
.
value
=
false
}
}
init
()
</
script
>
<
style
lang=
"scss"
scoped
>
@import
'./index.scss'
;
</
style
>
src/views/flexibleEmploym/components/flexible.vue
浏览文件 @
8cb40226
...
...
@@ -16,8 +16,12 @@
<img
v-show=
"index
<
3
"
src=
"@/assets/img/icon-new.png"
width=
"28"
height=
"15"
alt=
""
/>
</div>
</div>
<div
v-show=
"isMore"
class=
"flexible-footer"
@
click=
"seeMore"
>
查看更多
<el-icon><i-ep-DArrowRight
/></el-icon>
<div
v-show=
"isMore"
class=
"flexible-footer"
>
<span
v-if=
"list.length >= params.total"
style=
"cursor: no-drop"
>
没有更多了
</span>
<div
v-else
style=
"display: flex; align-items: center"
@
click=
"seeMore"
>
查看更多
<el-icon
color=
"#177CFA"
><i-ep-DArrowRight
/></el-icon>
</div>
</div>
</div>
</div>
...
...
@@ -33,6 +37,10 @@ defineProps({
type
:
Array
,
default
:
()
=>
[]
}
as
any
,
params
:
{
type
:
Object
,
default
:
()
=>
{}
}
as
any
,
isMore
:
{
type
:
Boolean
,
default
:
false
...
...
@@ -56,8 +64,8 @@ const seeMore = () => {
flex
:
0
0
calc
((
100%
-
50px
)
/
3
);
margin
:
0
25px
50px
0
;
padding-top
:
16px
;
background
:
#ffffff
;
box-shadow
:
0px
4px
10px
0px
rgba
(
0
,
0
,
0
,
0
.05
);
//
background: #ffffff;
//
box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.05);
border-radius
:
8px
;
box-sizing
:
border-box
;
.flexible-top
{
...
...
src/views/flexibleEmploym/index.vue
浏览文件 @
8cb40226
<
template
>
<div
v-loading=
"loading"
class=
"flexible-container"
>
<div
class=
"container"
>
<img
:src=
"baseURL + '/' + flexibleData?.HbData?.[0].FPOSTERPICTURE"
height=
"560"
/>
<img
:src=
"baseURL + '/' + flexibleData?.HbData?.[0]
?
.FPOSTERPICTURE"
height=
"560"
/>
<div
class=
"flexible-list"
>
<flexible
v-for=
"(item, index) in flexibleNameList"
:key=
"index"
:title=
"item.name"
:list=
"flexibleData?.[item.field]"
:params=
"paramsData?.[item.field]"
is-more
@
change=
"flexibleChange"
@
see-more=
"seeMore(item.field)"
/>
</div>
<el-input
v-model=
"searchValue"
placeholder=
"搜索关键词"
@
change=
"search"
>
...
...
@@ -86,7 +88,11 @@
<
script
setup
lang=
"ts"
>
import
{
baseURL
}
from
'@/services'
import
{
getPositionList
,
getFlexibleEmploym
}
from
'@/services/api/flexibleEmploym'
import
{
getPositionList
,
getFlexibleEmploym
,
getFlexibleEmploymList
}
from
'@/services/api/flexibleEmploym'
import
{
useJobDetailStore
}
from
'@/stores/modules/jobDetails'
import
flexible
from
'@/views/flexibleEmploym/components/flexible.vue'
...
...
@@ -118,7 +124,18 @@ const searchValue = ref('')
const
loading
=
ref
(
true
)
const
flexibleLoading
=
ref
(
false
)
const
queryList
=
ref
({
pageIndex
:
1
,
pageSize
:
10
})
const
flexibleData
:
any
=
ref
()
const
flexibleData
:
any
=
ref
({
HbData
:
[],
GgData
:
[],
ZcData
:
[],
XwData
:
[]
})
const
paramsData
=
reactive
({
GgData
:
{
pageIndex
:
1
,
pageSize
:
0
,
total
:
0
},
ZcData
:
{
pageIndex
:
1
,
pageSize
:
0
,
total
:
0
},
XwData
:
{
pageIndex
:
1
,
pageSize
:
0
,
total
:
0
}
})
as
any
const
flexibleNameList
=
[
{
name
:
'公告'
,
field
:
'GgData'
},
...
...
@@ -130,6 +147,29 @@ const flexibleChange = (row: any) => {
router
.
push
({
path
:
'/commonDetail'
,
query
:
{
FID
:
row
.
FID
,
FormType
:
'D'
,
FTITLE
:
row
.
FTITLE
}
})
}
const
seeMore
=
(
Type
:
string
)
=>
{
switch
(
Type
)
{
case
'GgData'
:
if
(
paramsData
.
GgData
.
pageSize
<=
paramsData
.
GgData
.
total
)
{
paramsData
.
GgData
.
pageSize
+=
10
initFlexibleEmploymList
({
...
paramsData
.
GgData
,
Type
:
'A'
})
}
break
case
'ZcData'
:
if
(
paramsData
.
ZcData
.
pageSize
<=
paramsData
.
ZcData
.
total
)
{
paramsData
.
ZcData
.
pageSize
+=
10
initFlexibleEmploymList
({
...
paramsData
.
ZcData
,
Type
:
'B'
})
}
break
default
:
if
(
paramsData
.
XwData
.
pageSize
<=
paramsData
.
XwData
.
total
)
{
paramsData
.
XwData
.
pageSize
+=
10
initFlexibleEmploymList
({
...
paramsData
.
XwData
,
Type
:
'C'
})
}
break
}
}
const
handleChange
=
(
name
:
number
)
=>
{
listQuery
.
obj
.
postName
=
tabsList
[
name
].
label
initPosition
()
...
...
@@ -144,6 +184,26 @@ const search = () => {
initPosition
()
}
const
initFlexibleEmploymList
=
async
(
params
:
any
)
=>
{
const
res
:
any
=
await
getFlexibleEmploymList
(
params
)
if
(
res
.
code
===
200
)
{
switch
(
params
.
Type
)
{
case
'A'
:
flexibleData
.
value
.
GgData
=
res
.
data
||
[]
paramsData
.
GgData
.
total
=
res
.
total
break
case
'B'
:
flexibleData
.
value
.
ZcData
=
res
.
data
||
[]
paramsData
.
ZcData
.
total
=
res
.
total
break
default
:
flexibleData
.
value
.
XwData
=
res
.
data
||
[]
paramsData
.
XwData
.
total
=
res
.
total
break
}
console
.
log
(
paramsData
)
}
}
const
initPosition
=
async
()
=>
{
flexibleLoading
.
value
=
true
const
res
:
any
=
await
getPositionList
(
listQuery
)
...
...
@@ -156,10 +216,12 @@ const initPosition = async () => {
const
init
=
async
()
=>
{
const
res
:
any
=
await
getFlexibleEmploym
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
console
.
log
(
res
)
flexibleData
.
value
=
res
.
data
loading
.
value
=
false
flexibleData
.
value
.
HbData
=
res
.
data
?.
HbData
seeMore
(
'GgData'
)
seeMore
(
'ZcData'
)
seeMore
(
'XwData'
)
initPosition
()
loading
.
value
=
false
}
}
...
...
src/views/home/index.scss
浏览文件 @
8cb40226
...
...
@@ -68,10 +68,12 @@
.employment-training
{
width
:
645px
;
height
:
400px
;
text-align
:
center
;
.employment
{
margin-top
:
24px
;
height
:
326px
;
box-sizing
:
border-box
;
.employment-item
{
...
...
@@ -85,6 +87,9 @@
padding
:
0
26px
;
margin-bottom
:
15px
;
cursor
:
pointer
;
&
:last-child
{
margin-bottom
:
0
;
}
}
}
.train
{
...
...
@@ -110,21 +115,23 @@
.scene
{
display
:
flex
;
flex-wrap
:
wrap
;
margin
:
-5px
;
//
flex-wrap: wrap;
//
margin: -5px;
margin-top
:
24px
;
.scene-item
{
cursor
:
pointer
;
flex
:
0
0
calc
(
16
.666%
-
10px
);
/* 让每个盒子占据六分之一的宽度,并且减去间距 */
margin
:
5px
;
/* 设置为盒子之间的间隔 */
width
:
206px
;
height
:
100px
;
line-height
:
100px
;
box-sizing
:
border-box
;
/* 让盒子的边框和填充算入盒子的总宽度 */
padding
:
13px
63px
;
background
:
#ffffff
;
border-radius
:
12px
;
border
:
1px
solid
rgba
(
23
,
124
,
250
,
1
);
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
16px
;
div
{
height
:
50px
;
...
...
src/views/home/index.vue
浏览文件 @
8cb40226
...
...
@@ -77,7 +77,7 @@
专业知识培训
</div>
</div>
<div
style=
"display: flex; margin: 18px 0"
>
<div
style=
"display: flex; margin: 18px 0
0
"
>
<div
style=
"position: relative; height: 100px; cursor: pointer"
@
click=
"toTtrain('D')"
...
...
src/views/policy/index.vue
浏览文件 @
8cb40226
...
...
@@ -20,6 +20,7 @@
<policy
title=
"南山就业政策公告"
:list=
"policyData.noticeData"
:params=
"policyData.noticeParams"
is-more
@
change=
"handleChange"
@
see-more=
"seeMore(0)"
...
...
@@ -27,6 +28,7 @@
<policy
title=
"南山就业活动"
:list=
"policyData.activityData"
:params=
"policyData.activityParams"
is-more
@
change=
"handleChange"
@
see-more=
"seeMore(1)"
...
...
@@ -49,9 +51,9 @@ const queryList = ref({ pageIndex: 1, pageSize: 10 })
const
policyData
:
any
=
reactive
({
posterUrl
:
''
,
noticeData
:
[]
as
any
,
noticeParams
:
{
pageIndex
:
1
,
pageSize
:
1
0
,
total
:
10
},
noticeParams
:
{
pageIndex
:
1
,
pageSize
:
0
,
total
:
10
},
activityData
:
[]
as
any
,
activityParams
:
{
pageIndex
:
1
,
pageSize
:
1
0
,
total
:
10
}
activityParams
:
{
pageIndex
:
1
,
pageSize
:
0
,
total
:
10
}
})
let
timeout
:
ReturnType
<
typeof
setTimeout
>
...
...
@@ -81,7 +83,7 @@ const search = (item: Record<string, any>) => {
const
seeMore
=
async
(
Type
:
number
)
=>
{
if
(
Type
&&
policyData
.
activityParams
.
pageSize
<=
policyData
.
activityParams
.
total
)
{
policyData
.
activityParams
.
pageSize
=
policyData
.
activityParams
.
pageSize
+
10
policyData
.
activityParams
.
pageSize
+=
10
const
res
:
any
=
await
getPolicyList
({
...
policyData
.
activityParams
,
...{
Type
}
})
if
(
res
.
code
===
200
)
{
policyData
.
activityData
=
res
.
data
...
...
@@ -89,7 +91,7 @@ const seeMore = async (Type: number) => {
}
}
if
(
!
Type
&&
policyData
.
noticeParams
.
pageSize
<=
policyData
.
noticeParams
.
total
)
{
policyData
.
noticeParams
.
pageSize
=
policyData
.
noticeParams
.
pageSize
+
10
policyData
.
noticeParams
.
pageSize
+=
10
const
res
:
any
=
await
getPolicyList
({
...
policyData
.
noticeParams
,
...{
Type
}
})
if
(
res
.
code
===
200
)
{
policyData
.
noticeData
=
res
.
data
...
...
@@ -106,8 +108,8 @@ const init = async () => {
const
res
:
any
=
await
getPolicy
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
policyData
.
posterUrl
=
res
.
data
?.
HbData
?.[
0
].
FPOSTERPICTURE
policyData
.
noticeData
=
res
.
data
?.
GgData
policyData
.
activityData
=
res
.
data
?.
HdData
seeMore
(
0
)
seeMore
(
1
)
loading
.
value
=
false
}
}
...
...
src/views/recruitmentManagement/components/info.vue
浏览文件 @
8cb40226
...
...
@@ -6,14 +6,14 @@
</div>
<div
class=
"personal-info-ct"
>
<span>
年龄:
{{
personalInfo
?.
AGE
}}
</span>
<span>
工作年限:
2
年
</span>
<span>
学历:
{{
personalInfo
?.
F
_LQKJ_EDUCATIONS
}}
</span>
<span>
工作年限:
{{
personalInfo
?.
FGOWORKCOUNT
}}
年
</span>
<span>
学历:
{{
personalInfo
?.
F
EDUCATIONBACKGROUND
}}
</span>
</div>
<el-divider
/>
<div
class=
"personal-info-bt"
>
<div
class=
"personal-info-bt-item"
>
<div
class=
"personal-info-label"
>
求职状态
</div>
<span>
{{
personalInfo
?.
F
_LQKJ_
DEPARTREMAIN
}}
</span>
<span>
{{
personalInfo
?.
FDEPARTREMAIN
}}
</span>
</div>
<div
class=
"personal-info-bt-item"
>
<div
class=
"personal-info-label"
>
已投递
</div>
...
...
@@ -21,7 +21,7 @@
</div>
<div
class=
"personal-info-bt-item"
>
<div
class=
"personal-info-label"
>
已面试
</div>
<span>
{{
personalInfo
?.
Interiview
Count
}}
次
</span>
<span>
{{
personalInfo
?.
Interiview
}}
次
</span>
</div>
</div>
<div
style=
"width: 100%; display: flex; justify-content: center"
>
...
...
src/views/recruitmentManagement/components/position.vue
浏览文件 @
8cb40226
...
...
@@ -16,7 +16,7 @@
</div>
<div
v-if=
"positionData.length"
class=
"position-list"
>
<div
v-for=
"item in positionData"
:key=
"item.FID"
class=
"position-item flx-justify-between"
>
<div>
<div
style=
"cursor: pointer"
@
click=
"preview(item.FID)"
>
<div
class=
"position-title"
>
{{
item
.
JobName
}}
</div>
<div>
<span
class=
"position-label"
>
{{
item
.
FEDUCATIONALBACKGROUND
}}
</span>
...
...
@@ -27,8 +27,8 @@
<el-divider
direction=
"vertical"
/>
<span
class=
"position-label"
>
{{
item
.
FMINIMUMWAGE
}}
-
{{
item
.
FMAXIMUMSALARY
}}
.
{{
item
.
FMONTHLYSALARY
.
replace
(
'月'
,
'
'
)
}}
薪
</span
item
.
FMONTHLYSALARY
?.
replace
(
'月'
,
'薪
'
)
}}
</span
>
<el-divider
direction=
"vertical"
/>
<span
class=
"position-label"
>
{{
'全职'
}}
</span>
...
...
@@ -98,7 +98,7 @@ const updatePosition = (FID: string) => {
const
preview
=
(
FID
:
string
)
=>
{
initCompanyPositionDetail
(
FID
)
setTimeout
(()
=>
{
console
.
log
(
positionDetailData
.
value
)
//
console.log(positionDetailData.value)
previewShow
.
value
=
true
},
100
)
}
...
...
src/views/recruitmentManagement/components/previewPosition.vue
浏览文件 @
8cb40226
...
...
@@ -10,7 +10,11 @@
<el-form-item
label=
"公司:"
>
<span>
{{
positionItem
?.
FirmName
}}
</span>
</el-form-item>
<el-form-item
label=
"招聘类型:"
><span>
校招
</span></el-form-item>
<el-form-item
label=
"招聘类型:"
><span>
{{
positionItem
?.
FRECRUITMENTTYPE
===
'A'
?
'社招'
:
'校招'
}}
</span></el-form-item
>
<el-form-item
label=
"职位名称:"
><span>
{{
positionItem
?.
JobName
}}
</span></el-form-item
>
...
...
@@ -27,7 +31,7 @@
</div>
<div
style=
"margin-left: 42px"
>
<div
class=
"flx-align-center"
>
<el-form-item
label=
"经验和学历
:"
<el-form-item
label=
"经验和学历:"
><span>
{{
positionItem
?.
FEXPERIENCE
}}
</span
><span
style=
"
...
...
@@ -45,9 +49,9 @@
<div
class=
"flx-align-center"
>
<el-form-item
label=
"薪资范围:"
><span>
{{
positionItem
?.
FMINIMUMWAGE
}}
-
{{
positionItem
?.
FM
AXIMUMSALARY
}}
13个月
</span
{{
positionItem
?.
FMINIMUMWAGE
}}
-
{{
positionItem
?.
FMAXIMUMSALARY
}}
{{
positionItem
?.
FM
ONTHLYSALARY
?.
replace
(
'月'
,
'薪'
)
}}
</span
></el-form-item
>
</div>
...
...
@@ -89,6 +93,7 @@ const handleClose = () => {
<
style
lang=
"scss"
scoped
>
.el-form
{
padding-left
:
60px
;
padding-right
:
20px
;
}
.position-info
{
display
:
flex
;
...
...
src/views/recruitmentManagement/components/previewResume.vue
浏览文件 @
8cb40226
...
...
@@ -5,25 +5,29 @@
<img
:src=
"baseURL + '/' + data?.FPhotosUrl"
/>
<div>
<div
class=
"resumen-content-header__tp"
>
<span
class=
"name"
>
{{
data
?.
Jbdata
.
FName
}}
</span>
<span>
{{
data
?.
Jbdata
.
Age
+
'岁
'
}}
</span>
<el-divider
direction=
"vertical"
/>
<span
class=
"name"
>
{{
data
?.
Jbdata
.
FName
||
'姓名'
}}
</span>
<span>
{{
data
?.
Jbdata
.
Age
?
data
?.
Jbdata
.
Age
+
'岁'
:
'
'
}}
</span>
<el-divider
v-if=
"data?.Jbdata.Age"
direction=
"vertical"
/>
<span>
{{
data
?.
Jbdata
.
FSex
===
'0'
?
'男'
:
'女'
}}
</span>
<el-divider
direction=
"vertical"
/>
<el-divider
v-if=
"data?.Jbdata.FSex"
direction=
"vertical"
/>
<span>
{{
data
?.
Jbdata
.
FGoWorkCount
>
10
?
'10年以上经验'
:
data
?.
Jbdata
.
FGoWorkCount
+
'年'
data
?.
Jbdata
.
FGoWorkCount
?
data
?.
Jbdata
.
FGoWorkCount
>
10
?
'10年以上经验'
:
data
?.
Jbdata
.
FGoWorkCount
+
'年'
:
''
}}
</span>
<el-divider
direction=
"vertical"
/>
<el-divider
v-if=
"data?.Jbdata.FGoWorkCount"
direction=
"vertical"
/>
<span>
{{
data
?.
Jbdata
.
FEducationBackground
}}
</span>
<el-divider
direction=
"vertical"
/>
<el-divider
v-if=
"data?.Jbdata.FEducationBackground"
direction=
"vertical"
/>
<span>
{{
selectDepartRemain
(
data
?.
Jbdata
.
FDepartRemain
)
}}
</span>
</div>
<pre>
{{
data
?.
Jbdata
.
FPersonalStrengths
}}
</pre>
</div>
</div>
<!-- 期望职位 -->
<div
class=
"resumen-content-footer"
>
<div
style=
"display: flex; margin-bottom: 56px"
>
<!-- 期望职位 -->
<div
v-if=
"data?.Qzdata?.length"
style=
"display: flex; margin-bottom: 56px"
>
<div
class=
"resume-label"
>
期望职位
</div>
<div
class=
"flx-align-center"
>
<span>
{{
data
?.
Qzdata
[
0
].
FDesiredPositionName
}}
</span>
...
...
@@ -40,7 +44,7 @@
</div>
</div>
<!-- 工作经历 -->
<div
style=
"display: flex; margin-bottom: 32px"
>
<div
v-if=
"data?.Gzdata.length"
style=
"display: flex; margin-bottom: 32px"
>
<div
class=
"resume-label"
>
工作经历
</div>
<div
class=
"flx-direction-column"
style=
"flex: 1"
>
<div
v-for=
"item in data?.Gzdata"
:key=
"item.FEntryID"
>
...
...
@@ -72,7 +76,7 @@
</div>
</div>
<!-- 项目经历 -->
<div
style=
"display: flex; margin-bottom: 56px"
>
<div
v-if=
"data?.Xmdata.length"
style=
"display: flex; margin-bottom: 56px"
>
<div
class=
"resume-label"
>
项目经历
</div>
<div
class=
"flx-direction-column"
style=
"flex: 1"
>
<div
v-for=
"item in data?.Xmdata"
:key=
"item.FEntryID"
>
...
...
@@ -83,8 +87,8 @@
<span>
{{
item
.
FProjectRole
}}
</span>
</div>
<span
style=
"color: #666666"
>
{{
dayjs
(
item
.
FStartDate
).
format
(
'YYYY.MM'
)
}}
-
{{
dayjs
(
item
.
FEndDate
).
format
(
'YYYY.MM'
)
>
{{
dayjs
(
item
.
F
Project
StartDate
).
format
(
'YYYY.MM'
)
}}
-
{{
dayjs
(
item
.
F
Project
EndDate
).
format
(
'YYYY.MM'
)
}}
</span
>
</div>
...
...
@@ -93,7 +97,7 @@
</div>
</div>
<!-- 教育经历 -->
<div
style=
"display: flex; margin-bottom: 56px"
>
<div
v-if=
"data?.Jydata.length"
style=
"display: flex; margin-bottom: 56px"
>
<div
class=
"resume-label"
>
教育经历
</div>
<div
class=
"flx-direction-column"
style=
"flex: 1"
>
<div
v-for=
"item in data?.Jydata"
:key=
"item.FEntryID"
>
...
...
@@ -121,7 +125,7 @@
</div>
</div>
<div
style=
"display: flex; margin-bottom: 56px"
>
<div
v-if=
"data?.Fjdata.length"
style=
"display: flex; margin-bottom: 56px"
>
<div
class=
"resume-label"
>
资格证书
</div>
<div
class=
"flx-direction-column"
style=
"flex: 1"
>
<div
...
...
@@ -129,12 +133,13 @@
:key=
"item.FEntryID"
class=
"flx-align-center"
style=
"height: 44px; color: #177cfa; cursor: pointer"
@
click=
"openFile(item)"
>
{{
item
.
FATTACHMENTNAME
}}
</div>
</div>
</div>
<div
style=
"display: flex; margin-bottom: 56px"
>
<div
v-if=
"data?.Jldata.length"
style=
"display: flex; margin-bottom: 56px"
>
<div
class=
"resume-label"
>
简历附件
</div>
<div
class=
"flx-direction-column"
style=
"flex: 1"
>
<div
...
...
@@ -142,6 +147,7 @@
:key=
"item.FEntryID"
class=
"flx-align-center"
style=
"height: 44px; color: #177cfa; cursor: pointer"
@
click=
"openFile(item)"
>
{{
item
.
FATTACHMENTNAME
}}
</div>
...
...
@@ -150,12 +156,20 @@
</div>
</div>
</el-dialog>
<previewFile
v-model=
"state.previewFileShow"
:suffix=
"state.fileSuffix"
:url=
"state.fileUrl"
:title=
"state.previewTitle"
/>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
jobStatus
}
from
'../config'
import
{
baseURL
}
from
'@/services'
import
dayjs
from
'dayjs'
import
previewFile
from
'@/components/previewFile.vue'
defineProps
({
show
:
{
...
...
@@ -169,10 +183,25 @@ defineProps({
})
const
emits
=
defineEmits
([
'update:show'
])
const
state
=
reactive
({
previewFileShow
:
false
,
previewTitle
:
''
,
fileSuffix
:
''
,
fileUrl
:
''
})
// 设置求职状态
const
selectDepartRemain
=
(
departRemain
:
string
)
=>
{
let
row
=
jobStatus
.
find
((
item
:
any
)
=>
item
.
value
===
departRemain
)
return
row
?
row
.
label
:
jobStatus
[
3
]
return
row
?
row
.
label
:
jobStatus
[
3
].
label
}
// 预览简历
const
openFile
=
(
row
:
any
)
=>
{
state
.
fileSuffix
=
row
.
FATTACHMENTNAME
.
split
(
'.'
)[
row
.
FATTACHMENTNAME
.
split
(
'.'
).
length
-
1
]
state
.
fileUrl
=
baseURL
+
'/'
+
row
.
FFILEIDURL
state
.
previewTitle
=
row
.
FATTACHMENTNAME
.
split
(
'.'
)[
0
]
state
.
previewFileShow
=
true
}
const
handleClose
=
()
=>
{
...
...
src/views/recruitmentManagement/components/resume.vue
浏览文件 @
8cb40226
...
...
@@ -105,7 +105,7 @@ const list = [
{
name
:
'学历要求'
},
{
name
:
'院校要求'
},
{
name
:
'经验要求'
},
{
name
:
'
年龄
要求'
}
{
name
:
'
其他
要求'
}
]
const
searchChange
=
(
searchValue
:
string
)
=>
{}
...
...
src/views/recruitmentManagement/components/talent.vue
浏览文件 @
8cb40226
...
...
@@ -18,11 +18,11 @@
<span>
20岁
</span>
</div>
<div
class=
"flx-align-center"
>
<
el-icon><i-ep-OfficeBuilding
/></el-icon
>
<
img
src=
"@/assets/img/icon-learn-time.png"
/
>
<span
style=
"margin-left: 3px"
>
在职求职中
</span>
</div>
<div
class=
"flx-align-center"
>
<
el-icon><i-ep-OfficeBuilding
/></el-icon
>
<
img
src=
"@/assets/img/icon-stutus.png"
/
>
<span
style=
"margin-left: 3px"
>
2021-09至2024-07
</span>
</div>
</div>
...
...
@@ -39,15 +39,15 @@
<el-dropdown-item>
已录用
</el-dropdown-item>
<el-dropdown-item>
已入职
</el-dropdown-item>
<el-dropdown-item>
人才库
</el-dropdown-item>
<el-dropdown-item>
黑名单
</el-dropdown-item>
<el-dropdown-item>
人才储备
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</div>
<div
class=
"recommend flx-align-center"
>
<
!-- <
div class="recommend flx-align-center">
推荐指数
<el-rate v-model="rateValue" style="margin-left: 8px" />
</div>
</div>
-->
</div>
</div>
<div
class=
"tab-item-bt flx-justify-between"
>
...
...
src/views/recruitmentManagement/components/userInfo.vue
浏览文件 @
8cb40226
...
...
@@ -165,7 +165,13 @@ const rules = {
FMyIdentity
:
[{
required
:
true
,
message
:
'我的牛人身份不能为空'
,
trigger
:
'blur'
}],
FUserPhone
:
[
{
required
:
true
,
message
:
'手机号不能为空'
,
trigger
:
'blur'
},
{
pattern
:
/^1
[
3456789
]\d{9}
$/
,
message
:
'请输入有效的手机号'
,
trigger
:
'blur'
}
{
message
:
'请输入有效的手机号'
,
trigger
:
'blur'
,
pattern
:
(
rule
:
any
,
value
:
any
)
=>
{
return
!
value
||
/^1
\d{2}\*{4}\d{4}
$/
.
test
(
value
)
||
/^1
[
3456789
]\d{9}
$/
.
test
(
value
)
}
}
]
}
...
...
src/views/recruitmentManagement/config/index.ts
浏览文件 @
8cb40226
...
...
@@ -31,16 +31,18 @@ export const filterList = ref([
}
])
export
const
recruitStatus
=
[
{
status
:
'简历未查看'
,
value
:
companyInfo
.
value
?.
NotViewed
+
'份'
},
{
status
:
'简历待定'
,
value
:
companyInfo
.
value
?.
Pending
+
'份'
},
{
status
:
'安排面试'
,
value
:
companyInfo
.
value
?.
Arrange
+
'份'
},
{
status
:
'已面试'
,
value
:
companyInfo
.
value
?.
HaveInterview
+
'份'
},
{
status
:
'已录用'
,
value
:
companyInfo
.
value
?.
HaveHired
+
'份'
},
{
status
:
'已入职'
,
value
:
companyInfo
.
value
?.
AlreadyBoard
+
'份'
},
{
status
:
'人才库'
,
value
:
companyInfo
.
value
?.
TalentPool
+
'份'
},
{
status
:
'黑名单'
,
value
:
companyInfo
.
value
?.
Blacklist
+
'份'
}
]
export
const
recruitStatus
=
computed
(()
=>
{
return
[
{
status
:
'简历未查看'
,
value
:
companyInfo
.
value
?.
NotViewed
+
'份'
},
{
status
:
'简历待定'
,
value
:
companyInfo
.
value
?.
Pending
+
'份'
},
{
status
:
'安排面试'
,
value
:
companyInfo
.
value
?.
Arrange
+
'份'
},
{
status
:
'已面试'
,
value
:
companyInfo
.
value
?.
HaveInterview
+
'份'
},
{
status
:
'已录用'
,
value
:
companyInfo
.
value
?.
HaveHired
+
'份'
},
{
status
:
'已入职'
,
value
:
companyInfo
.
value
?.
AlreadyBoard
+
'份'
},
{
status
:
'人才库'
,
value
:
companyInfo
.
value
?.
TalentPool
+
'份'
},
{
status
:
'人才储备'
,
value
:
companyInfo
.
value
?.
Blacklist
+
'份'
}
]
})
export
const
positionList
=
[
{
name
:
'全部职位'
,
type
:
''
},
...
...
src/views/recruitmentManagement/editCompany.vue
浏览文件 @
8cb40226
...
...
@@ -345,7 +345,6 @@ const handleChange = async (type: string, FNUMBER: string) => {
state
.
form
.
FIndustry
=
FNUMBER
break
case
'Member'
:
if
(
!
state
.
isAdd
)
return
state
.
form
.
FScaleS
=
FNUMBER
break
case
'Financing'
:
...
...
src/views/recruitmentManagement/editPosition.vue
浏览文件 @
8cb40226
...
...
@@ -230,7 +230,6 @@ const state = reactive({
FJobKeywords
:
[],
//职位关键词
FRecruitsNumber
:
null
,
//招聘人数
FMonthlySalary
:
''
,
//月薪数
FPublisher
:
''
,
//发布人(无需填写)
addr
:
[]
}
as
any
,
rules
:
{
...
...
@@ -301,7 +300,7 @@ const showInput = () => {
}
const
handleInputConfirm
=
()
=>
{
if
(
state
.
inputValue
)
{
if
(
state
.
inputValue
.
trim
()
)
{
state
.
form
.
FJobKeywords
.
push
(
state
.
inputValue
)
}
state
.
inputVisible
=
false
...
...
@@ -327,7 +326,8 @@ const handleResult = () => {
'FWorkPlace'
,
'FJobKeywords'
,
'FRecruitsNumber'
,
'FMonthlySalary'
'FMonthlySalary'
,
'FPublisher'
],
Model
:
{
FID
:
0
,
...
...
@@ -347,8 +347,7 @@ const handleResult = () => {
FWorkPlace
:
''
,
FJobKeywords
:
''
,
FRecruitsNumber
:
0
,
FMonthlySalary
:
{
FNumber
:
''
},
FPublisher
:
''
FMonthlySalary
:
{
FNumber
:
''
}
}
}
}
...
...
@@ -431,7 +430,6 @@ const initCompanyPositionDetail = async (FID: string) => {
FJobKeywords
:
FJOBKEYWORDS
,
//职位关键词
FRecruitsNumber
:
FRECRUITSNUMBER
,
//招聘人数
FMonthlySalary
:
FMONTHLYSALARY
,
//月薪数
FPublisher
:
''
,
//发布人(无需填写)
addr
:
addr
.
slice
(
0
,
3
)
}
salaryChange
(
FMINIMUMWAGE
)
...
...
src/views/recruitmentManagement/editResume.vue
浏览文件 @
8cb40226
...
...
@@ -30,7 +30,7 @@
@
mouseleave=
"mouseleave($event, 'user', 0)"
>
<div
class=
"flx-justify-between"
>
<div
class=
"user-name"
>
{{
state
.
resumeData
?.
Jbdata
?.
FName
}}
</div>
<div
class=
"user-name"
>
{{
state
.
resumeData
?.
Jbdata
?.
FName
||
'姓名'
}}
</div>
<div
id=
"edit-user0"
class=
"flx-align-center"
...
...
@@ -45,9 +45,11 @@
<el-col
class=
"user-label flx-align-center"
:span=
"8"
>
<img
src=
"@/assets/img/icon-resume8.png"
width=
"16"
/>
<span>
{{
state
.
resumeData
?.
Jbdata
?.
FGoWorkCount
<
10
?
`工作${state.resumeData?.Jbdata?.FGoWorkCount
}
年`
:
'10年以上经验'
state
.
resumeData
?.
Jbdata
?.
FGoWorkCount
?
state
.
resumeData
?.
Jbdata
?.
FGoWorkCount
<
10
?
`工作${state.resumeData?.Jbdata?.FGoWorkCount
}
年`
:
'10年以上经验'
:
''
}}
<
/span
>
<
/el-col
>
<
el
-
col
class
=
"user-label flx-align-center"
:
span
=
"8"
>
...
...
@@ -60,15 +62,17 @@
<
/el-col
>
<
el
-
col
class
=
"user-label flx-align-center"
:
span
=
"8"
>
<
img
src
=
"@/assets/img/icon-resume2.png"
width
=
"16"
/>
<
span
>
{{
state
.
resumeData
?.
Jbdata
?.
F
UserPhone
}}
<
/span
>
<
span
>
{{
masked
UserPhone
}}
<
/span
>
<
/el-col
>
<
el
-
col
class
=
"user-label flx-align-center"
:
span
=
"8"
>
<
img
src
=
"@/assets/img/icon-resume3.png"
width
=
"16"
/>
<
span
>
{{
state
.
resumeData
?.
Jbdata
?.
F
Wechat
}}
<
/span
>
<
span
>
{{
masked
Wechat
}}
<
/span
>
<
/el-col
>
<
el
-
col
class
=
"user-label flx-align-center"
:
span
=
"8"
>
<
img
src
=
"@/assets/img/icon-resume4.png"
width
=
"16"
/>
<
span
>
{{
state
.
resumeData
?.
Jbdata
?.
FEmail
}}
<
/span
>
<
span
>
{{
state
.
resumeData
?.
Jbdata
?.
FEmail
?.
replace
(
/
(\d
{2
}
)\d
+
(\d
{3
}
@
)
/
,
'$1****$2'
)
}}
<
/span
>
<
/el-col
>
<
/el-row
>
<
/div
>
...
...
@@ -97,7 +101,11 @@
@
mouseover
=
"mouseover($event, 'advantage', 0)"
@
mouseleave
=
"mouseleave($event, 'advantage', 0)"
>
<
pre
style
=
"flex: 1"
>
{{
state
.
resumeData
?.
Jbdata
?.
FPersonalStrengths
}}
<
/pre
>
<
pre
style
=
"flex: 1"
>
{{
state
.
resumeData
?.
Jbdata
?.
FPersonalStrengths
.
trim
()
?
state
.
resumeData
?.
Jbdata
?.
FPersonalStrengths
:
'填写您的个人优势'
}}
<
/pre
>
<
div
style
=
"width: 60px"
>
<
div
id
=
"edit-advantage0"
...
...
@@ -213,11 +221,7 @@
<
span
>
{{
item
.
FPosition
}}
<
/span
>
<
/div
>
<
div
>
<
span
:
id
=
"'work-date' + index"
style
=
"color: #666666"
>
{{
dayjs
(
item
.
FStartDate
).
format
(
'YYYY.MM'
)
}}
-
{{
dayjs
(
item
.
FEndDate
).
format
(
'YYYY.MM'
)
}}
<
/spa
n
>
<
span
:
id
=
"'work-date' + index"
style
=
"color: #666666"
>
{{
experience
}}
<
/span
>
<
div
:
id
=
"'edit-work' + index"
class
=
"flx-align-center"
...
...
@@ -339,7 +343,9 @@
>
<
div
class
=
"flx-justify-between"
style
=
"align-items: start"
>
<
div
style
=
"display: flex"
>
<
img
src
=
"@/assets/img/icon-resume9.png"
width
=
"60"
height
=
"60"
/>
<
div
class
=
"round-img flx-center"
>
<
img
src
=
"@/assets/img/icon-resume5.png"
width
=
"34"
height
=
"34"
/>
<
/div
>
<
div
class
=
"education"
>
<
div
>
<
span
style
=
"font-size: 18px; margin-right: 16px"
>
{{
...
...
@@ -576,9 +582,39 @@ const educationRef = ref()
const
uploadImgRef
=
ref
()
const
loading
=
ref
(
true
)
const
experience
=
computed
(()
=>
{
const
{
FGoWorkCount
}
=
state
.
resumeData
?.
Jbdata
||
{
}
if
(
FGoWorkCount
)
{
if
(
FGoWorkCount
<
10
)
{
return
`工作${FGoWorkCount
}
年`
}
else
{
return
'10年以上经验'
}
}
else
{
return
''
}
}
)
const
maskedWechat
=
computed
(()
=>
{
const
{
FWechat
}
=
state
.
resumeData
?.
Jbdata
||
{
}
if
(
FWechat
&&
FWechat
.
trim
())
{
return
FWechat
.
substring
(
0
,
3
)
+
'****'
}
else
{
return
''
}
}
)
const
maskedUserPhone
=
computed
(()
=>
{
const
{
FUserPhone
}
=
state
.
resumeData
?.
Jbdata
||
{
}
if
(
FUserPhone
&&
FUserPhone
.
trim
())
{
return
FUserPhone
.
substring
(
0
,
3
)
+
'****'
+
FUserPhone
.
substring
(
7
)
}
else
{
return
''
}
}
)
const
selectDepartRemain
=
(
departRemain
:
string
)
=>
{
let
row
=
jobStatus
.
find
((
item
:
any
)
=>
item
.
value
===
departRemain
)
return
row
?
row
.
label
:
jobStatus
[
3
]
return
row
?
row
.
label
:
jobStatus
[
3
]
.
label
}
const
resumeChange
=
(
row
:
any
)
=>
{
...
...
@@ -631,13 +667,20 @@ const openFile = (row: any) => {
// 修改个人信息
const
userInfoClick
=
()
=>
{
userInfoRef
.
value
.
form
.
Model
=
{
...
userInfoRef
.
value
.
form
.
Model
,
...
state
.
resumeData
?.
Jbdata
}
const
{
FWechat
,
FUserPhone
,
FEmail
}
=
state
.
resumeData
.
Jbdata
userInfoRef
.
value
.
form
.
Model
=
{
...
userInfoRef
.
value
.
form
.
Model
,
...
state
.
resumeData
?.
Jbdata
,
FEmail
:
FEmail
.
replace
(
/
(\d
{2
}
)\d
+
(\d
{3
}
@
)
/
,
'$1****$2'
),
FUserPhone
:
FUserPhone
.
substring
(
0
,
3
)
+
'****'
+
FUserPhone
.
substring
(
7
),
FWechat
:
FWechat
.
substring
(
0
,
3
)
+
'****'
}
state
.
userInfoShow
=
true
}
// 设置点击显示唯一
const
setShow
=
(
data
:
any
[],
showProp
:
string
,
showValue
:
boolean
)
=>
{
data
.
forEach
((
item
:
any
)
=>
(
item
[
showProp
]
=
showValue
))
data
?
.
forEach
((
item
:
any
)
=>
(
item
[
showProp
]
=
showValue
))
}
const
addvantageClick
=
()
=>
{
...
...
@@ -735,7 +778,6 @@ const init = async () => {
loading
.
value
=
true
const
res
:
any
=
await
getResume
()
if
(
res
.
code
===
200
)
{
// console.log(res.data)
state
.
resumeData
=
res
.
data
loading
.
value
=
false
}
...
...
src/views/recruitmentManagement/enterpriseRecruitment.vue
浏览文件 @
8cb40226
...
...
@@ -29,7 +29,7 @@
/>
<div
class=
"flx-direction-column"
>
<span
class=
"company-title"
>
{{
userInfoStore
.
companyInfo
?.
FNAME
}}
</span>
<div>
<div
style=
"display: flex; flex-wrap: wrap"
>
<span
class=
"info-label"
>
{{
userInfoStore
.
companyInfo
?.
FINDUSTRY
}}
</span>
<span
class=
"info-label"
>
{{
userInfoStore
.
companyInfo
?.
FFINANCING
}}
</span>
<span
class=
"info-label"
>
{{
userInfoStore
.
companyInfo
?.
FSCALE
}}
</span>
...
...
src/views/recruitmentManagement/index.vue
浏览文件 @
8cb40226
<
template
>
<div
class=
"main-container"
>
<!--
<search
style=
"margin: 25px 0"
@
search-change=
"searchChange"
/>
-->
<el-carousel
height=
"560px"
style=
"width: 100%"
>
<el-carousel-item
v-for=
"item in posterList"
:key=
"item"
>
<img
:src=
"baseURL + '/' + item.FPOSTERPICTURE"
style=
"width: 100%; height: 100%"
/>
</el-carousel-item>
</el-carousel>
<autocomplete
style=
"margin: 25px 0"
:list=
"querySearch"
placeholder=
"搜索
关键字
"
placeholder=
"搜索
职位、公司
"
@
search-change=
"searchChange"
@
query-search-async=
"querySearchAsync"
/>
...
...
@@ -40,7 +44,9 @@
<router-link
:to=
"{
path: '/recruitmentManagement/personal',
query: { searchValue: col.FDATAVALUE }
query: {
searchValue: col.FDATAVALUE.replace(/[\((][^\))]+[\))]/g, '')
}
}"
style=
"text-decoration: none"
>
...
...
@@ -64,7 +70,7 @@
/>
</div>
</div>
<!-- 热招职位 -->
<div
class=
"hot-position"
>
<div
class=
"n-title"
>
热招职位
</div>
<el-tabs
v-model=
"activeName"
class=
"hot-position-tabs"
stretch
@
tab-click=
"handleClick"
>
...
...
@@ -75,38 +81,47 @@
:name=
"item.name"
class=
"hot-position-tab-pane"
>
<div
class=
"position-list"
>
<div
v-for=
"col in 6"
:key=
"col"
class=
"position-item"
>
<div
class=
"flx-justify-between"
style=
"margin-bottom: 20px"
>
<div
class=
"position-title nowrap-ellipsis"
>
销售经理销售经理销售经理销售经理销售经理销售经理
<div
v-if=
"hotPositionList.length"
>
<div
class=
"position-list"
>
<div
v-for=
"col in hotPositionList"
:key=
"col.jobfid"
class=
"position-item"
>
<div
@
click=
"toPositionDetail(col.jobfid)"
>
<div
class=
"flx-justify-between"
style=
"margin-bottom: 20px"
>
<div
class=
"position-title nowrap-ellipsis"
>
{{ col.jobname }}
</div>
<div>
<span
class=
"salary"
>
{{ col.fminimumwage }}-{{ col.fmaximumsalary }}
</span>
<span
class=
"monthly-pay"
>
元/月
</span>
</div>
</div>
<div
class=
"position-label"
>
<span>
{{ col.feducationalbackground }}
</span>
<el-divider
direction=
"vertical"
/>
<span>
{{ col.fexperience }}
</span>
<el-divider
direction=
"vertical"
/>
<span>
招聘{{ col.FRECRUITSNUMBER }}人
</span>
</div>
</div>
<el-divider
style=
"margin: 14px 0"
/>
<div>
<span
class=
"salary"
>
6000-8000
</span>
<span
class=
"monthly-pay"
>
元/月
</span>
<div
class=
"company"
>
{{ col.firmname }}
</div>
<div
class=
"company-label"
>
<span>
{{ col.ffinancings }}
</span>
<el-divider
direction=
"vertical"
/>
<span>
{{ col.fscales }}
</span>
<el-divider
direction=
"vertical"
/>
<span>
{{ col.findustry }}
</span>
</div>
</div>
</div>
<div
class=
"position-label"
>
<span>
大专
</span>
<el-divider
direction=
"vertical"
/>
<span>
1-3年
</span>
<el-divider
direction=
"vertical"
/>
<span>
招聘2人
</span>
</div>
<el-divider
style=
"margin: 14px 0"
/>
<div
class=
"company"
>
深圳市世杰创益酒店酒店管理限公司
</div>
<div
class=
"company-label"
>
<span>
大专
</span>
<el-divider
direction=
"vertical"
/>
<span>
1-3年
</span>
<el-divider
direction=
"vertical"
/>
<span>
招聘2人
</span>
</div>
</div>
<div
class=
"flx-center"
style=
"text-align: center"
>
<span
class=
"n-more"
@
click=
"seeMore"
>
查看更多
</span>
</div>
</div>
<el-empty
v-else
description=
"暂无职位"
/>
</el-tab-pane>
</el-tabs>
<span
class=
"n-more"
>
查看更多
</span>
</div>
<!-- 热门企业 -->
...
...
@@ -163,8 +178,13 @@
<
script
setup
lang=
"ts"
>
import
{
baseURL
}
from
'@/services'
import
{
getPosition
,
getUserPostionList
}
from
'@/services/api/recruitmentManagement'
import
{
getPosition
,
getUserPostionList
,
getHotPosition
}
from
'@/services/api/recruitmentManagement'
import
{
getStreet
}
from
'@/services/api/streetOfficeSpecialTopic'
import
{
getPoster
}
from
'@/services/api/common'
import
{
useUserInfoStore
}
from
'@/stores/modules/userInfo'
import
autocomplete
from
'@/components/autocomplete.vue'
...
...
@@ -174,19 +194,21 @@ const menuList = ref([] as any)
const
FDATAVALUE
=
ref
()
const
streetList
=
ref
()
const
posterList
:
any
=
ref
([])
const
hotPositionList
:
any
=
ref
([])
const
querySearch
=
ref
([])
const
tabsList
=
[
{
label
:
'市场'
,
name
:
0
},
{
label
:
'运营'
,
name
:
1
},
{
label
:
'销售'
,
name
:
2
},
{
label
:
'技术'
,
name
:
3
},
{
label
:
'服务业'
,
name
:
4
},
{
label
:
'设计'
,
name
:
5
},
{
label
:
'管理'
,
name
:
6
},
{
label
:
'人力/财务/行政'
,
name
:
7
}
{
label
:
'市场'
,
name
:
'LevelJob_18'
},
{
label
:
'运营'
,
name
:
'LevelJob_04'
},
{
label
:
'销售'
,
name
:
'LevelJob_05'
},
{
label
:
'技术'
,
name
:
'LevelJob_01'
},
{
label
:
'服务业'
,
name
:
'LevelJob_11'
},
{
label
:
'设计'
,
name
:
'LevelJob_15'
},
{
label
:
'管理'
,
name
:
'LevelJob_09'
},
{
label
:
'人力/财务/行政'
,
name
:
'LevelJob_07'
}
]
const
activeName
=
ref
(
0
)
const
activeName
=
ref
(
'LevelJob_18'
)
watch
(
()
=>
userInfoStore
,
...
...
@@ -201,8 +223,9 @@ watch(
{
immediate
:
true
,
deep
:
true
}
)
const
handleClick
=
(
tab
:
string
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/enterprise'
})
const
handleClick
=
(
tab
:
any
,
e
:
any
)
=>
{
activeName
.
value
=
tab
.
props
.
name
initHotPosition
()
}
const
querySearchAsync
=
async
(
searchVal
:
string
)
=>
{
...
...
@@ -220,6 +243,10 @@ const searchChange = (searchValue: string) => {
router
.
push
({
path
:
'/recruitmentManagement/personal'
,
query
:
{
searchValue
}
})
}
const
seeMore
=
()
=>
{
router
.
push
({
path
:
'/recruitmentManagement/personal'
})
}
const
subMenuList
=
computed
(()
=>
{
if
(
!
FDATAVALUE
.
value
)
return
[]
const
list
=
JSON
.
parse
(
JSON
.
stringify
(
menuList
.
value
))
||
[]
...
...
@@ -247,17 +274,33 @@ const mouseout = (row?: any) => {
if
(
!
row
)
return
}
const
toPositionDetail
=
(
FID
:
number
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/positionDetail'
,
query
:
{
FID
}
})
}
const
initHotPosition
=
async
()
=>
{
const
res
:
any
=
await
getHotPosition
({
FNUMBER
:
activeName
.
value
})
if
(
res
.
code
===
200
)
{
hotPositionList
.
value
=
res
.
data
||
[]
}
}
const
init
=
async
()
=>
{
const
res
:
any
=
await
getPosition
()
if
(
res
.
code
===
200
)
{
// menuList.value = res.data.LevelJobS.filter((item: any, i: number) => i
<
10
)
menuList
.
value
=
res
.
data
.
LevelJobS
menuList
.
value
=
res
.
data
?.
LevelJobS
||
[]
}
const
street
:
any
=
await
getStreet
()
if
(
street
.
code
===
200
)
{
streetList
.
value
=
street
.
data
.
sort
((
a
:
any
,
b
:
any
)
=>
a
.
FSERIALNUMBER
-
b
.
FSERIALNUMBER
)
}
const
poster
:
any
=
await
getPoster
({
Type
:
'O'
})
if
(
street
.
code
===
200
)
{
posterList
.
value
=
poster
.
data
||
[]
}
await
initHotPosition
()
}
onMounted
(()
=>
{
...
...
src/views/recruitmentManagement/personalRecruitment.vue
浏览文件 @
8cb40226
...
...
@@ -193,15 +193,11 @@ const selectChange = (e: any, index: number) => {
}
const
clearFilter
=
()
=>
{
queryList
.
value
.
Filter
=
{
FNAME
:
queryList
.
value
.
Filter
.
FNAME
,
//标题
FSUBSTREET
:
''
,
//街道
FEXPERIENCE
:
''
,
//经验
SalaryRange
:
''
,
//薪资范围
FEDUCATIONALBACKGROUND
:
''
,
//学历
FSCALES
:
''
,
//规模
FFINANCINGS
:
''
//融资情况
}
queryList
.
value
.
Filter
.
FEXPERIENCE
=
''
queryList
.
value
.
Filter
.
SalaryRange
=
''
queryList
.
value
.
Filter
.
FEDUCATIONALBACKGROUND
=
''
queryList
.
value
.
Filter
.
FFINANCINGS
=
''
queryList
.
value
.
Filter
.
FSCALES
=
''
initUserPostionList
()
}
...
...
@@ -220,7 +216,13 @@ const toPositionDetail = (FID: number) => {
const
initUserPostionList
=
async
()
=>
{
filterLoading
.
value
=
true
const
res
:
any
=
await
getUserPostionList
(
queryList
.
value
)
let
params
=
JSON
.
parse
(
JSON
.
stringify
(
queryList
.
value
))
for
(
const
key
in
params
.
Filter
)
{
params
.
Filter
[
key
]
=
params
.
Filter
[
key
].
trim
()
}
console
.
log
(
params
.
Filter
)
const
res
:
any
=
await
getUserPostionList
(
params
)
if
(
res
.
code
===
200
)
{
loading
.
value
=
false
filterLoading
.
value
=
false
...
...
@@ -239,9 +241,15 @@ const init = async () => {
})
streetList
.
value
.
unshift
({
FNAME
:
'全部'
,
FID
:
'
'
,
FID
:
''
,
active
:
true
})
if
(
queryList
.
value
.
Filter
.
FSUBSTREET
)
{
streetList
.
value
.
map
((
item
:
any
)
=>
{
if
(
item
.
FID
==
queryList
.
value
.
Filter
.
FSUBSTREET
)
item
.
active
=
true
else
item
.
active
=
false
})
}
}
const
res
:
any
=
await
getInformation
({
AuxiliaryS
:
[
'Experience'
,
'SalaryRange'
,
'Degree2'
,
'Member'
,
'Financing'
]
...
...
@@ -264,8 +272,10 @@ const init = async () => {
}
onMounted
(()
=>
{
const
{
searchValue
}
=
route
.
query
const
{
searchValue
,
street
}
=
route
.
query
autocompleteRef
.
value
.
searchValue
=
searchValue
queryList
.
value
.
Filter
.
FNAME
=
searchValue
||
''
queryList
.
value
.
Filter
.
FSUBSTREET
=
Number
(
street
)
||
''
init
()
})
</
script
>
...
...
src/views/recruitmentManagement/positionDetail.vue
浏览文件 @
8cb40226
...
...
@@ -24,11 +24,38 @@
</div>
<div
class=
"flx-align-center"
style=
"margin-top: 24px"
>
<span
v-for=
"(item, index) in detailData?.FJOBKEYWORDS"
v-for=
"(item, index) in detailData?.FCORPORATEWELFARE.filter(
(e: any, i: number) => i
<
5
)"
:key=
"index"
class=
"label"
>
{{
item
}}
</span
>
<el-popover
placement=
"bottom-start"
title=
""
:show-arrow=
"false"
:width=
"500"
:popper-style=
"
{ background: '#022756', border: '1px solid #ffffff' }"
>
<template
#
default
>
<div
class=
"flx-align-center"
style=
"flex-wrap: wrap"
>
<span
v-for=
"(item, index) in detailData?.FCORPORATEWELFARE"
:key=
"index"
class=
"label"
style=
"color: #ffffff; margin-bottom: 8px"
>
{{
item
}}
</span
>
</div>
</
template
>
<
template
#
reference
>
<span
class=
"label popover-label"
style=
"cursor: pointer"
>
<el-icon><i-ep-MoreFilled
/></el-icon>
</span>
</
template
>
</el-popover>
</div>
</div>
<div
class=
"flx-column-start-between"
>
...
...
@@ -41,7 +68,7 @@
<div
class=
"position-describe"
>
<span
class=
"desc-title"
>
职位描述
</span>
<div
class=
"keyWords"
>
<span
v-for=
"(item, index) in detailData?.F
CORPORATEWELFARE
|| []"
:key=
"index"
>
{{
<span
v-for=
"(item, index) in detailData?.F
JOBKEYWORDS
|| []"
:key=
"index"
>
{{
item
}}
</span>
</div>
...
...
@@ -53,16 +80,7 @@
<span>
{{ detailData?.FPUBLISHERS }}
</span>
<div
class=
"flx-align-center"
style=
"font-size: 14px"
>
{{ detailData?.FirmName }}
<span
style=
"
display: inline-block;
width: 4px;
height: 4px;
background: #cccccc;
border-radius: 50%;
margin: 0 4px;
"
/>
<span
class=
"round"
/>
{{ detailData?.FJOBTITLES }}
</div>
</div>
...
...
@@ -90,9 +108,13 @@
:label=
"item.label"
:span=
"item.span"
:width=
"item.width"
>
{{
detailData
?.
gsData
[
item
.
prop
]
?
detailData
?.
gsData
[
item
.
prop
]
:
'-'
}}
</el-descriptions-item
><span
v-show=
"item.label"
>
{{
detailData?.gsData[item.prop]
&&
detailData?.gsData[item.prop] !== ' '
? detailData?.gsData[item.prop]
: '-'
}}
</span></el-descriptions-item
>
</el-descriptions>
<div
class=
"business-expand"
@
click=
"businessShow = !businessShow"
>
...
...
src/views/recruitmentManagement/style/editResume.scss
浏览文件 @
8cb40226
...
...
@@ -172,7 +172,12 @@
[
id
^=
'show-education'
]
{
cursor
:
pointer
;
padding
:
14px
32px
;
.round-img
{
width
:
60px
;
height
:
60px
;
border-radius
:
50%
;
background
:
#f8f8f8
;
}
&
:hover
{
padding
:
14px
32px
;
background
:
#f8f8f8
;
...
...
src/views/recruitmentManagement/style/enterprise.scss
浏览文件 @
8cb40226
...
...
@@ -127,5 +127,6 @@
font-weight
:
400
;
color
:
#177cfa
;
margin-right
:
8px
;
margin-bottom
:
8px
;
}
}
src/views/recruitmentManagement/style/personal.scss
浏览文件 @
8cb40226
...
...
@@ -50,6 +50,7 @@
.personal-contnet
{
width
:
100%
;
min-height
:
300px
;
.personal-ct-item
{
cursor
:
pointer
;
background
:
#ffffff
;
...
...
src/views/recruitmentManagement/style/positionDetail.scss
浏览文件 @
8cb40226
...
...
@@ -57,6 +57,7 @@
padding
:
24px
36px
;
.keyWords
{
width
:
90%
;
margin
:
24px
0
20px
;
span
{
display
:
inline-block
;
...
...
@@ -66,6 +67,7 @@
margin-right
:
12px
;
font-size
:
14px
;
color
:
#177cfa
;
margin-bottom
:
8px
;
}
}
pre
{
...
...
@@ -88,6 +90,7 @@
border-radius
:
12px
;
box-sizing
:
border-box
;
padding
:
24px
36px
;
.text-container
{
position
:
relative
;
max-height
:
calc
(
3
*
1
.3em
);
/* 3行文本的高度,假设行高为1.2em */
...
...
@@ -150,19 +153,6 @@
}
}
}
.label
{
display
:
block
;
box-sizing
:
border-box
;
height
:
26px
;
background
:
#1c406e
;
font-size
:
12px
;
border-radius
:
4px
;
padding
:
0
10px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
8px
;
}
.desc-title
{
font-size
:
18px
;
...
...
@@ -173,4 +163,35 @@
pre
{
white-space
:
pre-wrap
;
}
.round
{
display
:
inline-block
;
width
:
4px
;
height
:
4px
;
background
:
#cccccc
;
border-radius
:
50%
;
margin
:
0
4px
;
}
}
.popover-label
{
padding
:
1px
10px
;
box-sizing
:
border-box
;
}
.popover-label
:hover
{
border
:
1px
solid
#177cfa
!
important
;
}
.label
{
display
:
block
;
box-sizing
:
border-box
;
height
:
26px
;
background
:
#1c406e
;
font-size
:
12px
;
border-radius
:
4px
;
padding
:
0
10px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
margin-right
:
8px
;
}
src/views/streetOfficeSpecialTopic/index.scss
浏览文件 @
8cb40226
...
...
@@ -172,6 +172,7 @@
margin
:
-5px
;
margin
:
24px
0
;
.hot-position-item
{
width
:
calc
(
33
.333%
-
10px
);
flex
:
0
0
calc
(
33
.333%
-
10px
);
margin
:
5px
;
box-sizing
:
border-box
;
...
...
@@ -187,6 +188,7 @@
font-weight
:
400
;
color
:
#222222
;
line-height
:
14px
;
text-align
:
left
;
}
.item-rg
{
font-size
:
18px
;
...
...
@@ -196,7 +198,11 @@
.hot-position-item-ft
{
margin-top
:
16px
;
display
:
flex
;
span
:first-child
{
width
:
40%
;
}
span
{
display
:
inline-block
;
padding
:
6px
12px
;
background
:
#f8f8f8
;
border-radius
:
4px
;
...
...
src/views/streetOfficeSpecialTopic/index.vue
浏览文件 @
8cb40226
...
...
@@ -29,9 +29,9 @@
<div
class=
"street-card-content flx-center"
>
<div
class=
"content-top"
>
{{
streetOverview
}}
</div>
<p>
{{
streetDetail
?.
FSTREETOVERVIEW
}}
</p>
<div
class=
"content-footer"
>
<
!--
<
div
class=
"content-footer"
>
查看更多
<el-icon><i-ep-DArrowRight
/></el-icon>
</div>
</div>
-->
</div>
</div>
...
...
@@ -56,49 +56,67 @@
<div
class=
"hot-position"
>
<div
class=
"n-title"
>
热招职位
</div>
<div
class=
"hot-position-list"
>
<div
v-for=
"item in 6"
:key=
"item"
class=
"hot-position-item"
>
<div
v-for=
"item in streetPositionList?.Zwdata || []"
:key=
"item"
class=
"hot-position-item"
@
click=
"toPositionDetail(item.FID)"
>
<div
class=
"flx-justify-between"
>
<div
class=
"item-lf nowrap-ellipsis"
title=
"软件测试 (学信网可查,深圳 福田区 新洲)
"
>
软件测试 (学信网可查,深圳 福田区 新洲)
<div
class=
"item-lf nowrap-ellipsis"
:title=
"item.JobName
"
>
{{
item
.
JobName
}}
</div>
<div
class=
"item-rg"
>
11-15K
</div>
<div
class=
"item-rg"
>
{{
item
.
FMINIMUMWAGE
}}
-
{{
item
.
FMAXIMUMSALARY
}}
</div>
</div>
<div
class=
"hot-position-item-ft"
>
<span>
深圳 福田区 新洲
</span>
<span>
经验不限
</span>
<span>
学历不限
</span>
<span
class=
"nowrap-ellipsis"
>
{{
`${item.FWORKPLACE.split('/')[0]
}
${item.FWORKPLACE.split('/')[1]
}
${
item.FWORKPLACE.split('/')[2]
}
`
}}
<
/span
>
<
span
>
{{
item
.
FEXPERIENCE
}}
<
/span
>
<
span
>
{{
item
.
FEDUCATIONALBACKGROUND
}}
<
/span
>
<
/div
>
<
/div
>
<
/div
>
<span
class=
"n-more"
>
查看更多
</span>
<
span
class
=
"n-more"
@
click
=
"toPersonal"
>
查看更多
<
/span
>
<
/div
>
<
div
class
=
"hot-position"
>
<
div
class
=
"n-title"
>
辖区企业
<
/div
>
<
div
class
=
"hot-position-list"
>
<div
v-for=
"item in 6"
:key=
"item"
class=
"hot-position-item enterprise"
>
<div
class=
"enterprise-tp"
>
<
div
v
-
for
=
"item in streetPositionList?.Qydata || []"
:
key
=
"item"
class
=
"hot-position-item enterprise"
>
<
div
class
=
"enterprise-tp"
@
click
=
"toPositionDetail(item.JobName)"
>
<
div
class
=
"flx-justify-between"
>
<div
class=
"item-lf nowrap-ellipsis"
title=
"软件测试 (学信网可查,深圳 福田区 新洲)"
>
软件测试 (学信网可查,深圳 福田区 新洲)
<
div
class
=
"item-lf nowrap-ellipsis"
:
title
=
"item.JobName"
>
{{
item
.
JobName
}}
<
/div
>
<div
class=
"item-rg"
>
11-15K
</div>
<
div
class
=
"item-rg"
>
{{
item
.
FMINIMUMWAGE
}}
-
{{
item
.
FMAXIMUMSALARY
}}
<
/div
>
<
/div
>
<
div
class
=
"hot-position-item-ft"
>
<span>
深圳 福田区 新洲
</span>
<span>
经验不限
</span>
<span>
学历不限
</span>
<
span
class
=
"nowrap-ellipsis"
>
{{
`${item.FWORKPLACE.split('/')[0]
}
${item.FWORKPLACE.split('/')[1]
}
${
item.FWORKPLACE.split('/')[2]
}
`
}}
<
/span
>
<
span
>
{{
item
.
FEXPERIENCE
}}
<
/span
>
<
span
>
{{
item
.
FEDUCATIONALBACKGROUND
}}
<
/span
>
<
/div
>
<
/div
>
<
div
class
=
"enterprise-bt flx-justify-between"
>
<
div
class
=
"flx-align-center"
>
<
img
src
=
"@/assets/img/icon-gonggao.png"
width
=
"24px"
height
=
"24px"
/>
<span
style=
"margin-left: 8px"
>
好乐租
</span>
<
span
style
=
"margin-left: 8px"
>
{{
item
.
FirmName
}}
<
/span
>
<
/div
>
<
div
>
<
span
>
{{
item
.
FINDUSTRY
}}
<
/span
>
<
el
-
divider
direction
=
"vertical"
/>
<
span
>
{{
item
.
FFINANCINGS
}}
<
/span
>
<
/div
>
<div><span>
软件开发
</span>
<span
class=
"line"
/>
<span>
未融资
</span></div>
<
/div
>
<
/div
>
<
/div
>
...
...
@@ -110,10 +128,12 @@
<
script
setup
lang
=
"ts"
>
import
{
baseURL
}
from
'@/services'
import
{
getStreet
}
from
'@/services/api/streetOfficeSpecialTopic'
import
{
getStreet
,
getStreetPosition
}
from
'@/services/api/streetOfficeSpecialTopic'
const
route
=
useRoute
()
const
router
=
useRouter
()
const
streetList
:
any
=
ref
([])
const
streetPositionList
:
any
=
ref
([])
const
streetData
=
ref
([
{
name
:
'街道概况'
,
...
...
@@ -141,6 +161,7 @@ const streetOverview = ref()
const
streetDetail
:
any
=
ref
()
const
overviewDetail
:
any
=
ref
()
const
loading
=
ref
(
true
)
watch
(
()
=>
streetActive
.
value
,
...
...
@@ -155,8 +176,17 @@ watch(
}
)
const
toPositionDetail
=
(
FID
:
number
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/positionDetail'
,
query
:
{
FID
}
}
)
}
const
toPersonal
=
()
=>
{
router
.
push
({
path
:
'/recruitmentManagement/personal'
,
query
:
{
street
:
streetActive
.
value
}
}
)
}
const
change
=
(
FID
:
string
)
=>
{
streetActive
.
value
=
FID
initStreetPosition
()
}
const
streeChange
=
(
index
:
number
)
=>
{
...
...
@@ -168,14 +198,26 @@ const streeChange = (index: number) => {
}
)
}
const
initStreetPosition
=
async
()
=>
{
const
res
:
any
=
await
getStreetPosition
({
FID
:
streetActive
.
value
}
)
if
(
res
.
code
===
200
)
{
streetPositionList
.
value
=
res
.
data
||
[]
}
}
const
init
=
async
()
=>
{
loading
.
value
=
true
const
res
:
any
=
await
getStreet
()
if
(
res
.
code
===
200
)
{
streetList
.
value
=
res
.
data
.
map
((
item
:
any
)
=>
({
...
item
,
FNAME
:
item
.
FNAME
+
'专题'
}
))
.
sort
((
a
:
any
,
b
:
any
)
=>
a
.
FSERIALNUMBER
-
b
.
FSERIALNUMBER
)
const
{
FID
}
=
route
.
query
streetActive
.
value
=
FID
||
streetList
.
value
[
0
]?.
FID
||
null
if
(
!
streetActive
.
value
)
{
const
{
FID
}
=
route
.
query
streetActive
.
value
=
FID
||
streetList
.
value
[
0
]?.
FID
||
null
}
initStreetPosition
()
loading
.
value
=
false
}
}
...
...
src/views/trainingBase/index.scss
0 → 100644
浏览文件 @
8cb40226
.skill-container
{
width
:
100%
;
.container
{
width
:
1316px
;
text-align
:
center
;
img
{
width
:
100%
;
margin-top
:
24px
;
border-radius
:
12px
;
}
.train-list
{
display
:
flex
;
margin
:
24px
0
;
border
:
1px
solid
#177cfa
;
border-radius
:
8px
;
.train-item
{
flex
:
0
0
20%
;
height
:
58px
;
line-height
:
58px
;
border-right
:
1px
solid
#177cfa
;
font-size
:
24px
;
font-weight
:
500
;
color
:
#177cfa
;
&
:nth-child
(
5
)
{
border-right
:
0
;
}
}
}
}
}
src/views/trainingBase/index.vue
浏览文件 @
8cb40226
<
template
>
<div>
人力实训基地
</div>
<div
v-loading=
"loading"
class=
"skill-container flx-center"
>
<div
class=
"container"
>
<img
:src=
"baseURL + '/' + commonData?.HbData?.[0].FPOSTERPICTURE"
height=
"560"
/>
<div
style=
"margin: 24px 0 360px"
>
<contentBlock
:list=
"commonData?.GaQnData"
@
change=
"handleChange"
/>
</div>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
></
script
>
<
script
setup
lang=
"ts"
>
import
{
baseURL
}
from
'@/services'
import
{
getCommon
}
from
'@/services/api/common'
import
contentBlock
from
'@/components/contentBlock.vue'
<
style
scoped
></
style
>
const
router
=
useRouter
()
const
loading
=
ref
(
true
)
const
queryList
=
ref
({
pageIndex
:
1
,
pageSize
:
10
,
FormType
:
'M'
})
const
commonData
:
any
=
ref
()
const
handleChange
=
(
row
:
any
)
=>
{
router
.
push
({
path
:
'/commonDetail'
,
query
:
{
FID
:
row
.
FID
,
FormType
:
'M'
,
FTITLE
:
row
.
FTITLE
}
})
}
const
init
=
async
()
=>
{
const
res
:
any
=
await
getCommon
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
commonData
.
value
=
res
.
data
loading
.
value
=
false
}
}
init
()
</
script
>
<
style
lang=
"scss"
scoped
>
@import
'./index.scss'
;
</
style
>
types/components.d.ts
浏览文件 @
8cb40226
...
...
@@ -17,6 +17,8 @@ declare module 'vue' {
ElBreadcrumb
:
typeof
import
(
'element-plus/es'
)[
'ElBreadcrumb'
]
ElBreadcrumbItem
:
typeof
import
(
'element-plus/es'
)[
'ElBreadcrumbItem'
]
ElButton
:
typeof
import
(
'element-plus/es'
)[
'ElButton'
]
ElCarousel
:
typeof
import
(
'element-plus/es'
)[
'ElCarousel'
]
ElCarouselItem
:
typeof
import
(
'element-plus/es'
)[
'ElCarouselItem'
]
ElCascader
:
typeof
import
(
'element-plus/es'
)[
'ElCascader'
]
ElCheckbox
:
typeof
import
(
'element-plus/es'
)[
'ElCheckbox'
]
ElCol
:
typeof
import
(
'element-plus/es'
)[
'ElCol'
]
...
...
@@ -42,6 +44,7 @@ declare module 'vue' {
ElMenuItem
:
typeof
import
(
'element-plus/es'
)[
'ElMenuItem'
]
ElOption
:
typeof
import
(
'element-plus/es'
)[
'ElOption'
]
ElPagination
:
typeof
import
(
'element-plus/es'
)[
'ElPagination'
]
ElPopover
:
typeof
import
(
'element-plus/es'
)[
'ElPopover'
]
ElRate
:
typeof
import
(
'element-plus/es'
)[
'ElRate'
]
ElRow
:
typeof
import
(
'element-plus/es'
)[
'ElRow'
]
ElScrollbar
:
typeof
import
(
'element-plus/es'
)[
'ElScrollbar'
]
...
...
vite.config.ts
浏览文件 @
8cb40226
...
...
@@ -80,16 +80,6 @@ export default defineConfig({
}
}
},
// build: {
// minify: 'terser',
// terserOptions: {
// compress: {
// //生产环境时移除console.log()
// drop_console: true,
// drop_debugger: true
// }
// }
// },
build
:
{
outDir
:
'dist'
,
sourcemap
:
false
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论