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
3f677b28
提交
3f677b28
authored
12月 13, 2023
作者:
刘旭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改细节bug
上级
ca2001b3
隐藏空白字符变更
内嵌
并排
正在显示
31 个修改的文件
包含
338 行增加
和
108 行删除
+338
-108
headers.vue
src/Layout/headers.vue
+11
-1
icon-head.png
src/assets/img/icon-head.png
+0
-0
autocomplete.vue
src/components/autocomplete.vue
+20
-12
previewFile.vue
src/components/previewFile.vue
+2
-2
qqMap.vue
src/components/qqMap.vue
+1
-1
index.ts
src/routers/index.ts
+4
-0
recruitmentManagement.ts
src/services/api/recruitmentManagement.ts
+1
-1
index.ts
src/services/index.ts
+0
-2
index.vue
src/views/collegeStudents/index.vue
+5
-5
index.scss
src/views/flexibleEmploym/index.scss
+11
-4
index.vue
src/views/flexibleEmploym/index.vue
+28
-3
index.vue
src/views/login/index.vue
+8
-3
companyDetail.vue
src/views/recruitmentManagement/companyDetail.vue
+5
-2
info.vue
src/views/recruitmentManagement/components/info.vue
+9
-3
morePosition.vue
src/views/recruitmentManagement/components/morePosition.vue
+9
-6
previewResume.vue
src/views/recruitmentManagement/components/previewResume.vue
+4
-0
resume.vue
src/views/recruitmentManagement/components/resume.vue
+3
-3
talent.vue
src/views/recruitmentManagement/components/talent.vue
+45
-9
userInfo.vue
src/views/recruitmentManagement/components/userInfo.vue
+9
-0
editResume.vue
src/views/recruitmentManagement/editResume.vue
+8
-10
enterpriseRecruitment.vue
src/views/recruitmentManagement/enterpriseRecruitment.vue
+1
-1
index.vue
src/views/recruitmentManagement/index.vue
+41
-14
personalRecruitment.vue
src/views/recruitmentManagement/personalRecruitment.vue
+33
-14
positionDetail.vue
src/views/recruitmentManagement/positionDetail.vue
+1
-1
seeMoreCompany.vue
src/views/recruitmentManagement/seeMoreCompany.vue
+7
-4
seeMorePosition.vue
src/views/recruitmentManagement/seeMorePosition.vue
+1
-1
enterprise.scss
src/views/recruitmentManagement/style/enterprise.scss
+3
-2
home.vue
src/views/specialRecruitment/home.vue
+49
-0
index.vue
src/views/specialRecruitment/index.vue
+12
-1
index.vue
src/views/streetOfficeSpecialTopic/index.vue
+5
-1
vite.config.ts
vite.config.ts
+2
-2
没有找到文件。
src/Layout/headers.vue
浏览文件 @
3f677b28
...
...
@@ -52,7 +52,17 @@
class=
"flx-align-center"
style=
"color: #177cfa"
>
<el-avatar
:src=
"baseURL + '/' + personalInfo?.FPHOTOS"
/>
<el-avatar
v-if=
"personalInfo?.FPHOTOS"
:src=
"baseURL + '/' + personalInfo?.FPHOTOS"
/>
<img
v-else
src=
"@/assets/img/icon-head.png"
width=
"40"
height=
"40"
style=
"margin: 0"
/>
<span
style=
"margin-left: 8px; width: 95px"
class=
"nowrap-ellipsis"
...
...
src/assets/img/icon-head.png
0 → 100644
浏览文件 @
3f677b28
1.1 KB
src/components/autocomplete.vue
浏览文件 @
3f677b28
...
...
@@ -7,10 +7,10 @@
:value-key=
"valueKey"
:fetch-suggestions=
"querySearchAsync"
@
select=
"handleSelect"
@
change
=
"handleChange"
@
keyup
.
enter
=
"handleChange"
>
<template
#
prefix
>
<el-select
v-model=
"selectValue"
placeholder=
""
>
<el-select
v-model=
"selectValue"
placeholder=
""
@
change=
"selectChange"
>
<el-option
v-for=
"(item, index) in selectOptions"
:key=
"index"
...
...
@@ -39,8 +39,8 @@ const props = defineProps({
selectOptions
:
{
type
:
Array
,
default
:
()
=>
[
{
label
:
'找工作'
,
value
:
1
},
{
label
:
'找企业'
,
value
:
2
}
{
label
:
'找工作'
,
value
:
'1'
},
{
label
:
'找企业'
,
value
:
'2'
}
]
}
as
any
,
list
:
{
...
...
@@ -51,23 +51,31 @@ const props = defineProps({
let
timeout
:
ReturnType
<
typeof
setTimeout
>
const
searchValue
=
ref
()
const
selectValue
=
ref
(
1
)
const
selectValue
=
ref
(
'1'
)
const
emits
=
defineEmits
([
'searchChange'
,
'querySearchAsync'
])
const
emits
=
defineEmits
([
'searchChange'
,
'querySearchAsync'
,
'update:list'
,
'update:valueKey'
])
const
querySearchAsync
=
async
(
queryString
:
string
,
cb
:
(
arg
:
any
)
=>
void
)
=>
{
emits
(
'querySearchAsync'
,
searchValue
.
value
)
clearTimeout
(
timeout
)
timeout
=
setTimeout
(()
=>
{
cb
(
props
.
list
)
setTimeout
(()
=>
{
emits
(
'querySearchAsync'
,
searchValue
.
value
,
selectValue
.
value
)
clearTimeout
(
timeout
)
timeout
=
setTimeout
(()
=>
{
cb
(
props
.
list
)
},
200
)
},
100
)
}
const
handleSelect
=
(
item
:
Record
<
string
,
any
>
)
=>
{
emits
(
'searchChange'
,
item
.
JobNam
e
)
emits
(
'searchChange'
,
selectValue
.
value
===
'1'
?
item
.
JobName
:
item
.
FirmName
,
selectValue
.
valu
e
)
}
const
handleChange
=
()
=>
{
emits
(
'searchChange'
,
searchValue
.
value
)
emits
(
'searchChange'
,
searchValue
.
value
,
selectValue
.
value
)
}
const
selectChange
=
()
=>
{
emits
(
'update:list'
,
[])
emits
(
'update:valueKey'
,
selectValue
.
value
===
'1'
?
'JobName'
:
'FirmName'
)
}
defineExpose
({
searchValue
})
...
...
src/components/previewFile.vue
浏览文件 @
3f677b28
...
...
@@ -12,8 +12,8 @@
class=
"child"
frameborder=
"0"
:src=
"
//
'http://view.xdocin.com/xdoc?_xdoc=' + encodeURIComponent('http://192.168.1.168' + url)
'http://view.xdocin.com/xdoc?_xdoc=' + encodeURIComponent('http://14.29.230.199:84' + url)
'http://view.xdocin.com/xdoc?_xdoc=' + encodeURIComponent('http://192.168.1.168' + url)
//
'http://view.xdocin.com/xdoc?_xdoc=' + encodeURIComponent('http://14.29.230.199:84' + url)
"
/>
<vue-office-pdf
...
...
src/components/qqMap.vue
浏览文件 @
3f677b28
...
...
@@ -17,7 +17,7 @@ const initMap = (address: string) => {
address
:
address
.
replace
(
'/'
,
''
),
key
:
'3M5BZ-SFCRJ-AHSF7-XRA5Q-Y6NIJ-DXBH4'
}).
then
((
res
:
any
)
=>
{
console
.
log
(
res
,
'addr'
)
//
console.log(res, 'addr')
if
(
res
.
status
===
0
)
{
const
{
lat
,
lng
}
=
res
.
result
.
location
const
center
=
new
windows
.
TMap
.
LatLng
(
lat
,
lng
)
//设置中心点坐标
...
...
src/routers/index.ts
浏览文件 @
3f677b28
...
...
@@ -134,6 +134,10 @@ const routes = [
]
},
{
path
:
'/specialRecruitment/home'
,
component
:
()
=>
import
(
'@/views/specialRecruitment/home.vue'
)
},
{
path
:
'/RichTextEditor'
,
component
:
()
=>
import
(
'@/views/editor/index.vue'
)
}
...
...
src/services/api/recruitmentManagement.ts
浏览文件 @
3f677b28
...
...
@@ -180,7 +180,7 @@ export const setTalentPool = (data: any) => {
)
}
// 简历搜索/简历推荐
export
const
ge
n
CompanyList
=
(
data
:
any
)
=>
{
export
const
ge
t
CompanyList
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SearchEnterprise,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
...
...
src/services/index.ts
浏览文件 @
3f677b28
...
...
@@ -86,7 +86,6 @@ class RequestHttp {
this
.
service
.
interceptors
.
response
.
use
(
(
response
:
AxiosResponse
)
=>
{
const
{
data
,
config
}
=
response
// 解构
console
.
log
(
data
,
'response'
)
const
globalStore
=
useGlobalStore
()
const
userInfoStore
=
useUserInfoStore
()
if
(
data
.
code
===
501
)
{
...
...
@@ -114,7 +113,6 @@ class RequestHttp {
},
(
error
:
AxiosError
)
=>
{
const
{
response
}
=
error
console
.
log
(
response
,
'response'
)
// 请求超时 && 网络错误单独判断,没有 response
if
(
error
.
message
.
indexOf
(
'timeout'
)
!==
-
1
)
ElMessage
.
error
(
'请求超时!请您稍后重试'
)
if
(
error
.
message
.
indexOf
(
'Network Error'
)
!==
-
1
)
...
...
src/views/collegeStudents/index.vue
浏览文件 @
3f677b28
<
template
>
<div
class=
"student-container"
>
<div
class=
"container"
>
<img
:src=
"baseURL + '/' +
commonData?.HbData
?.[0].FPOSTERPICTURE"
height=
"560"
/>
<img
:src=
"baseURL + '/' +
posterList
?.[0].FPOSTERPICTURE"
height=
"560"
/>
<div
class=
"student"
>
<el-tabs
v-model=
"activeName"
class=
"student-tabs"
stretch
@
tab-change=
"tabChange"
>
<el-tab-pane
...
...
@@ -241,7 +241,7 @@
<
script
setup
lang
=
"ts"
>
import
{
baseURL
}
from
'@/services'
import
{
get
Common
}
from
'@/services/api/common'
import
{
get
Poster
}
from
'@/services/api/common'
import
{
getUserPostionList
,
getHotCompany
}
from
'@/services/api/recruitmentManagement'
import
{
getPolicyList
}
from
'@/services/api/policy'
import
customPagination
from
'@/components/customPagination.vue'
...
...
@@ -281,7 +281,7 @@ const state = reactive({
}
)
const
loading
=
ref
(
true
)
const
commonData
=
ref
()
const
posterList
=
ref
()
const
userPostionList
:
any
=
ref
([])
const
policyList
:
any
=
ref
([])
const
hotCompanyList
:
any
=
ref
([])
...
...
@@ -390,9 +390,9 @@ watch(
)
const
init
=
async
()
=>
{
const
res
:
any
=
await
get
Common
({
pageIndex
:
1
,
pageSize
:
10
,
FormType
:
'I
'
}
)
const
res
:
any
=
await
get
Poster
({
Type
:
'H
'
}
)
if
(
res
.
code
===
200
)
{
commonData
.
value
=
res
.
data
posterList
.
value
=
res
.
data
||
[]
loading
.
value
=
false
}
}
...
...
src/views/flexibleEmploym/index.scss
浏览文件 @
3f677b28
...
...
@@ -18,15 +18,22 @@
margin-right
:
0
;
}
}
.el-input
{
:deep
(
.el-autocomplete
)
{
width
:
869px
;
height
:
62px
;
margin-bottom
:
24px
;
:deep
(
.el-input__wrapper
)
{
border-radius
:
29px
;
padding
:
0
45px
;
.el-input
{
width
:
848px
;
height
:
62px
;
margin-bottom
:
24px
;
.el-input__wrapper
{
border-radius
:
29px
;
padding
:
0
45px
;
}
}
}
.hot-position
{
width
:
1316px
;
text-align
:
center
;
...
...
src/views/flexibleEmploym/index.vue
浏览文件 @
3f677b28
...
...
@@ -14,11 +14,17 @@
@
see-more=
"seeMore(item.field)"
/>
</div>
<el-input
v-model=
"searchValue"
placeholder=
"搜索关键词"
@
change=
"search"
>
<el-autocomplete
v-model=
"searchValue"
value-key=
"postName"
:fetch-suggestions=
"querySearchAsync"
placeholder=
"搜索职位、公司"
@
change=
"search"
>
<template
#
suffix
>
<el-icon
size=
"24"
style=
"cursor: pointer"
@
click=
"search"
><i-ep-Search
/></el-icon>
</
template
>
</el-
input
>
</el-
autocomplete
>
<div
class=
"hot-position"
>
<el-tabs
v-model=
"activeName"
class=
"hot-position-tabs"
stretch
@
tab-change=
"handleChange"
>
<el-tab-pane
...
...
@@ -143,6 +149,8 @@ const flexibleNameList = [
{
name
:
'新闻'
,
field
:
'XwData'
}
]
let
timeout
:
ReturnType
<
typeof
setTimeout
>
const
flexibleChange
=
(
row
:
any
)
=>
{
router
.
push
({
path
:
'/commonDetail'
,
query
:
{
FID
:
row
.
FID
,
FormType
:
'D'
,
FTITLE
:
row
.
FTITLE
}
})
}
...
...
@@ -170,6 +178,23 @@ const seeMore = (Type: string) => {
}
}
const
querySearchAsync
=
async
(
queryString
:
string
,
cb
:
(
arg
:
any
)
=>
void
)
=>
{
const
res
:
any
=
await
getPositionList
({
obj
:
{
postName
:
searchValue
.
value
},
currentPage
:
1
,
pageSize
:
10
})
if
(
res
.
code
===
200
)
{
let
results
=
res
.
data
.
obj
||
[]
clearTimeout
(
timeout
)
timeout
=
setTimeout
(()
=>
{
cb
(
results
)
},
500
)
}
}
const
handleChange
=
(
name
:
number
)
=>
{
listQuery
.
obj
.
postName
=
tabsList
[
name
].
label
initPosition
()
...
...
@@ -201,7 +226,7 @@ const initFlexibleEmploymList = async (params: any) => {
paramsData
.
XwData
.
total
=
res
.
total
break
}
console
.
log
(
paramsData
)
//
console.log(paramsData)
}
}
const
initPosition
=
async
()
=>
{
...
...
src/views/login/index.vue
浏览文件 @
3f677b28
...
...
@@ -88,7 +88,7 @@ const state = reactive({
loginForm
:
{
Phone
:
'18874693873'
,
Code
:
'3123'
,
Company
:
'货拉拉
公司
'
Company
:
'货拉拉
科技
'
},
loginRules
:
{
Phone
:
[
...
...
@@ -113,6 +113,7 @@ const switchUsers = () => {
if
(
state
.
userType
===
'企业用户'
)
state
.
userType
=
'个人用户'
else
state
.
userType
=
'企业用户'
}
let
timer
:
ReturnType
<
typeof
setInterval
>
const
sendCode
=
()
=>
{
formRef
.
value
?.
validateField
([
'Phone'
],
async
(
valid
:
boolean
)
=>
{
...
...
@@ -120,13 +121,13 @@ const sendCode = () => {
// 发送验证码请求
const
res
:
any
=
await
getCode
(
state
.
loginForm
.
Phone
)
if
(
res
.
code
===
200
)
{
console
.
log
(
res
)
//
console.log(res)
state
.
EnCode
=
res
.
data
// 请求成功后将 sended 设为 true,按钮禁用,并显示倒计时
state
.
sended
=
true
state
.
buttonText
=
'已发送'
let
countDown
=
60
const
timer
=
setInterval
(()
=>
{
timer
=
setInterval
(()
=>
{
if
(
countDown
>
0
)
{
state
.
buttonText
=
`
${
countDown
}
s 后重试`
}
else
{
...
...
@@ -193,7 +194,11 @@ const open = () => {
}
const
handleClose
=
()
=>
{
clearInterval
(
timer
)
formRef
.
value
?.
resetFields
()
loading
.
value
=
false
state
.
sended
=
false
state
.
buttonText
=
'获取验证码'
emits
(
'update:show'
,
false
)
}
</
script
>
...
...
src/views/recruitmentManagement/companyDetail.vue
浏览文件 @
3f677b28
<
template
>
<div
v-loading=
"loading"
class=
"detail-container flx-center"
>
<div
class=
"detail-container flx-center"
>
<div
class=
"container"
>
<div
class=
"detail-filter"
>
<div
class=
"detail-header"
>
...
...
@@ -184,6 +184,7 @@
<
morePosition
v
-
if
=
"positionList.length"
ref
=
"morePositionRef"
v
-
loading
=
"loading"
:
positionList
=
"positionList"
:
queryList
=
"queryList"
@
current
-
change
=
"currentChange"
...
...
@@ -208,7 +209,7 @@ const route = useRoute()
const
router
=
useRouter
()
const
morePositionRef
=
ref
()
const
mapRef
=
ref
()
const
loading
=
ref
(
fals
e
)
const
loading
=
ref
(
tru
e
)
const
expandShow
=
ref
(
false
)
const
businessShow
=
ref
(
true
)
const
activeName
=
ref
(
true
)
...
...
@@ -317,10 +318,12 @@ const initCompanyDetail = async () => {
}
const
initCompanyPosition
=
async
()
=>
{
loading
.
value
=
true
const
res
:
any
=
await
getCompanyPosition
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
positionList
.
value
=
res
.
data
||
[]
queryList
.
value
.
total
=
res
.
total
loading
.
value
=
false
// morePositionRef.value?.init()
}
}
...
...
src/views/recruitmentManagement/components/info.vue
浏览文件 @
3f677b28
...
...
@@ -13,7 +13,7 @@
<div
class=
"personal-info-bt"
>
<div
class=
"personal-info-bt-item"
>
<div
class=
"personal-info-label"
>
求职状态
</div>
<span>
{{
personalInfo
?.
FDEPARTREMAIN
}}
</span>
<span>
{{
selectDepartRemain
}}
</span>
</div>
<div
class=
"personal-info-bt-item"
>
<div
class=
"personal-info-label"
>
已投递
</div>
...
...
@@ -33,13 +33,19 @@
<
script
setup
lang=
"ts"
>
import
{
useUserInfoStore
}
from
'@/stores/modules/userInfo'
import
{
useGlobalStore
}
from
'@/stores/modules/global'
const
personalInfo
=
computed
(()
=>
userInfoStore
.
getPersonalInfo
)
import
{
jobStatus
}
from
'../config'
const
globalStore
=
useGlobalStore
()
const
userInfoStore
=
useUserInfoStore
()
const
router
=
useRouter
()
const
personalInfo
=
computed
(()
=>
userInfoStore
.
getPersonalInfo
)
const
selectDepartRemain
=
computed
(()
=>
{
let
row
=
jobStatus
.
find
((
item
:
any
)
=>
item
.
value
===
personalInfo
.
value
.
FDEPARTREMAIN
)
return
row
?
row
.
label
:
jobStatus
[
3
].
label
})
const
toEditResume
=
()
=>
{
router
.
push
(
'/recruitmentManagement/editResume'
)
}
...
...
src/views/recruitmentManagement/components/morePosition.vue
浏览文件 @
3f677b28
...
...
@@ -152,14 +152,17 @@ const mapFlag = ref(false)
watch
(
()
=>
props
.
positionList
,
()
=>
{
mapFlag
.
value
=
tru
e
mapFlag
.
value
=
fals
e
setTimeout
(()
=>
{
if
(
props
.
positionList
.
length
)
{
activeName
.
value
=
props
.
positionList
[
0
].
FID
positionDetail
.
value
=
props
.
positionList
[
0
]
mapRef
.
value
?.
initMap
(
props
.
positionList
[
0
].
FWORKPLACE
)
mapFlag
.
value
=
true
setTimeout
(()
=>
{
activeName
.
value
=
props
.
positionList
[
0
].
FID
positionDetail
.
value
=
props
.
positionList
[
0
]
mapRef
.
value
?.
initMap
(
props
.
positionList
[
0
].
FWORKPLACE
)
}
,
300
)
}
}
,
3
00
)
}
,
1
00
)
}
,
{
immediate
:
true
,
deep
:
true
}
)
...
...
@@ -194,7 +197,7 @@ const currentChange = (pageIndex: number) => {
const
submitResume
=
async
()
=>
{
const
res
:
any
=
await
sendResume
({
JobID
:
positionDetail
.
value
?.
FID
}
)
if
(
res
.
code
===
200
)
{
console
.
log
(
res
)
//
console.log(res)
ElNotification
.
success
({
title
:
'投递简历'
,
message
:
'投递成功'
...
...
src/views/recruitmentManagement/components/previewResume.vue
浏览文件 @
3f677b28
...
...
@@ -121,6 +121,10 @@
}}
</span
>
</div>
<div
v-show=
"item.FSchoolExperience_Tag"
style=
"margin: 24px 0"
>
<span
style=
"display: block; font-size: 18px; margin-bottom: 12px"
>
在校经历:
</span>
<pre>
{{
item
.
FSchoolExperience_Tag
}}
</pre>
</div>
</div>
</div>
</div>
...
...
src/views/recruitmentManagement/components/resume.vue
浏览文件 @
3f677b28
...
...
@@ -120,8 +120,8 @@
style
=
"padding: 14px 40px 14px 0; justify-content: center"
>
<!--
<
div
class
=
"resume-btn flx-center"
>
简历待定
<
/div> --
>
<
div
class
=
"resume-btn flx-center"
@
click
=
"talentPool('
H
', item.FID)"
>
人才库
<
/div
>
<
div
class
=
"resume-btn flx-center"
@
click
=
"talentPool('
G
', item.FID)"
>
人才储备
<
/div
>
<
div
class
=
"resume-btn flx-center"
@
click
=
"talentPool('
G
', item.FID)"
>
人才库
<
/div
>
<
div
class
=
"resume-btn flx-center"
@
click
=
"talentPool('
H
', item.FID)"
>
人才储备
<
/div
>
<
/div
>
<
/div
>
<
customPagination
...
...
@@ -221,7 +221,7 @@ const talentPool = async (Type: string, FID: number) => {
if
(
res
.
code
===
200
)
{
ElNotification
.
success
({
title
:
'添加'
,
message
:
Type
===
'
H
'
?
'添加人才库成功'
:
'添加人才储备成功'
message
:
Type
===
'
G
'
?
'添加人才库成功'
:
'添加人才储备成功'
}
)
}
}
...
...
src/views/recruitmentManagement/components/talent.vue
浏览文件 @
3f677b28
...
...
@@ -6,6 +6,13 @@
:label=
"item.status + ' ' + item.value"
:name=
"item.type"
>
<div
v-if=
"index === 6"
style=
"display: flex; justify-content: center"
>
<el-input
v-model=
"searchValue"
placeholder=
"搜索关键字"
@
change=
"search"
>
<template
#
suffix
>
<el-icon
size=
"24"
style=
"cursor: pointer"
@
click=
"search"
><i-ep-Search
/></el-icon>
</
template
>
</el-input>
</div>
<div
v-if=
"talentList.length"
>
<div
v-for=
"col in talentList"
:key=
"col.DeliverFID"
class=
"tab-item"
>
<div
class=
"tab-item-tp"
>
...
...
@@ -36,29 +43,45 @@
</div>
<div
class=
"tab-item-tp-rg"
>
<div
class=
"flx-align-center"
>
<
span
class
=
"info-label"
@
click
=
"talentStatusChange('B', col.DeliverFID)"
<span
v-show=
"index < 1 || index == 6 || index === 7"
class=
"info-label"
@
click=
"talentStatusChange('B', col.DeliverFID)"
>
简历待定
</span
>
<
span
class
=
"info-label"
@
click
=
"talentStatusChange('C', col.DeliverFID)"
<span
v-show=
"index < 2 || index == 6 || index === 7"
class=
"info-label"
@
click=
"talentStatusChange('C', col.DeliverFID)"
>
安排面试
</span
>
<
el
-
dropdown
>
<el-dropdown
v-show=
"index !== 5"
>
<span
class=
"info-label"
>
更多
</span>
<
template
#
dropdown
>
<el-dropdown-menu>
<
el
-
dropdown
-
item
@
click
=
"talentStatusChange('D', col.DeliverFID)"
<el-dropdown-item
v-if=
"index
<
3
||
index =
==
6
||
index =
==
7
"
@
click=
"talentStatusChange('D', col.DeliverFID)"
>
已面试
</el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
=
"talentStatusChange('E', col.DeliverFID)"
<el-dropdown-item
v-if=
"index
<
4
"
@
click=
"talentStatusChange('E', col.DeliverFID)"
>
已录用
</el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
=
"talentStatusChange('F', col.DeliverFID)"
<el-dropdown-item
v-if=
"index
<
5
"
@
click=
"talentStatusChange('F', col.DeliverFID)"
>
已入职
</el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
=
"talentStatusChange('G', col.DeliverFID)"
>
人才库
<
/el-dropdown-ite
m
<el-dropdown-item
v-if=
"index
<
6
"
@
click=
"talentStatusChange('G', col.DeliverFID)"
>
人才库
{{
index
}}
</el-dropdown-item
>
<
el
-
dropdown
-
item
@
click
=
"talentStatusChange('H', col.DeliverFID)"
<el-dropdown-item
v-if=
"index
<
7
"
@
click=
"talentStatusChange('H', col.DeliverFID)"
>
人才储备
</el-dropdown-item
>
</el-dropdown-menu>
...
...
@@ -117,6 +140,7 @@ import {
import
customPagination
from
'@/components/customPagination.vue'
import
previewResume
from
'./previewResume.vue'
const
searchValue
=
ref
(
''
)
const
activeName
=
ref
(
'A'
)
const
loading
=
ref
(
true
)
const
previewResumeShow
=
ref
(
false
)
...
...
@@ -156,6 +180,8 @@ const handleClick = (tab: any) => {
init
()
}
const
search
=
()
=>
{}
const
talentStatusChange
=
async
(
Type
:
string
,
DeliverFID
:
number
)
=>
{
const
data
=
{
DeliverFID
,
//投递记录id
...
...
@@ -268,4 +294,14 @@ defineExpose({
outline
:
0
!
important
;
}
}
:deep
(
.el-input
)
{
width
:
848px
;
height
:
62px
;
margin-bottom
:
24px
;
.el-input__wrapper
{
border-radius
:
29px
;
padding
:
0
45px
;
}
}
</
style
>
src/views/recruitmentManagement/components/userInfo.vue
浏览文件 @
3f677b28
...
...
@@ -109,6 +109,7 @@
<
script
setup
lang=
"ts"
>
import
{
updateResume
}
from
'@/services/api/recruitmentManagement'
import
{
jobStatus
}
from
'../config'
import
{
useUserInfoStore
}
from
'@/stores/modules/userInfo'
defineProps
({
show
:
{
...
...
@@ -119,6 +120,8 @@ defineProps({
const
emits
=
defineEmits
([
'update:show'
,
'init'
])
const
userInfoStore
=
useUserInfoStore
()
const
form
:
any
=
ref
({
NeedUpDateFields
:
[
'FName'
,
...
...
@@ -185,6 +188,12 @@ const onConfirm = async () => {
if
(
valid
)
{
const
res
:
any
=
await
updateResume
({
Parmeter
:
form
.
value
})
if
(
res
.
code
===
200
)
{
const
{
Jbdata
}
=
res
.
data
userInfoStore
.
personalInfo
.
AGE
=
Jbdata
.
Age
userInfoStore
.
personalInfo
.
FEDUCATIONBACKGROUND
=
Jbdata
.
FEducationBackground
userInfoStore
.
personalInfo
.
FNAME
=
Jbdata
.
FName
userInfoStore
.
personalInfo
.
FGOWORKCOUNT
=
Jbdata
.
FGoWorkCount
userInfoStore
.
personalInfo
.
FDEPARTREMAIN
=
Jbdata
.
FDepartRemain
ElNotification
.
success
({
title
:
'更新个人信息'
,
message
:
'更新成功'
...
...
src/views/recruitmentManagement/editResume.vue
浏览文件 @
3f677b28
...
...
@@ -44,13 +44,7 @@
<el-row>
<el-col
class=
"user-label flx-align-center"
:span=
"8"
>
<img
src=
"@/assets/img/icon-resume8.png"
width=
"16"
/>
<span>
{{
state
.
resumeData
?.
Jbdata
?.
FGoWorkCount
?
state
.
resumeData
?.
Jbdata
?.
FGoWorkCount
<
10
?
`工作${state.resumeData?.Jbdata?.FGoWorkCount
}
年`
:
'10年以上经验'
:
''
}}
<
/span
>
<span>
{{
experience
}}
</span>
</el-col>
<el-col
class=
"user-label flx-align-center"
:span=
"8"
>
<img
src=
"@/assets/img/icon-resume.png"
width=
"16"
/>
...
...
@@ -222,7 +216,11 @@
<
span
>
{{
item
.
FPosition
}}
<
/span
>
<
/div
>
<
div
>
<
span
:
id
=
"'work-date' + index"
style
=
"color: #666666"
>
{{
experience
}}
<
/span
>
<
span
:
id
=
"'work-date' + index"
style
=
"color: #666666"
>
{{
dayjs
(
item
.
FStartDate
).
format
(
'YYYY.MM'
)
}}
-
{{
dayjs
(
item
.
FEndDate
).
format
(
'YYYY.MM'
)
}}
<
/spa
n
>
<
div
:
id
=
"'edit-work' + index"
class
=
"flx-align-center"
...
...
@@ -291,7 +289,7 @@
<
div
>
<
span
:
id
=
"'project-date' + index"
style
=
"color: #666666"
>
{{
dayjs
(
item
.
FProjectStartDate
).
format
(
'YYYY.MM'
)
}}
-
{{
dayjs
(
item
.
FProject
Start
Date
).
format
(
'YYYY.MM'
)
dayjs
(
item
.
FProject
End
Date
).
format
(
'YYYY.MM'
)
}}
<
/spa
n
>
<
div
...
...
@@ -795,7 +793,7 @@ const userInfoClick = () => {
...
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
)
+
'****
'
FWechat
:
FWechat
?.
trim
()
?
FWechat
.
substring
(
0
,
3
)
+
'****'
:
'
'
}
state
.
userInfoShow
=
true
}
...
...
src/views/recruitmentManagement/enterpriseRecruitment.vue
浏览文件 @
3f677b28
...
...
@@ -41,7 +41,7 @@
</div>
</div>
<div
style=
"width: 391px"
>
<p
class=
"company-detail"
>
{{
userInfoStore
.
companyInfo
?.
FCOMPANYPROFILE
}}
</p
>
<p
re
class=
"company-detail"
>
{{
userInfoStore
.
companyInfo
?.
FCOMPANYPROFILE
}}
</pre
>
</div>
<div
class=
"flx-align-center"
>
<span
class=
"btn"
@
click=
"toEditCompany"
>
编辑公司信息
</span>
...
...
src/views/recruitmentManagement/index.vue
浏览文件 @
3f677b28
<
template
>
<div
class=
"main-container"
>
<div
v-loading=
"loading"
class=
"main-container"
>
<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
"
v-model:list=
"querySearch
"
v-model:valueKey=
"valueKey
"
placeholder=
"搜索职位、公司"
:selectOptions=
"[
{ label: '找工作', value: '1' },
{ label: '找企业', value: '2' }
]"
style="margin: 25px 0"
@search-change="searchChange"
@query-search-async="querySearchAsync"
/>
...
...
@@ -67,6 +72,8 @@
v-for=
"(item, index) in streetList"
:key=
"index"
:src=
"baseURL + '/' + item.FCOVERPICTURE"
style=
"cursor: pointer"
@
click=
"toStreet(item)"
/>
</div>
</div>
...
...
@@ -196,6 +203,7 @@ import {
import
{
getStreet
}
from
'@/services/api/streetOfficeSpecialTopic'
import
{
getPoster
}
from
'@/services/api/common'
import
{
useUserInfoStore
}
from
'@/stores/modules/userInfo'
import
{
getCompanyList
}
from
'@/services/api/recruitmentManagement'
import
autocomplete
from
'@/components/autocomplete.vue'
const
router
=
useRouter
()
...
...
@@ -203,11 +211,13 @@ const userInfoStore = useUserInfoStore()
const
menuList
=
ref
([]
as
any
)
const
FDATAVALUE
=
ref
()
const
loading
=
ref
(
true
)
const
streetList
=
ref
()
const
posterList
:
any
=
ref
([])
const
hotPositionList
:
any
=
ref
([])
const
hotCompanyList
:
any
=
ref
([])
const
querySearch
=
ref
([])
const
valueKey
=
ref
(
'JobName'
)
const
tabsList
=
[
{
label
:
'市场'
,
name
:
'LevelJob_18'
},
...
...
@@ -239,19 +249,32 @@ const handleClick = (tab: any, e: any) => {
initHotPosition
()
}
const
querySearchAsync
=
async
(
searchVal
:
string
)
=>
{
const
res
:
any
=
await
getUserPostionList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
FNAME
:
searchVal
}
})
if
(
res
.
code
===
200
)
{
querySearch
.
value
=
res
.
data
||
[]
const
querySearchAsync
=
async
(
searchVal
:
string
,
selectType
:
string
)
=>
{
if
(
selectType
===
'1'
)
{
const
res
:
any
=
await
getUserPostionList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
FNAME
:
searchVal
}
})
if
(
res
.
code
===
200
)
{
querySearch
.
value
=
res
.
data
||
[]
}
}
else
{
const
res
:
any
=
await
getCompanyList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
FNAME
:
searchVal
}
})
if
(
res
.
code
===
200
)
{
querySearch
.
value
=
res
.
data
||
[]
}
}
}
const
searchChange
=
(
searchValue
:
string
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/personal'
,
query
:
{
searchValue
}
})
const
searchChange
=
(
searchValue
:
string
,
selectType
:
string
)
=>
{
if
(
selectType
===
'1'
)
router
.
push
({
path
:
'/recruitmentManagement/personal'
,
query
:
{
searchValue
}
})
else
router
.
push
({
path
:
'/recruitmentManagement/seeMoreCompany'
,
query
:
{
searchValue
}
})
}
const
toSeeMorePosition
=
()
=>
{
...
...
@@ -262,6 +285,10 @@ const toSeeMoreCompany = () => {
router
.
push
({
path
:
'/recruitmentManagement/seeMoreCompany'
})
}
const
toStreet
=
(
row
:
any
)
=>
{
router
.
push
({
path
:
'/streetOfficeSpecialTopic'
,
query
:
{
FID
:
row
.
FID
}
})
}
const
subMenuList
=
computed
(()
=>
{
if
(
!
FDATAVALUE
.
value
)
return
[]
const
list
=
JSON
.
parse
(
JSON
.
stringify
(
menuList
.
value
))
||
[]
...
...
@@ -327,7 +354,7 @@ const init = async () => {
posterList
.
value
=
poster
.
data
||
[]
}
await
initHotPosition
()
await
initHotCompany
()
await
initHotCompany
()
.
then
(()
=>
(
loading
.
value
=
false
))
}
onMounted
(()
=>
{
...
...
src/views/recruitmentManagement/personalRecruitment.vue
浏览文件 @
3f677b28
...
...
@@ -5,9 +5,10 @@
<div
class=
"personal-header"
>
<autocomplete
ref=
"autocompleteRef"
style=
"margin-bottom: 22px
"
:list=
"querySearch
"
v-model:list=
"querySearch
"
v-model:valueKey=
"valueKey
"
placeholder=
"搜索关键字"
style=
"margin-bottom: 22px"
@
search-change=
"searchChange"
@
query-search-async=
"querySearchAsync"
/>
...
...
@@ -121,7 +122,11 @@
import
{
filterList
}
from
'./config/index'
import
{
getStreet
}
from
'@/services/api/streetOfficeSpecialTopic'
import
{
getInformation
}
from
'@/services/api/common'
import
{
getUserPostionList
,
sendResume
}
from
'@/services/api/recruitmentManagement'
import
{
getUserPostionList
,
sendResume
,
getCompanyList
}
from
'@/services/api/recruitmentManagement'
import
{
baseURL
}
from
'@/services'
import
customSelect
from
'@/components/customSelect.vue'
import
info
from
'./components/info.vue'
...
...
@@ -136,6 +141,7 @@ const filterLoading = ref(true)
const
streetList
=
ref
([]
as
any
)
const
informationData
=
ref
()
const
querySearch
=
ref
([])
const
valueKey
=
ref
(
'JobName'
)
const
queryList
=
ref
({
pageIndex
:
1
,
...
...
@@ -155,20 +161,33 @@ const total = ref(0)
const
userPostionList
:
any
=
ref
([])
const
querySearchAsync
=
async
(
searchVal
:
string
)
=>
{
const
res
:
any
=
await
getUserPostionList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
FNAME
:
searchVal
}
})
if
(
res
.
code
===
200
)
{
querySearch
.
value
=
res
.
data
||
[]
const
querySearchAsync
=
async
(
searchVal
:
string
,
selectType
:
string
)
=>
{
if
(
selectType
===
'1'
)
{
const
res
:
any
=
await
getUserPostionList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
FNAME
:
searchVal
}
})
if
(
res
.
code
===
200
)
{
querySearch
.
value
=
res
.
data
||
[]
}
}
else
{
const
res
:
any
=
await
getCompanyList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
FNAME
:
searchVal
}
})
if
(
res
.
code
===
200
)
{
querySearch
.
value
=
res
.
data
||
[]
}
}
}
const
searchChange
=
(
searchValue
:
string
)
=>
{
queryList
.
value
.
Filter
.
FNAME
=
searchValue
initUserPostionList
()
const
searchChange
=
(
searchValue
:
string
,
selectType
:
string
)
=>
{
if
(
selectType
===
'1'
)
{
queryList
.
value
.
Filter
.
FNAME
=
searchValue
initUserPostionList
()
}
else
router
.
push
({
path
:
'/recruitmentManagement/seeMoreCompany'
,
query
:
{
searchValue
}
})
}
const
streetChange
=
(
index
:
number
)
=>
{
...
...
src/views/recruitmentManagement/positionDetail.vue
浏览文件 @
3f677b28
...
...
@@ -202,7 +202,7 @@ const init = async () => {
const
res
:
any
=
await
getUserPostionDetail
({
FID
:
route
.
query
.
FID
})
if
(
res
.
code
===
200
)
{
detailData
.
value
=
res
.
data
console
.
log
(
detailData
.
value
?.
FWORKPLACE
)
//
console.log(detailData.value?.FWORKPLACE)
mapRef
.
value
.
initMap
(
detailData
.
value
?.
FWORKPLACE
)
loading
.
value
=
false
...
...
src/views/recruitmentManagement/seeMoreCompany.vue
浏览文件 @
3f677b28
...
...
@@ -87,7 +87,7 @@
</div>
</div>
<div
v-if=
"item.JobS && item.JobS?.length"
class=
"company-bt-btn"
>
<span
@
click=
"to
SeeMorePosition"
>
查看更多职位
</span>
<span
@
click=
"to
CompanyDetail(item.FirmFID)"
>
点击查看更多
</span>
</div>
</div>
</div>
...
...
@@ -107,10 +107,11 @@
<
script
setup
lang=
"ts"
>
import
{
getInformation
}
from
'@/services/api/common'
import
{
getStreet
}
from
'@/services/api/streetOfficeSpecialTopic'
import
{
ge
n
CompanyList
}
from
'@/services/api/recruitmentManagement'
import
{
ge
t
CompanyList
}
from
'@/services/api/recruitmentManagement'
import
{
baseURL
}
from
'@/services'
import
customPagination
from
'@/components/customPagination.vue'
const
route
=
useRoute
()
const
router
=
useRouter
()
const
queryList
=
ref
({
...
...
@@ -192,7 +193,7 @@ const clear = () => {
}
const
querySearchAsync
=
async
(
queryString
:
string
,
cb
:
(
arg
:
any
)
=>
void
)
=>
{
const
res
:
any
=
await
ge
n
CompanyList
({
const
res
:
any
=
await
ge
t
CompanyList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
...
...
@@ -210,7 +211,7 @@ const querySearchAsync = async (queryString: string, cb: (arg: any) => void) =>
const
initCompanyList
=
async
()
=>
{
loading
.
value
=
true
const
res
:
any
=
await
ge
n
CompanyList
(
queryList
.
value
)
const
res
:
any
=
await
ge
t
CompanyList
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
companyList
.
value
=
res
.
data
||
[]
queryList
.
value
.
total
=
res
.
total
...
...
@@ -219,6 +220,8 @@ const initCompanyList = async () => {
}
const
init
=
async
()
=>
{
const
{
searchValue
}
=
route
.
query
if
(
searchValue
)
queryList
.
value
.
Filter
.
FNAME
=
searchValue
const
res
:
any
=
await
getInformation
({
AuxiliaryS
:
[
'Trade'
,
'Member'
,
'Financing'
]
})
...
...
src/views/recruitmentManagement/seeMorePosition.vue
浏览文件 @
3f677b28
...
...
@@ -23,7 +23,7 @@
{{
item
.
FDATAVALUE
}}
</div>
<div
v-show=
"expectedPositionList.length > 3"
v-show=
"
!expectedPositionList.length ||
expectedPositionList.length > 3"
class=
"flx-align-center"
style=
"padding-left: 24px; border-left: 1px solid #cccccc"
@
click=
"toEditResume"
...
...
src/views/recruitmentManagement/style/enterprise.scss
浏览文件 @
3f677b28
...
...
@@ -87,16 +87,17 @@
}
.company-detail
{
width
:
391px
;
height
:
24
3
px
;
height
:
24
5
px
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#666666
;
margin
:
24px
0
20px
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
1
5
;
-webkit-line-clamp
:
1
3
;
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
white-space
:
pre-wrap
;
}
.btn
{
display
:
block
;
...
...
src/views/specialRecruitment/home.vue
0 → 100644
浏览文件 @
3f677b28
<
template
>
<div
class=
"container"
>
<div
class=
"header"
>
<div
style=
"width: 1316px; justify-content: space-between"
class=
"flx-align-center"
>
<div
class=
"flx-align-center"
>
<span
class=
"title"
>
东西部协作就业平台
</span>
<span
class=
"link"
@
click=
"router.push('/')"
>
首页
</span>
</div>
<span
class=
"link"
@
click=
"show = true"
>
登录/注册
</span>
</div>
</div>
</div>
<loginVue
v-model:show=
"show"
/>
</
template
>
<
script
lang=
"ts"
setup
>
import
loginVue
from
'@/views/login/index.vue'
const
router
=
useRouter
()
const
show
=
ref
(
false
)
</
script
>
<
style
lang=
"scss"
scoped
>
.container
{
// display: flex;
// flex-direction: column;
// align-items: center;
.header
{
height
:
80px
;
background
:
#022756
;
box-sizing
:
border-box
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
.title
{
height
:
42px
;
font-size
:
28px
;
font-weight
:
500
;
color
:
#ffffff
;
margin-right
:
50px
;
}
.link
{
cursor
:
pointer
;
color
:
#177cfa
;
}
}
}
</
style
>
src/views/specialRecruitment/index.vue
浏览文件 @
3f677b28
...
...
@@ -6,7 +6,13 @@
<div
class=
"special-title nowrap-ellipsis"
:title=
"item.FNAME"
>
{{
item
.
FNAME
}}
</div>
<div
class=
"special-detail"
>
{{
item
.
FSUBTITLE
}}
</div>
<div
class=
"flx-justify-between"
>
<span
v-show=
"!item.FSTATE"
class=
"special-tag"
style=
"cursor: pointer"
>
进入专题
</span>
<span
v-show=
"!item.FSTATE"
class=
"special-tag"
style=
"cursor: pointer"
@
click=
"toSpecialHome"
>
进入专题
</span
>
<span
v-show=
"item.FSTATE"
class=
"special-tag"
style=
"color: #666666; background: #f8f8f8"
>
专题已结束
</span
>
...
...
@@ -25,10 +31,15 @@
import
{
baseURL
}
from
'@/services'
import
{
getSpecialRecruitment
}
from
'@/services/api/specialRecruitment'
const
router
=
useRouter
()
const
queryList
=
ref
({
pageIndex
:
1
,
pageSize
:
10
})
const
specialRecruitmentData
=
ref
()
const
loading
=
ref
(
true
)
const
toSpecialHome
=
()
=>
{
router
.
push
(
'/specialRecruitment/home'
)
}
const
init
=
async
()
=>
{
const
res
:
any
=
await
getSpecialRecruitment
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
...
...
src/views/streetOfficeSpecialTopic/index.vue
浏览文件 @
3f677b28
...
...
@@ -120,7 +120,7 @@
<
/div
>
<
/div
>
<
/div
>
<
span
class
=
"n-more"
>
查看更多
<
/span
>
<
span
class
=
"n-more"
@
click
=
"toSeeMoreCompany"
>
查看更多
<
/span
>
<
/div
>
<
/div
>
<
/div
>
...
...
@@ -188,6 +188,10 @@ const toCompanyDetail = (FID: number) => {
router
.
push
({
path
:
'/recruitmentManagement/companyDetail'
,
query
:
{
FID
}
}
)
}
const
toSeeMoreCompany
=
()
=>
{
router
.
push
({
path
:
'/recruitmentManagement/seeMoreCompany'
}
)
}
const
change
=
(
FID
:
string
)
=>
{
streetActive
.
value
=
FID
initStreetPosition
()
...
...
vite.config.ts
浏览文件 @
3f677b28
...
...
@@ -75,8 +75,8 @@ export default defineConfig({
// 设置代理
proxy
:
{
'/K3Cloud'
:
{
//
target: 'http://192.168.1.168',
target
:
'http://14.29.230.199:84/'
,
target
:
'http://192.168.1.168'
,
//
target: 'http://14.29.230.199:84/',
changeOrigin
:
true
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论