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