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
ca2001b3
提交
ca2001b3
authored
12月 12, 2023
作者:
刘旭
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
西部人力初步上线
上级
155e06ea
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
39 个修改的文件
包含
1012 行增加
和
173 行删除
+1012
-173
settings.json
.vscode/settings.json
+5
-5
vite.svg
public/vite.svg
+0
-2
imgUrl.ts
src/assets/imgUrl.ts
+0
-5
RichTextEditor.vue
src/components/RichTextEditor.vue
+2
-1
commonItem.vue
src/components/commonItem.vue
+85
-0
contentBlock.vue
src/components/contentBlock.vue
+5
-3
customSelect.vue
src/components/customSelect.vue
+1
-0
previewFile.vue
src/components/previewFile.vue
+2
-1
search.vue
src/components/search.vue
+2
-2
recruitmentManagement.ts
src/services/api/recruitmentManagement.ts
+44
-1
skillTraining.ts
src/services/api/skillTraining.ts
+0
-7
index.ts
src/services/index.ts
+3
-0
index.scss
src/views/collegeStudents/index.scss
+130
-1
index.vue
src/views/collegeStudents/index.vue
+0
-0
index.vue
src/views/login/index.vue
+41
-25
index.scss
src/views/policy/index.scss
+1
-1
index.vue
src/views/policy/index.vue
+1
-1
companyDetail.vue
src/views/recruitmentManagement/companyDetail.vue
+0
-0
morePosition.vue
src/views/recruitmentManagement/components/morePosition.vue
+0
-0
position.vue
src/views/recruitmentManagement/components/position.vue
+19
-16
previewResume.vue
src/views/recruitmentManagement/components/previewResume.vue
+48
-3
resume.vue
src/views/recruitmentManagement/components/resume.vue
+0
-0
talent.vue
src/views/recruitmentManagement/components/talent.vue
+15
-7
index.ts
src/views/recruitmentManagement/config/index.ts
+24
-0
editCompany.vue
src/views/recruitmentManagement/editCompany.vue
+2
-2
editResume.vue
src/views/recruitmentManagement/editResume.vue
+29
-1
enterpriseRecruitment.vue
src/views/recruitmentManagement/enterpriseRecruitment.vue
+6
-5
index.vue
src/views/recruitmentManagement/index.vue
+7
-4
personalRecruitment.vue
src/views/recruitmentManagement/personalRecruitment.vue
+7
-8
positionDetail.vue
src/views/recruitmentManagement/positionDetail.vue
+3
-24
seeMoreCompany.vue
src/views/recruitmentManagement/seeMoreCompany.vue
+250
-3
seeMorePosition.vue
src/views/recruitmentManagement/seeMorePosition.vue
+97
-35
companyDetail.scss
src/views/recruitmentManagement/style/companyDetail.scss
+4
-0
editResume.scss
src/views/recruitmentManagement/style/editResume.scss
+2
-1
enterprise.scss
src/views/recruitmentManagement/style/enterprise.scss
+2
-2
seeMoreCompany.scss
src/views/recruitmentManagement/style/seeMoreCompany.scss
+165
-0
index.vue
src/views/streetOfficeSpecialTopic/index.vue
+7
-3
components.d.ts
types/components.d.ts
+1
-3
vite.config.ts
vite.config.ts
+2
-1
没有找到文件。
.vscode/settings.json
浏览文件 @
ca2001b3
//
根目录下新建.vscode/settings.json文件
//
settings.json
{
"editor.formatOnType"
:
true
,
"editor.formatOnSave"
:
true
,
"editor.codeActionsOnSave"
:
{
"source.fixAll.eslint"
:
true
}
"editor.formatOnType"
:
true
,
"editor.formatOnSave"
:
true
,
"editor.codeActionsOnSave"
:
{
"source.fixAll.eslint"
:
true
}
}
public/vite.svg
deleted
100644 → 0
浏览文件 @
155e06ea
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
aria-hidden=
"true"
role=
"img"
class=
"iconify iconify--logos"
width=
"31.88"
height=
"32"
preserveAspectRatio=
"xMidYMid meet"
viewBox=
"0 0 256 257"
><defs><linearGradient
id=
"IconifyId1813088fe1fbc01fb466"
x1=
"-.828%"
x2=
"57.636%"
y1=
"7.652%"
y2=
"78.411%"
><stop
offset=
"0%"
stop-color=
"#41D1FF"
></stop><stop
offset=
"100%"
stop-color=
"#BD34FE"
></stop></linearGradient><linearGradient
id=
"IconifyId1813088fe1fbc01fb467"
x1=
"43.376%"
x2=
"50.316%"
y1=
"2.242%"
y2=
"89.03%"
><stop
offset=
"0%"
stop-color=
"#FFEA83"
></stop><stop
offset=
"8.333%"
stop-color=
"#FFDD35"
></stop><stop
offset=
"100%"
stop-color=
"#FFA800"
></stop></linearGradient></defs><path
fill=
"url(#IconifyId1813088fe1fbc01fb466)"
d=
"M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"
></path><path
fill=
"url(#IconifyId1813088fe1fbc01fb467)"
d=
"M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"
></path></svg>
\ No newline at end of file
src/assets/imgUrl.ts
deleted
100644 → 0
浏览文件 @
155e06ea
export
const
imgUrl
=
'https://x0.ifengimg.com/res/2021/D19180EA4230E6F277709FE11A4FE1EA4A5910A1_size646_w2048_h1365.jpeg'
export
const
imgUrl1
=
'https://img1.baidu.com/it/u=3125581720,366739733&fm=253&fmt=auto&app=138&f=JPEG?w=1080&h=460'
src/components/RichTextEditor.vue
浏览文件 @
ca2001b3
...
...
@@ -117,7 +117,8 @@ const handleCreated = (editor: any) => {
}
const
mouseout
=
()
=>
{
if
(
!
flag
.
value
||
valueHtml
.
value
===
'<p><br></p>'
)
return
// if (!flag.value || valueHtml.value === '
<
p
><
br
><
/p>'
)
retur
n
if
(
!
flag
.
value
)
return
// console.log('change', valueHtml.value)
// 存储当前的文件名数组
let
newList
=
[]
as
string
[]
...
...
src/components/commonItem.vue
0 → 100644
浏览文件 @
ca2001b3
<
template
>
<div
v-if=
"isDual"
class=
"common-box"
>
<div
class=
"common-content"
></div>
<div
class=
"trapezoid"
></div>
<span
class=
"common-text"
:title=
"text"
>
{{
text
}}
</span>
</div>
<div
v-else
class=
"common-box dual-common-box"
>
<div
class=
"common-content dual-common-content"
></div>
<div
class=
"trapezoid dual-trapezoid"
></div>
<span
class=
"common-text"
style=
"color: #ffffff"
:title=
"text"
>
{{
text
}}
</span>
</div>
</
template
>
<
script
setup
lang=
"ts"
>
defineProps
({
isDual
:
{
type
:
Boolean
,
default
:
true
},
text
:
{
type
:
String
,
default
:
''
}
})
</
script
>
<
style
lang=
"scss"
scoped
>
.common-box
{
cursor
:
pointer
;
position
:
relative
;
width
:
422px
;
height
:
200px
;
background
:
#ffffff
;
border-radius
:
12px
;
padding
:
16px
;
box-sizing
:
border-box
;
.common-content
{
width
:
390px
;
height
:
168px
;
border-radius
:
12px
;
border
:
1px
solid
#177cfa
;
}
.trapezoid
{
position
:
absolute
;
width
:
100px
;
height
:
0
;
left
:
-31px
;
bottom
:
31px
;
border-bottom
:
25px
solid
#a3e4ff
;
border-left
:
25px
solid
transparent
;
border-right
:
25px
solid
transparent
;
transform
:
rotate
(
225deg
);
}
.common-text
{
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
color
:
#177cfa
;
font-size
:
30px
;
width
:
300px
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
}
}
.dual-common-box
{
background
:
#177cfa
;
color
:
#ffffff
;
.dual-common-content
{
border
:
1px
solid
#ffffff
;
}
.dual-trapezoid
{
background
:
linear-gradient
(
180deg
,
#a3e4ff
0%
,
#5b9cff
100%
);
}
}
</
style
>
src/components/contentBlock.vue
浏览文件 @
ca2001b3
<
template
>
<div
class=
"content-container"
>
<div
v-for=
"(item, index) in list"
:key=
"index"
class=
"content-item"
@
click=
"change(item)"
>
<img
:src=
"baseURL + '/' + item?.FPICTURE"
height=
"238"
/>
<div
class=
"detail nowrap-ellipsis"
:title=
"item.FTITLE"
>
{{
item
.
FTITLE
}}
</div>
<!--
<img
:src=
"baseURL + '/' + item?.FPICTURE"
height=
"238"
/>
<div
class=
"detail nowrap-ellipsis"
:title=
"item.FTITLE"
>
{{
item
.
FTITLE
}}
</div>
-->
<commonItem
:is-dual=
"index % 6
<
3
"
:text=
"item.FTITLE"
/>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
baseURL
}
from
'@/services'
// import { baseURL } from '@/services'
import
commonItem
from
'@/components/commonItem.vue'
defineProps
({
list
:
{
...
...
src/components/customSelect.vue
浏览文件 @
ca2001b3
...
...
@@ -101,6 +101,7 @@ const handleChange = (item: any) => {
font-weight
:
400
;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
background-color
:
#f8f8f8
;
color
:
#222222
;
cursor
:
pointer
;
...
...
src/components/previewFile.vue
浏览文件 @
ca2001b3
...
...
@@ -12,7 +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://192.168.1.168' + url)
'http://view.xdocin.com/xdoc?_xdoc=' + encodeURIComponent('http://14.29.230.199:84' + url)
"
/>
<vue-office-pdf
...
...
src/components/search.vue
浏览文件 @
ca2001b3
...
...
@@ -6,7 +6,7 @@
class=
"input-with-select"
@
change=
"handleSearch"
>
<template
#
prefix
>
<
!--
<
template
#
prefix
>
<el-select
v-model=
"selectValue"
placeholder=
""
>
<el-option
v-for=
"(item, index) in selectOptions"
...
...
@@ -15,7 +15,7 @@
:value=
"item.value"
/>
</el-select>
</
template
>
</
template
>
-->
<
template
#
suffix
>
<el-icon
size=
"25"
style=
"cursor: pointer"
@
click=
"handleSearch"
><i-ep-Search
/></el-icon>
</
template
>
...
...
src/services/api/recruitmentManagement.ts
浏览文件 @
ca2001b3
...
...
@@ -104,6 +104,13 @@ export const getResume = () => {
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeResumeInfoGR,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
)
}
// 查看个人简历
export
const
getResumeInfo
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SeResumeInfo,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
// 个人用户修改简历信息
export
const
updateResume
=
(
data
:
any
)
=>
{
return
request
.
post
(
...
...
@@ -158,10 +165,46 @@ export const getTalentResume = (data: any) => {
)
}
//
企业人才管理简历查询
//
简历搜索/简历推荐
export
const
getResumeSearch
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.ResumeSearch,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
// 简历搜索/简历推荐
export
const
setTalentPool
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiEditService.CorporateResume,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
// 简历搜索/简历推荐
export
const
genCompanyList
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SearchEnterprise,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
// 用户查看公司详情
export
const
getCompanyDetail
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.CorporatePosition,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
// 查看公司职位列表
export
const
getCompanyPosition
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.EnterpriseJobs,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
// 查看用户期望职位
export
const
getDesirePosition
=
()
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.HotJobPage,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
)
}
src/services/api/skillTraining.ts
浏览文件 @
ca2001b3
...
...
@@ -14,10 +14,3 @@ export const getSkillTrainingList = (data: any) => {
data
)
}
export
const
getPolicyList
=
(
data
:
any
)
=>
{
return
request
.
post
(
'/LQKJ.K3.NSJYBSystem.WebApi.WebApiService.SePolicyNotice,LQKJ.K3.NSJYBSystem.WebApi.common.kdsvc'
,
data
)
}
src/services/index.ts
浏览文件 @
ca2001b3
...
...
@@ -86,6 +86,7 @@ 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
)
{
...
...
@@ -113,10 +114,12 @@ 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
)
ElMessage
.
error
(
'网络错误!请您稍后重试'
)
// 根据响应的错误状态码,做不同的处理
if
(
response
)
this
.
handleCode
(
response
.
status
)
// 服务器结果都没有返回(可能服务器错误可能客户端断网),断网处理:可以跳转到断网页面
...
...
src/views/collegeStudents/index.scss
浏览文件 @
ca2001b3
...
...
@@ -24,7 +24,7 @@
display
:
flex
;
flex-wrap
:
wrap
;
.student-item
{
width
:
calc
((
100%
-
32px
)
/
3
)
;
cursor
:
pointer
;
flex
:
0
0
calc
((
100%
-
32px
)
/
3
);
margin
:
0
16px
24px
0
;
box-sizing
:
border-box
;
...
...
@@ -62,6 +62,135 @@
font-weight
:
400
;
color
:
#000000
;
}
.employment-policy
{
border-radius
:
12px
;
background-color
:
#ffffff
;
padding
:
20px
24px
;
.employment-policy-list
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
start
;
font-size
:
16px
;
.poliy-item
{
margin-bottom
:
16px
;
.poliy-item-order
{
display
:
inline-block
;
width
:
16px
;
height
:
14px
;
line-height
:
14px
;
text-align
:
center
;
background
:
#f8f8f8
;
color
:
#999999
;
border-radius
:
2px
2px
2px
2px
;
font-size
:
12px
;
font-family
:
Roboto
,
Roboto
;
font-weight
:
400
;
margin-right
:
4px
;
}
.poliy-item-postorder
{
background
:
linear-gradient
(
90deg
,
#177cfa
0%
,
#177cfa
100%
);
color
:
#ffffff
;
}
}
}
}
.hot-company
{
width
:
1316px
;
text-align
:
center
;
margin-bottom
:
64px
;
img
{
width
:
50px
;
height
:
50px
;
}
.company-list
{
display
:
flex
;
flex-wrap
:
wrap
;
margin-top
:
24px
;
.company-item
{
display
:
flex
;
flex-direction
:
column
;
cursor
:
pointer
;
width
:
calc
((
100%
-
32px
)
/
3
);
flex
:
0
0
calc
((
100%
-
32px
)
/
3
);
margin
:
0
16px
16px
0
;
background
:
#ffffff
;
border-radius
:
12px
;
box-sizing
:
border-box
;
&
:nth-child
(
3n
)
{
margin-right
:
0
;
}
.company-tp
{
background
:
linear-gradient
(
90deg
,
#e3f0ff
0%
,
rgba
(
227
,
240
,
255
,
0
.15
)
100%
);
border-radius
:
12px
12px
0px
0px
;
padding
:
26px
21px
;
display
:
flex
;
.company-tp-rg
{
margin-left
:
21px
;
height
:
50px
;
}
}
.company-bt
{
flex
:
1
;
padding
:
26px
20px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-between
;
.company-position-list
{
.company-position-item
{
margin-bottom
:
24px
;
cursor
:
pointer
;
.hot-position-item-ft
{
margin-top
:
16px
;
display
:
flex
;
span
{
padding
:
6px
12px
;
height
:
24px
;
background
:
#f8f8f8
;
border-radius
:
4px
;
line-height
:
24px
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#666666
;
margin-right
:
8px
;
&
:first-child
{
width
:
45%
;
text-align
:
left
;
}
}
}
}
}
.company-bt-btn
{
width
:
100%
;
display
:
flex
;
justify-content
:
center
;
cursor
:
pointer
;
span
{
display
:
block
;
width
:
136px
;
height
:
38px
;
line-height
:
38px
;
text-align
:
center
;
border-radius
:
8px
;
border
:
1px
solid
#177cfa
;
color
:
#177cfa
;
font-size
:
16px
;
font-weight
:
400
;
}
}
}
}
}
}
.live-broadcast
{
display
:
flex
;
flex-wrap
:
wrap
;
...
...
src/views/collegeStudents/index.vue
浏览文件 @
ca2001b3
差异被折叠。
点击展开。
src/views/login/index.vue
浏览文件 @
ca2001b3
...
...
@@ -41,7 +41,11 @@
</el-input>
</el-form-item>
</el-form>
<el-button
type=
"primary"
style=
"width: 100%; margin-top: 46px"
@
click=
"onConfirm"
<el-button
type=
"primary"
:loading=
"loading"
style=
"width: 100%; margin-top: 46px"
@
click=
"onConfirm"
>
登录/注册
</el-button
>
</div>
...
...
@@ -76,6 +80,7 @@ const props = defineProps({
const
emits
=
defineEmits
([
'update:show'
])
const
globalStore
=
useGlobalStore
()
const
userInfoStore
=
useUserInfoStore
()
const
loading
=
ref
(
false
)
const
formRef
=
ref
()
const
state
=
reactive
({
...
...
@@ -140,33 +145,44 @@ const onConfirm = () => {
if
(
!
state
.
agreeWith
)
return
ElMessage
.
warning
(
'请先同意授权!'
)
formRef
.
value
?.
validate
(
async
(
valid
:
boolean
,
fields
:
any
)
=>
{
if
(
valid
)
{
const
params
=
{
Phone
:
state
.
loginForm
.
Phone
,
Code
:
state
.
loginForm
.
Code
,
EnCode
:
state
.
EnCode
,
Type
:
state
.
userType
===
'个人用户'
?
'GR'
:
'QY'
// 企业:QY 个人:GR
}
const
res
:
any
=
await
loginSign
(
params
)
if
(
res
.
code
===
200
)
{
if
(
state
.
userType
===
'个人用户'
)
{
userInfoStore
.
setCompanyInfo
({})
userInfoStore
.
setPersonalInfo
(
res
.
data
)
}
else
{
userInfoStore
.
setPersonalInfo
({})
userInfoStore
.
setCompanyInfo
(
res
.
data
)
try
{
loading
.
value
=
true
const
params
=
{
Phone
:
state
.
loginForm
.
Phone
,
FNAME
:
state
.
loginForm
.
Company
,
Code
:
state
.
loginForm
.
Code
,
EnCode
:
state
.
EnCode
,
Type
:
state
.
userType
===
'个人用户'
?
'GR'
:
'QY'
// 企业:QY 个人:GR
}
const
res
:
any
=
await
loginSign
(
params
)
if
(
res
.
code
===
200
)
{
if
(
state
.
userType
===
'个人用户'
)
{
userInfoStore
.
setCompanyInfo
({})
userInfoStore
.
setPersonalInfo
(
res
.
data
)
}
else
{
userInfoStore
.
setPersonalInfo
({})
userInfoStore
.
setCompanyInfo
(
res
.
data
)
}
globalStore
.
setToken
(
res
.
data
.
Token
)
handleClose
()
ElMessage
.
success
(
'登录成功'
)
}
else
if
(
res
.
code
===
502
)
{
router
.
push
({
path
:
'/recruitmentManagement/editCompany'
,
query
:
{
register
:
1
,
companyName
:
state
.
loginForm
.
Company
,
phone
:
state
.
loginForm
.
Phone
}
})
handleClose
()
ElMessage
.
warning
(
res
.
msg
)
}
globalStore
.
setToken
(
res
.
data
.
Token
)
handleClose
()
ElMessage
.
success
(
'登录成功'
)
}
else
if
(
res
.
code
===
502
)
{
router
.
push
({
path
:
'/recruitmentManagement/editCompany'
,
query
:
{
register
:
1
,
companyName
:
state
.
loginForm
.
Company
,
phone
:
state
.
loginForm
.
Phone
}
})
handleClose
()
ElMessage
.
warning
(
res
.
msg
)
}
catch
(
error
)
{
loading
.
value
=
false
}
}
else
{
loading
.
value
=
false
console
.
log
(
'error submit!'
,
fields
)
}
})
...
...
src/views/policy/index.scss
浏览文件 @
ca2001b3
...
...
@@ -13,7 +13,7 @@
height
:
62px
;
margin-bottom
:
24px
;
.el-input
{
width
:
8
69
px
;
width
:
8
48
px
;
height
:
62px
;
margin-bottom
:
24px
;
.el-input__wrapper
{
...
...
src/views/policy/index.vue
浏览文件 @
ca2001b3
...
...
@@ -65,7 +65,7 @@ const querySearchAsync = async (queryString: string, cb: (arg: any) => void) =>
FTITLE
:
searchValue
.
value
})
if
(
res
.
code
===
200
)
{
let
results
=
res
.
data
let
results
=
res
.
data
||
[]
clearTimeout
(
timeout
)
timeout
=
setTimeout
(()
=>
{
cb
(
results
)
...
...
src/views/recruitmentManagement/companyDetail.vue
浏览文件 @
ca2001b3
差异被折叠。
点击展开。
src/views/recruitmentManagement/components/morePosition.vue
浏览文件 @
ca2001b3
差异被折叠。
点击展开。
src/views/recruitmentManagement/components/position.vue
浏览文件 @
ca2001b3
...
...
@@ -8,7 +8,7 @@
<span
v-for=
"(item, index) in positionList"
:key=
"index"
:class=
"
positionQuery
.FPOSITIONSTATUS === item.type ? 'tag-active' : ''"
:class=
"
queryList
.FPOSITIONSTATUS === item.type ? 'tag-active' : ''"
@
click=
"tagChange(item)"
>
{{
item
.
name
}}
</span
>
...
...
@@ -45,15 +45,14 @@
<span
@
click=
"deletePosition(item)"
>
删除
</span>
</div>
</div>
<customPagination
:pageSize=
"queryList.pageSize"
:pageIndex=
"queryList.pageIndex"
:total=
"queryList.total"
@
current-change=
"currentChange"
/>
</div>
<el-empty
v-else
description=
"暂未添加职位"
/>
<el-pagination
background
layout=
"->, prev, pager, next"
:total=
"total"
hide-on-single-page
style=
"margin-top: 15px"
/>
</div>
<previewPosition
v-model:show=
"previewShow"
:position-item=
"positionDetailData"
/>
</
template
>
...
...
@@ -68,22 +67,28 @@ import {
deleteCompanyPosition
}
from
'@/services/api/recruitmentManagement'
import
previewPosition
from
'./previewPosition.vue'
import
customPagination
from
'@/components/customPagination.vue'
const
router
=
useRouter
()
const
loading
=
ref
(
true
)
const
previewShow
=
ref
(
false
)
const
total
=
ref
(
0
)
const
positionQuery
=
ref
({
const
queryList
=
ref
({
pageIndex
:
1
,
pageSize
:
10
,
FPOSITIONSTATUS
:
''
//A开放,B关闭,空全部
FPOSITIONSTATUS
:
''
,
//A开放,B关闭,空全部
total
:
0
})
const
positionData
:
any
=
ref
([])
const
positionDetailData
:
any
=
ref
([])
const
tagChange
=
(
row
:
any
)
=>
{
positionQuery
.
value
.
FPOSITIONSTATUS
=
row
.
type
queryList
.
value
.
FPOSITIONSTATUS
=
row
.
type
initCompanyPositionList
()
}
const
currentChange
=
(
pageIndex
:
number
)
=>
{
queryList
.
value
.
pageIndex
=
pageIndex
initCompanyPositionList
()
}
...
...
@@ -143,18 +148,16 @@ const deletePosition = (row: any) => {
const
initCompanyPositionDetail
=
async
(
FID
:
string
)
=>
{
const
res
:
any
=
await
getCompanyPositionDetail
({
FID
})
// console.log(res)
if
(
res
.
code
===
200
)
{
positionDetailData
.
value
=
res
.
data
}
}
const
initCompanyPositionList
=
async
()
=>
{
loading
.
value
=
true
const
res
:
any
=
await
getCompanyPositionList
(
positionQuery
.
value
)
// console.log(res)
const
res
:
any
=
await
getCompanyPositionList
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
positionData
.
value
=
res
.
data
||
[]
total
.
value
=
res
.
total
queryList
.
value
.
total
=
res
.
total
loading
.
value
=
false
}
}
...
...
src/views/recruitmentManagement/components/previewResume.vue
浏览文件 @
ca2001b3
...
...
@@ -154,6 +154,22 @@
</div>
</div>
</div>
<div
v-if=
"isCompany"
class=
"flx-center"
>
<span
class=
"btn"
@
click=
"talentStatusChange('B')"
>
简历待定
</span>
<span
class=
"btn"
@
click=
"talentStatusChange('C')"
>
安排面试
</span>
<el-dropdown>
<span
class=
"btn"
>
更多
</span>
<template
#
dropdown
>
<el-dropdown-menu>
<el-dropdown-item
@
click=
"talentStatusChange('D')"
>
已面试
</el-dropdown-item>
<el-dropdown-item
@
click=
"talentStatusChange('E')"
>
已录用
</el-dropdown-item>
<el-dropdown-item
@
click=
"talentStatusChange('F')"
>
已入职
</el-dropdown-item>
<el-dropdown-item
@
click=
"talentStatusChange('G')"
>
人才库
</el-dropdown-item>
<el-dropdown-item
@
click=
"talentStatusChange('H')"
>
人才储备
</el-dropdown-item>
</el-dropdown-menu>
</
template
>
</el-dropdown>
</div>
</div>
</el-dialog>
...
...
@@ -171,7 +187,7 @@ import { baseURL } from '@/services'
import
dayjs
from
'dayjs'
import
previewFile
from
'@/components/previewFile.vue'
defineProps
({
const
props
=
defineProps
({
show
:
{
type
:
Boolean
,
defualt
:
false
...
...
@@ -179,10 +195,18 @@ defineProps({
data
:
{
type
:
Object
,
default
:
()
=>
{}
},
isCompany
:
{
type
:
Boolean
,
default
:
false
},
deliverFID
:
{
type
:
String
,
default
:
''
}
})
const
emits
=
defineEmits
([
'update:show'
])
const
emits
=
defineEmits
([
'update:show'
,
'status-change'
])
const
state
=
reactive
({
previewFileShow
:
false
,
previewTitle
:
''
,
...
...
@@ -196,7 +220,12 @@ const selectDepartRemain = (departRemain: string) => {
return
row
?
row
.
label
:
jobStatus
[
3
].
label
}
// 预览简历
const
talentStatusChange
=
async
(
Type
:
string
)
=>
{
emits
(
'status-change'
,
Type
,
props
.
deliverFID
)
handleClose
()
}
// 预览文件
const
openFile
=
(
row
:
any
)
=>
{
state
.
fileSuffix
=
row
.
FATTACHMENTNAME
.
split
(
'.'
)[
row
.
FATTACHMENTNAME
.
split
(
'.'
).
length
-
1
]
state
.
fileUrl
=
baseURL
+
'/'
+
row
.
FFILEIDURL
...
...
@@ -273,6 +302,22 @@ const handleClose = () => {
color
:
#666666
;
}
}
.btn
{
display
:
inline-block
;
width
:
130px
;
height
:
40px
;
line-height
:
40px
;
text-align
:
center
;
background
:
#177cfa
;
border-radius
:
4px
;
opacity
:
1
;
border
:
1px
solid
rgba
(
23
,
124
,
250
,
1
);
margin-right
:
48px
;
font-size
:
16px
;
color
:
#ffffff
;
cursor
:
pointer
;
}
}
pre
{
white-space
:
pre-wrap
;
...
...
src/views/recruitmentManagement/components/resume.vue
浏览文件 @
ca2001b3
差异被折叠。
点击展开。
src/views/recruitmentManagement/components/talent.vue
浏览文件 @
ca2001b3
...
...
@@ -9,7 +9,7 @@
<div
v-if=
"talentList.length"
>
<div
v-for=
"col in talentList"
:key=
"col.DeliverFID"
class=
"tab-item"
>
<div
class=
"tab-item-tp"
>
<div
class=
"tab-item-tp-lf"
@
click=
"openResume"
>
<div
class=
"tab-item-tp-lf"
@
click=
"openResume
(col)
"
>
<el-avatar
:src=
"baseURL + '/' + col.FPHOTOS"
size=
"large"
/>
<div
class=
"user-info"
>
<div>
{{
col
.
UserName
}}
</div>
...
...
@@ -79,11 +79,12 @@
<
el
-
divider
direction
=
"vertical"
/>
<
span
class
=
"user-label"
>
{{
col
.
FSPECIALTY
}}
<
/span
>
<
/div
>
<
div
>
<
div
v
-
if
=
"col.FDELIVERYTIME"
>
<
span
class
=
"user-label"
>
{{
col
.
JobName
}}
<
/span
>
<
el
-
divider
direction
=
"vertical"
/>
<
span
class
=
"user-label"
>
{{
col
.
FDELIVERYTIME
}}
投递
<
/span
>
<
/div
>
<
span
v
-
else
class
=
"user-label"
>
未投递
<
/span
>
<
/div
>
<
/div
>
<
customPagination
...
...
@@ -96,7 +97,13 @@
<
el
-
empty
v
-
else
description
=
"暂无数据"
/>
<
/el-tab-pane
>
<
/el-tabs
>
<
previewResume
v
-
model
:
show
=
"previewResumeShow"
:
data
=
"resumeData"
/>
<
previewResume
v
-
model
:
show
=
"previewResumeShow"
:
data
=
"resumeData"
is
-
company
:
deliverFID
=
"DeliverFID"
@
status
-
change
=
"talentStatusChange"
/>
<
/template
>
<
script
setup
lang
=
"ts"
>
...
...
@@ -105,7 +112,7 @@ import { recruitStatus, jobStatus } from '../config/index'
import
{
getTalentResume
,
updateTalentResume
,
getResume
getResume
Info
}
from
'@/services/api/recruitmentManagement'
import
customPagination
from
'@/components/customPagination.vue'
import
previewResume
from
'./previewResume.vue'
...
...
@@ -113,6 +120,7 @@ import previewResume from './previewResume.vue'
const
activeName
=
ref
(
'A'
)
const
loading
=
ref
(
true
)
const
previewResumeShow
=
ref
(
false
)
const
DeliverFID
=
ref
()
// const rateValue = ref(4)
const
talentList
=
ref
([]
as
any
)
const
resumeData
=
ref
()
...
...
@@ -129,12 +137,12 @@ const selectDepartRemain = (departRemain: string) => {
return
row
?
row
.
label
:
jobStatus
[
3
].
label
}
const
openResume
=
async
()
=>
{
loading
.
value
=
true
const
res
:
any
=
await
getResume
()
const
openResume
=
async
(
row
:
any
)
=>
{
const
res
:
any
=
await
getResumeInfo
({
FID
:
row
.
VitaeID
}
)
if
(
res
.
code
===
200
)
{
resumeData
.
value
=
res
.
data
previewResumeShow
.
value
=
true
DeliverFID
.
value
=
row
.
DeliverFID
}
}
...
...
src/views/recruitmentManagement/config/index.ts
浏览文件 @
ca2001b3
...
...
@@ -61,3 +61,27 @@ export const jobStatus = [
{
label
:
'在职考虑中'
,
value
:
'2'
},
{
label
:
'待业'
,
value
:
'3'
}
]
export
const
copyList
=
[
{
width
:
'50%'
,
prop
:
'FCompanyName'
,
label
:
'公司名称'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FLegalRepresentative'
,
label
:
'法定代表人'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
'FDateEstablishment'
,
label
:
'成立日期'
,
span
:
1
},
{
width
:
'50%'
,
prop
:
'FRegisteredAddress'
,
label
:
'注册地址'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FOperatingState'
,
label
:
'经营状态'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
'FRegisteredCapital'
,
label
:
'注册资本'
,
span
:
1
},
{
width
:
'50%'
,
prop
:
'FTypeEnterprise'
,
label
:
'企业类型'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FOperatingTerm'
,
label
:
'营业期限'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
'FAffiliatingArea'
,
label
:
'所属地区'
,
span
:
1
},
{
width
:
'50%'
,
prop
:
'FCreditCode'
,
label
:
'统一社会信用代码'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FDateApproval'
,
label
:
'核准日期'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
''
,
label
:
''
,
span
:
1
},
{
width
:
'100%'
,
prop
:
'FPreviouslyName'
,
label
:
'曾用名'
,
span
:
4
},
{
width
:
'100%'
,
prop
:
'FRegistrationAuthority'
,
label
:
'登记机关'
,
span
:
4
},
{
width
:
'100%'
,
prop
:
'FFIndustryGS'
,
label
:
'所属行业'
,
span
:
4
},
{
width
:
'100%'
,
prop
:
'FBusinessScope'
,
label
:
'经营范围'
,
span
:
4
}
]
src/views/recruitmentManagement/editCompany.vue
浏览文件 @
ca2001b3
...
...
@@ -235,8 +235,8 @@ const state = reactive({
{
FEntryID
:
0
,
FUserPhoneS
:
''
,
//注册手机号
FUserName
:
'
注册人
'
,
FJobTitle
:
'
注册人
'
FUserName
:
'
先生/女士
'
,
FJobTitle
:
'
总经理
'
}
]
}
...
...
src/views/recruitmentManagement/editResume.vue
浏览文件 @
ca2001b3
...
...
@@ -131,6 +131,7 @@
<
div
class
=
"flx-justify-between"
>
<
div
class
=
"resume-label flx-center"
>
期望职位
<
/div
>
<
div
v
-
if
=
"!state.resumeData?.Qzdata || state.resumeData?.Qzdata?.length < 3"
class
=
"flx-align-center"
style
=
"color: #177cfa; cursor: pointer"
@
click
=
"addExpectedClick"
...
...
@@ -580,7 +581,9 @@ import previewFile from '@/components/previewFile.vue'
import
certificate
from
'./components/certificate.vue'
import
dayjs
from
'dayjs'
const
route
=
useRoute
()
const
userInfoStore
=
useUserInfoStore
()
const
state
=
reactive
({
userInfoShow
:
false
,
personalAdvantagesShow
:
false
,
...
...
@@ -670,6 +673,16 @@ const skillCertificateTag = computed(() => {
return
list
.
length
?
list
:
[]
}
)
const
handleScroll
=
()
=>
{
// let directoryEl: any = document.querySelector('.directory')
// directoryEl.style.top = scrollRef.value?.getBoundingClientRect().top + 'px'
// directoryEl.classList.add('animate')
// if (scrollRef.value?.getBoundingClientRect().top <= 6)
{
// directoryEl.style.top = '10px'
// directoryEl.classList.add('animate')
//
}
}
const
selectDepartRemain
=
(
departRemain
:
string
)
=>
{
let
row
=
jobStatus
.
find
((
item
:
any
)
=>
item
.
value
===
departRemain
)
return
row
?
row
.
label
:
jobStatus
[
3
].
label
...
...
@@ -887,6 +900,11 @@ const init = async () => {
loading
.
value
=
true
const
res
:
any
=
await
getResume
()
if
(
res
.
code
===
200
)
{
const
{
addExpected
}
=
route
.
query
if
(
addExpected
&&
res
.
data
?.
Qzdata
?.
length
<
3
)
{
state
.
resumeActive
=
'期望职位'
state
.
expectedPositionShow
=
true
}
state
.
resumeData
=
res
.
data
loading
.
value
=
false
}
...
...
@@ -913,7 +931,17 @@ const initInformation = async () => {
}
}
initInformation
()
onMounted
(()
=>
{
window
.
addEventListener
(
'scroll'
,
handleScroll
,
true
)
}
)
onBeforeUnmount
(()
=>
{
window
.
removeEventListener
(
'scroll'
,
handleScroll
)
}
)
onMounted
(()
=>
{
initInformation
()
}
)
<
/script
>
<
style
lang
=
"scss"
scoped
>
...
...
src/views/recruitmentManagement/enterpriseRecruitment.vue
浏览文件 @
ca2001b3
...
...
@@ -52,8 +52,8 @@
</div>
<talent
v-if=
"manageActive === '人才管理'"
ref=
"talentRef"
/>
<position
v-else-if=
"manageActive === '职位管理'"
ref=
"positionRef"
/>
<resume
v-else-if=
"manageActive === '简历搜索'"
/>
<resume
v-else
:filterS
how=
"false"
/>
<resume
v-else-if=
"manageActive === '简历搜索'"
ref=
"resumeRef"
/>
<resume
v-else
ref=
"resumeRef"
:filter-s
how=
"false"
/>
</div>
</div>
</
template
>
...
...
@@ -72,6 +72,7 @@ const globalStore = useGlobalStore()
const
manageActive
=
ref
(
'人才管理'
)
const
talentRef
=
ref
()
const
positionRef
=
ref
()
const
resumeRef
=
ref
()
const
manageList
=
[
{
name
:
'人才管理'
,
type
:
'A'
},
...
...
@@ -119,10 +120,10 @@ watch(
case
'职位管理'
:
positionRef
.
value
?.
initCompanyPositionList
()
break
case
'简历搜索'
:
break
// case '简历搜索':
// break
default
:
resumeRef
.
value
?.
init
()
break
}
},
100
)
...
...
src/views/recruitmentManagement/index.vue
浏览文件 @
ca2001b3
...
...
@@ -103,7 +103,7 @@
</div>
</div>
<el-divider
style=
"margin: 14px 0"
/>
<div>
<div
@
click=
"toCompanyDetail(col.firmfid)"
>
<div
class=
"company"
>
{{ col.firmname }}
</div>
<div
class=
"company-label"
>
<span>
{{ col.ffinancings }}
</span>
...
...
@@ -175,12 +175,12 @@
</div>
</div>
<div
v-if=
"item.JobS && item.JobS?.length"
class=
"company-bt-btn"
>
<span>
查看更多职位
</span>
<span
@
click=
"toCompanyDetail(item.FirmFID)"
>
查看更多职位
</span>
</div>
</div>
</div>
</div>
<span
class=
"n-more"
style=
"margin-top: 8px"
>
查看更多
</span>
<span
class=
"n-more"
style=
"margin-top: 8px"
@
click=
"toSeeMoreCompany"
>
查看更多
</span>
</div>
</div>
</template>
...
...
@@ -197,7 +197,6 @@ import { getStreet } from '@/services/api/streetOfficeSpecialTopic'
import
{
getPoster
}
from
'@/services/api/common'
import
{
useUserInfoStore
}
from
'@/stores/modules/userInfo'
import
autocomplete
from
'@/components/autocomplete.vue'
import
seeMorePosition
from
'./seeMorePosition.vue'
const
router
=
useRouter
()
const
userInfoStore
=
useUserInfoStore
()
...
...
@@ -259,6 +258,10 @@ const toSeeMorePosition = () => {
router
.
push
({
path
:
'/recruitmentManagement/seeMorePosition'
})
}
const
toSeeMoreCompany
=
()
=>
{
router
.
push
({
path
:
'/recruitmentManagement/seeMoreCompany'
})
}
const
subMenuList
=
computed
(()
=>
{
if
(
!
FDATAVALUE
.
value
)
return
[]
const
list
=
JSON
.
parse
(
JSON
.
stringify
(
menuList
.
value
))
||
[]
...
...
src/views/recruitmentManagement/personalRecruitment.vue
浏览文件 @
ca2001b3
...
...
@@ -41,14 +41,9 @@
</div>
</div>
<div
v-if=
"userPostionList.length"
v-loading=
"filterLoading"
class=
"personal-contnet"
>
<div
v-for=
"item in userPostionList"
:key=
"item"
class=
"personal-ct-item"
@
click=
"toPositionDetail(item.FID)"
>
<div
v-for=
"item in userPostionList"
:key=
"item"
class=
"personal-ct-item"
>
<div
class=
"personal-ct-item-tp"
>
<div
class=
"personal-ct-item-tp-lf"
>
<div
class=
"personal-ct-item-tp-lf"
@
click=
"toPositionDetail(item.FID)"
>
<div
:title=
"
item.JobName + [item.FWORKPLACE?.replace(/^.*?\//, '').replace(/\//g, '.')]
...
...
@@ -68,7 +63,7 @@
<span
class=
"info-label"
>
{{
item
.
FEDUCATIONALBACKGROUND
}}
</span>
</div>
</div>
<div
class=
"personal-ct-item-tp-ct"
>
<div
class=
"personal-ct-item-tp-ct"
@
click=
"toCompanyDetail(item.FirmID)"
>
<img
:src=
"baseURL + '/' + item.FLOGO"
width=
"54"
...
...
@@ -218,6 +213,10 @@ const toPositionDetail = (FID: number) => {
router
.
push
({
path
:
'/recruitmentManagement/positionDetail'
,
query
:
{
FID
}
})
}
const
toCompanyDetail
=
(
FID
:
number
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/companyDetail'
,
query
:
{
FID
}
})
}
const
initUserPostionList
=
async
()
=>
{
filterLoading
.
value
=
true
let
params
=
JSON
.
parse
(
JSON
.
stringify
(
queryList
.
value
))
...
...
src/views/recruitmentManagement/positionDetail.vue
浏览文件 @
ca2001b3
...
...
@@ -144,6 +144,7 @@
<
script
setup
lang=
"ts"
>
import
{
getUserPostionDetail
,
sendResume
}
from
'@/services/api/recruitmentManagement'
import
{
baseURL
}
from
'@/services'
import
{
copyList
}
from
'./config'
import
info
from
'./components/info.vue'
import
qqMap
from
'@/components/qqMap.vue'
...
...
@@ -151,30 +152,6 @@ const route = useRoute()
const
list
:
any
=
ref
([])
const
copyList
=
[
{
width
:
'50%'
,
prop
:
'FCompanyName'
,
label
:
'公司名称'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FLegalRepresentative'
,
label
:
'法定代表人'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
'FDateEstablishment'
,
label
:
'成立日期'
,
span
:
1
},
{
width
:
'50%'
,
prop
:
'FRegisteredAddress'
,
label
:
'注册地址'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FOperatingState'
,
label
:
'经营状态'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
'FRegisteredCapital'
,
label
:
'注册资本'
,
span
:
1
},
{
width
:
'50%'
,
prop
:
'FTypeEnterprise'
,
label
:
'企业类型'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FOperatingTerm'
,
label
:
'营业期限'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
'FAffiliatingArea'
,
label
:
'所属地区'
,
span
:
1
},
{
width
:
'50%'
,
prop
:
'FCreditCode'
,
label
:
'统一社会信用代码'
,
span
:
2
},
{
width
:
'25%'
,
prop
:
'FDateApproval'
,
label
:
'核准日期'
,
span
:
1
},
{
width
:
'25%'
,
prop
:
''
,
label
:
''
,
span
:
1
},
{
width
:
'100%'
,
prop
:
'FPreviouslyName'
,
label
:
'曾用名'
,
span
:
4
},
{
width
:
'100%'
,
prop
:
'FRegistrationAuthority'
,
label
:
'登记机关'
,
span
:
4
},
{
width
:
'100%'
,
prop
:
'FFIndustryGS'
,
label
:
'所属行业'
,
span
:
4
},
{
width
:
'100%'
,
prop
:
'FBusinessScope'
,
label
:
'经营范围'
,
span
:
4
}
]
const
loading
=
ref
(
true
)
const
mapRef
:
any
=
ref
()
const
detailData
:
any
=
ref
()
...
...
@@ -225,7 +202,9 @@ 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
)
mapRef
.
value
.
initMap
(
detailData
.
value
?.
FWORKPLACE
)
loading
.
value
=
false
}
}
...
...
src/views/recruitmentManagement/seeMoreCompany.vue
浏览文件 @
ca2001b3
<
template
>
<div></div>
<div
class=
"see-more-company"
>
<div
class=
"container"
>
<div
class=
"filter"
>
<div
class=
"filter-list"
>
<div
v-for=
"(item, index) in filterList"
:key=
"index"
class=
"filter-item"
>
<div
class=
"filter-label"
>
{{
item
.
name
}}
</div>
<div
class=
"filter-span"
>
<span
v-for=
"col in item.list"
:key=
"col.FENTRYID"
:style=
"
{ color: col.FENTRYID === queryList.Filter[item.prop] ? '#177cfa' : '' }"
@click="filterChange(item.prop, col.FENTRYID)"
>
{{
col
.
FDATAVALUE
}}
</span
>
</div>
</div>
</div>
<div
class=
"filter-clear"
>
<span
@
click=
"clear"
>
清空筛选条件
</span>
</div>
<el-autocomplete
v-model=
"queryList.Filter.FNAME"
value-key=
"FirmName"
:fetch-suggestions=
"querySearchAsync"
placeholder=
"搜索公司"
@
select=
"search"
@
change=
"search"
>
<template
#
prefix
>
<span
style=
"padding-right: 28px"
>
找企业
</span>
</
template
>
<
template
#
suffix
>
<el-icon
size=
"24"
style=
"cursor: pointer"
@
click=
"querySearchAsync"
><i-ep-Search
/></el-icon>
</
template
>
</el-autocomplete>
</div>
<div
v-if=
"companyList.length"
v-loading=
"loading"
class=
"company-content"
>
<div
class=
"company-list"
>
<div
v-for=
"item in companyList"
:key=
"item.FirmFID"
class=
"company-item"
>
<div
class=
"company-tp"
@
click=
"toCompanyDetail(item.FirmFID)"
>
<img
:src=
"baseURL + '/' + item.FLOGO"
width=
"50"
height=
"50"
/>
<div
class=
"company-tp-rg flx-column-start-between"
>
<span>
{{ item.FirmName }}
</span>
<div
class=
"company-label"
>
<span>
{{ item.FFINANCINGS }}
</span>
<el-divider
direction=
"vertical"
/>
<span>
{{ item.FSCALES }}
</span>
<el-divider
direction=
"vertical"
/>
<span>
{{ item.FINDUSTRY }}
</span>
</div>
</div>
</div>
<div
class=
"company-bt"
>
<div
class=
"company-position-list flx-direction-column"
>
<div
v-for=
"col in item.JobS"
:key=
"col.JobFID"
class=
"company-position-item"
@
click=
"toPositionDetail(col.JobFID)"
>
<div
class=
"flx-justify-between"
style=
"margin-bottom: 22px"
>
<div
class=
"nowrap-ellipsis"
style=
"width: 207px; text-align: left"
:title=
"col.JobName"
>
{{ col.JobName }}
</div>
<div>
<span
class=
"salary"
>
{{ col.FMINIMUMWAGE }}-{{ col.FMAXIMUMSALARY }}
</span>
<span
class=
"monthly-pay"
>
元/月
</span>
</div>
</div>
<div
class=
"hot-position-item-ft"
>
<span
class=
"nowrap-ellipsis"
:title=
"col.FWORKPLACE"
>
{{
`${col.FWORKPLACE.split('/')[1]} ${col.FWORKPLACE.split('/')[2]} ${
col.FWORKPLACE.split('/')[3]
}`
}}
</span>
<span>
{{ col.FEXPERIENCE }}
</span>
<span>
{{ col.FEDUCATIONALBACKGROUND }}
</span>
</div>
</div>
</div>
<div
v-if=
"item.JobS && item.JobS?.length"
class=
"company-bt-btn"
>
<span
@
click=
"toSeeMorePosition"
>
查看更多职位
</span>
</div>
</div>
</div>
</div>
<customPagination
:pageSize=
"queryList.pageSize"
:pageIndex=
"queryList.pageIndex"
:total=
"queryList.total"
@
current-change=
"currentChange"
/>
</div>
<el-empty
v-else
description=
"暂无数据"
/>
</div>
</div>
</template>
<
script
setup
lang=
"ts"
></
script
>
<
script
setup
lang=
"ts"
>
import
{
getInformation
}
from
'@/services/api/common'
import
{
getStreet
}
from
'@/services/api/streetOfficeSpecialTopic'
import
{
genCompanyList
}
from
'@/services/api/recruitmentManagement'
import
{
baseURL
}
from
'@/services'
import
customPagination
from
'@/components/customPagination.vue'
const
router
=
useRouter
()
const
queryList
=
ref
({
pageIndex
:
1
,
pageSize
:
12
,
Filter
:
{
FNAME
:
''
,
//名称
FSUBSTREET
:
''
,
//街道
FINDUSTRY
:
''
,
//公司类型
FSCALES
:
''
,
//公司规模
FFINANCINGS
:
''
//融资情况
}
as
any
,
total
:
0
})
const
filterList
:
any
=
ref
([
{
name
:
'公司类型'
,
prop
:
'FINDUSTRY'
,
list
:
[]
},
{
name
:
'所在街道办'
,
list
:
[],
prop
:
'FSUBSTREET'
},
{
name
:
'公司规模'
,
list
:
[],
prop
:
'FSCALES'
},
{
name
:
'融资情况'
,
list
:
[],
prop
:
'FFINANCINGS'
}
])
const
loading
=
ref
(
true
)
const
informationData
=
ref
()
const
companyList
:
any
=
ref
([])
let
timeout
:
ReturnType
<
typeof
setTimeout
>
const
filterChange
=
(
prop
:
string
,
FENTRYID
:
string
)
=>
{
queryList
.
value
.
Filter
[
prop
]
=
FENTRYID
initCompanyList
()
}
const
currentChange
=
(
pageIndex
:
number
)
=>
{
queryList
.
value
.
pageIndex
=
pageIndex
initCompanyList
()
window
.
scrollTo
({
top
:
0
,
behavior
:
'auto'
// 可选,smooth 平滑滚动效果
})
}
const
toCompanyDetail
=
(
FID
:
number
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/companyDetail'
,
query
:
{
FID
}
})
}
const
toSeeMorePosition
=
()
=>
{
router
.
push
({
path
:
'/recruitmentManagement/seeMorePosition'
})
}
const
toPositionDetail
=
(
FID
:
number
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/positionDetail'
,
query
:
{
FID
}
})
}
const
search
=
(
item
:
Record
<
string
,
any
>
)
=>
{
initCompanyList
()
}
const
clear
=
()
=>
{
queryList
.
value
.
Filter
.
FINDUSTRY
=
''
queryList
.
value
.
Filter
.
FSCALES
=
''
queryList
.
value
.
Filter
.
FSUBSTREET
=
''
queryList
.
value
.
Filter
.
FFINANCINGS
=
''
initCompanyList
()
}
const
querySearchAsync
=
async
(
queryString
:
string
,
cb
:
(
arg
:
any
)
=>
void
)
=>
{
const
res
:
any
=
await
genCompanyList
({
pageIndex
:
1
,
pageSize
:
10
,
Filter
:
{
FNAME
:
queryList
.
value
.
Filter
.
FNAME
//名称
}
})
if
(
res
.
code
===
200
)
{
let
results
=
res
.
data
||
[]
clearTimeout
(
timeout
)
timeout
=
setTimeout
(()
=>
{
cb
(
results
)
},
300
)
}
}
const
initCompanyList
=
async
()
=>
{
loading
.
value
=
true
const
res
:
any
=
await
genCompanyList
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
companyList
.
value
=
res
.
data
||
[]
queryList
.
value
.
total
=
res
.
total
loading
.
value
=
false
}
}
const
init
=
async
()
=>
{
const
res
:
any
=
await
getInformation
({
AuxiliaryS
:
[
'Trade'
,
'Member'
,
'Financing'
]
})
if
(
res
.
code
===
200
)
{
informationData
.
value
=
res
.
data
const
item
=
{
FDATAVALUE
:
'不限'
,
FENTRYID
:
''
}
res
.
data
.
Trade
.
unshift
(
item
)
res
.
data
.
Member
.
unshift
(
item
)
res
.
data
.
Financing
.
unshift
(
item
)
filterList
.
value
[
0
].
list
=
res
.
data
?.
Trade
||
[]
filterList
.
value
[
2
].
list
=
res
.
data
?.
Member
||
[]
filterList
.
value
[
3
].
list
=
res
.
data
?.
Financing
||
[]
const
street
:
any
=
await
getStreet
()
if
(
street
.
code
===
200
)
{
street
.
data
?.
forEach
((
item
:
any
)
=>
{
item
.
FDATAVALUE
=
item
.
FNAME
+
'办'
item
.
FENTRYID
=
item
.
FID
})
const
item
=
{
FDATAVALUE
:
'全部'
,
FENTRYID
:
''
}
street
.
data
.
unshift
(
item
)
filterList
.
value
[
1
].
list
=
street
.
data
||
[]
initCompanyList
()
}
}
}
init
()
</
script
>
<
style
lang=
"scss"
scoped
></
style
>
<
style
lang=
"scss"
scoped
>
@import
url(./style/seeMoreCompany.scss)
;
</
style
>
src/views/recruitmentManagement/seeMorePosition.vue
浏览文件 @
ca2001b3
...
...
@@ -3,13 +3,31 @@
<div
class=
"container"
>
<div
class=
"sell-position"
>
<div
class=
"flx-align-center"
>
<span
class=
"desc-title"
>
推荐职位
</span>
<span
class=
"desc-title"
:style=
"
{ color: queryList.Filter.FNAME === '' ? '#177cfa' : '' }"
@click="selectChange('')"
>推荐职位
</span
>
<div
class=
"flx-align-center"
style=
"cursor: pointer"
>
<span>
测试员
</span>
<el-divider
direction=
"vertical"
/>
<span>
测试员
</span>
<el-divider
direction=
"vertical"
/>
<div
class=
"flx-align-center"
>
<div
v-for=
"(item, index) in expectedPositionList"
:key=
"item.FDESIREDPOSITION"
class=
"expected-position"
:style=
"
{
borderRight: expectedPositionList.length - 1 === index ? 0 : '',
color: queryList.Filter.FNAME === item.FDATAVALUE ? '#177cfa' : ''
}"
@click="selectChange(item.FDATAVALUE)"
>
{{
item
.
FDATAVALUE
}}
</div>
<div
v-show=
"expectedPositionList.length > 3"
class=
"flx-align-center"
style=
"padding-left: 24px; border-left: 1px solid #cccccc"
@
click=
"toEditResume"
>
<el-icon
style=
"margin: 3px 4px 0 0"
><i-ep-CirclePlus
/></el-icon>
<span>
添加求职期望
</span>
</div>
...
...
@@ -22,23 +40,33 @@
v-model=
"queryList.Filter[item.prop]"
:name=
"item.name"
:list=
"item.list"
@
change=
"selectChange
($event, index)
"
@
change=
"selectChange"
/>
</div>
</div>
<morePosition
ref=
"morePositionRef"
/>
<morePosition
v-if=
"positionList.length"
ref=
"morePositionRef"
v-loading=
"loading"
:positionList=
"positionList"
:queryList=
"queryList"
isPositon
@
current-change=
"currentChange"
/>
<el-empty
v-else
description=
"暂无数据"
/>
</div>
</div>
</
template
>
<
script
setup
lang=
"ts"
>
import
{
get
Information
}
from
'@/services/api/common
'
import
{
get
DesirePosition
,
getUserPostionList
}
from
'@/services/api/recruitmentManagement
'
import
morePosition
from
'./components/morePosition.vue'
import
customSelect
from
'@/components/customSelect.vue'
const
router
=
useRouter
()
const
queryList
=
ref
({
pageIndex
:
1
,
pageSize
:
10
,
pageSize
:
6
,
Filter
:
{
//传id
FNAME
:
''
,
//标题
...
...
@@ -48,7 +76,8 @@ const queryList = ref({
FEDUCATIONALBACKGROUND
:
''
,
//学历
FSCALES
:
''
,
//规模
FFINANCINGS
:
''
//融资情况
}
as
any
}
as
any
,
total
:
0
})
const
filterList
=
ref
([
...
...
@@ -68,44 +97,72 @@ const filterList = ref([
prop
:
'FEDUCATIONALBACKGROUND'
},
{
name
:
'公司
规模
'
,
name
:
'公司
类型
'
,
list
:
[],
prop
:
'F
SCALES
'
prop
:
'F
INDUSTRY
'
},
{
name
:
'
融资情况
'
,
name
:
'
公司规模
'
,
list
:
[],
prop
:
'F
FINANCING
S'
prop
:
'F
SCALE
S'
}
])
const
positionList
=
ref
([]
as
any
)
const
morePositionRef
=
ref
()
const
informationData
=
ref
()
const
loading
=
ref
(
true
)
const
expectedPositionList
=
ref
([]
as
any
)
const
selectChange
=
(
FName
?:
string
)
=>
{
if
(
FName
)
queryList
.
value
.
Filter
.
FNAME
=
FName
else
queryList
.
value
.
Filter
.
FNAME
=
''
initUserPostionList
()
}
const
selectChange
=
(
e
:
any
,
index
:
number
)
=>
{}
const
currentChange
=
(
pageIndex
:
number
)
=>
{
queryList
.
value
.
pageIndex
=
pageIndex
initUserPostionList
()
}
const
toEditResume
=
()
=>
{
router
.
push
({
path
:
'/recruitmentManagement/editResume'
,
query
:
{
addExpected
:
'true'
}
})
}
const
initUserPostionList
=
async
()
=>
{
loading
.
value
=
true
const
res
:
any
=
await
getUserPostionList
(
queryList
.
value
)
if
(
res
.
code
===
200
)
{
positionList
.
value
=
res
.
data
||
[]
queryList
.
value
.
total
=
res
.
total
loading
.
value
=
false
}
}
const
init
=
async
()
=>
{
const
res
:
any
=
await
getInformation
({
AuxiliaryS
:
[
'Experience'
,
'SalaryRange'
,
'Degree2'
,
'Member'
,
'Financing'
]
})
const
initDesirePosition
=
async
()
=>
{
const
res
:
any
=
await
getDesirePosition
()
if
(
res
.
code
===
200
)
{
informationData
.
value
=
res
.
data
const
item
=
{
FDATAVALUE
:
'不限'
,
FDESCRIPTION
:
'不限'
,
FENTRYID
:
' '
}
res
.
data
.
Experience
.
push
(
item
)
res
.
data
.
SalaryRange
.
push
(
item
)
res
.
data
.
Degree2
.
push
(
item
)
res
.
data
.
Member
.
push
(
item
)
res
.
data
.
Financing
.
push
(
item
)
filterList
.
value
[
0
].
list
=
res
.
data
.
Experience
filterList
.
value
[
1
].
list
=
res
.
data
.
SalaryRange
filterList
.
value
[
2
].
list
=
res
.
data
.
Degree2
filterList
.
value
[
3
].
list
=
res
.
data
.
Member
filterList
.
value
[
4
].
list
=
res
.
data
.
Financing
morePositionRef
.
value
.
init
()
const
{
FzData
,
QwDat
}
=
await
res
.
data
informationData
.
value
=
res
.
data
?.
FzData
expectedPositionList
.
value
=
QwDat
||
[]
const
item
=
{
FDATAVALUE
:
'不限'
,
FDESCRIPTION
:
'不限'
,
FENTRYID
:
''
}
FzData
.
Experience
.
push
(
item
)
FzData
.
SalaryRange
.
push
(
item
)
FzData
.
Degree2
.
push
(
item
)
FzData
.
Member
.
push
(
item
)
filterList
.
value
[
0
].
list
=
FzData
.
Experience
filterList
.
value
[
1
].
list
=
FzData
.
SalaryRange
filterList
.
value
[
2
].
list
=
FzData
.
Degree2
filterList
.
value
[
3
].
list
=
FzData
.
Trade
filterList
.
value
[
4
].
list
=
FzData
.
Member
initUserPostionList
()
loading
.
value
=
false
morePositionRef
.
value
?.
init
()
}
}
onMounted
(()
=>
{
init
()
init
DesirePosition
()
})
</
script
>
...
...
@@ -126,10 +183,15 @@ onMounted(() => {
}
.desc-title
{
cursor
:
pointer
;
display
:
inline-block
;
font-size
:
18px
;
color
:
#000000
;
margin-right
:
40px
;
margin-right
:
16px
;
}
.expected-position
{
padding
:
0
24px
;
border-right
:
1px
solid
#cccccc
;
}
.select-list
{
display
:
flex
;
...
...
src/views/recruitmentManagement/style/companyDetail.scss
浏览文件 @
ca2001b3
...
...
@@ -152,6 +152,10 @@
font-weight
:
400
;
color
:
#222222
;
margin-bottom
:
8px
;
&
:hover
{
color
:
#177cfa
;
}
}
}
.select-list
{
...
...
src/views/recruitmentManagement/style/editResume.scss
浏览文件 @
ca2001b3
...
...
@@ -16,7 +16,7 @@
background
:
#ffffff
;
box-shadow
:
0px
1px
2px
0px
rgba
(
0
,
0
,
0
,
0
.1
);
border-radius
:
12px
;
margin-right
:
15px
;
//
margin-right: 15px;
transition
:
top
0
.4s
ease-in-out
;
.directory-first
{
height
:
46px
;
...
...
@@ -60,6 +60,7 @@
box-shadow
:
0px
1px
2px
0px
rgba
(
0
,
0
,
0
,
0
.1
);
border-radius
:
12px
;
font-weight
:
400
;
// margin-left: 242px;
.resume-header
{
height
:
46px
;
...
...
src/views/recruitmentManagement/style/enterprise.scss
浏览文件 @
ca2001b3
...
...
@@ -80,7 +80,7 @@
font-weight
:
400
;
color
:
#999999
;
line-height
:
14px
;
margin-top
:
16
px
;
margin-top
:
8
px
;
display
:
flex
;
align-items
:
center
;
}
...
...
@@ -88,7 +88,7 @@
.company-detail
{
width
:
391px
;
height
:
243px
;
font-size
:
1
2
px
;
font-size
:
1
4
px
;
font-weight
:
400
;
color
:
#666666
;
margin
:
24px
0
20px
;
...
...
src/views/recruitmentManagement/style/seeMoreCompany.scss
0 → 100644
浏览文件 @
ca2001b3
.see-more-company
{
display
:
flex
;
justify-content
:
center
;
margin
:
24px
;
.container
{
width
:
1316px
;
color
:
#222222
;
.filter
{
padding
:
24px
36px
;
background
:
#ffffff
;
border-radius
:
8px
;
.filter-list
{
margin-bottom
:
24px
;
.filter-item
{
display
:
flex
;
margin-bottom
:
8px
;
.filter-label
{
width
:
80px
;
height
:
24px
;
font-size
:
16px
;
font-weight
:
400
;
color
:
#222222
;
margin
:
0
24px
8px
0
;
}
.filter-span
{
flex
:
1
;
display
:
flex
;
flex-wrap
:
wrap
;
span
{
font-size
:
14px
;
color
:
#666666
;
margin
:
0
24px
8px
0
;
cursor
:
pointer
;
&
:hover
{
color
:
#177cfa
;
}
}
}
}
}
.filter-clear
{
display
:
flex
;
justify-content
:
flex-end
;
font-size
:
14px
;
color
:
#666666
;
margin-right
:
24px
;
span
{
cursor
:
pointer
;
&
:hover
{
color
:
#177cfa
;
}
}
}
}
.company-content
{
width
:
1316px
;
text-align
:
center
;
margin-bottom
:
64px
;
.company-list
{
display
:
flex
;
flex-wrap
:
wrap
;
margin-top
:
24px
;
.company-item
{
display
:
flex
;
flex-direction
:
column
;
cursor
:
pointer
;
width
:
calc
((
100%
-
32px
)
/
3
);
flex
:
0
0
calc
((
100%
-
32px
)
/
3
);
margin
:
0
16px
16px
0
;
background
:
#ffffff
;
border-radius
:
12px
;
box-sizing
:
border-box
;
&
:nth-child
(
3n
)
{
margin-right
:
0
;
}
.company-tp
{
background
:
linear-gradient
(
90deg
,
#e3f0ff
0%
,
rgba
(
227
,
240
,
255
,
0
.15
)
100%
);
border-radius
:
12px
12px
0px
0px
;
padding
:
26px
21px
;
display
:
flex
;
.company-tp-rg
{
margin-left
:
21px
;
height
:
50px
;
}
}
.company-bt
{
flex
:
1
;
padding
:
26px
20px
;
display
:
flex
;
flex-direction
:
column
;
justify-content
:
space-between
;
.company-position-list
{
.company-position-item
{
margin-bottom
:
24px
;
cursor
:
pointer
;
.hot-position-item-ft
{
margin-top
:
16px
;
display
:
flex
;
span
{
padding
:
6px
12px
;
height
:
24px
;
background
:
#f8f8f8
;
border-radius
:
4px
;
line-height
:
24px
;
font-size
:
14px
;
font-weight
:
400
;
color
:
#666666
;
margin-right
:
8px
;
&
:first-child
{
width
:
45%
;
text-align
:
left
;
}
}
}
}
}
.company-bt-btn
{
width
:
100%
;
display
:
flex
;
justify-content
:
center
;
cursor
:
pointer
;
span
{
display
:
block
;
width
:
136px
;
height
:
38px
;
line-height
:
38px
;
text-align
:
center
;
border-radius
:
8px
;
border
:
1px
solid
#177cfa
;
color
:
#177cfa
;
font-size
:
16px
;
font-weight
:
400
;
}
}
}
}
}
}
}
:deep
(
.el-autocomplete
)
{
width
:
869px
;
height
:
62px
;
margin-bottom
:
24px
;
.el-input
{
width
:
869px
;
height
:
62px
;
margin-bottom
:
24px
;
.el-input__wrapper
{
border-radius
:
29px
;
padding
:
0
45px
;
}
}
.el-input__prefix-inner
{
border-right
:
1px
solid
#ccc
;
margin-right
:
24px
;
}
}
}
src/views/streetOfficeSpecialTopic/index.vue
浏览文件 @
ca2001b3
...
...
@@ -90,7 +90,7 @@
:
key
=
"item"
class
=
"hot-position-item enterprise"
>
<
div
class
=
"enterprise-tp"
@
click
=
"toPositionDetail(item.Job
Name
)"
>
<
div
class
=
"enterprise-tp"
@
click
=
"toPositionDetail(item.Job
FID
)"
>
<
div
class
=
"flx-justify-between"
>
<
div
class
=
"item-lf nowrap-ellipsis"
:
title
=
"item.JobName"
>
{{
item
.
JobName
}}
...
...
@@ -107,9 +107,9 @@
<
span
>
{{
item
.
FEDUCATIONALBACKGROUND
}}
<
/span
>
<
/div
>
<
/div
>
<
div
class
=
"enterprise-bt flx-justify-between"
>
<
div
class
=
"enterprise-bt flx-justify-between"
@
click
=
"toCompanyDetail(item.FirmFID)"
>
<
div
class
=
"flx-align-center"
>
<
img
:
src
=
"baseURL + '/' + item.FLOGO"
width
=
"24"
height
=
"24
px
"
/>
<
img
:
src
=
"baseURL + '/' + item.FLOGO"
width
=
"24"
height
=
"24"
/>
<
span
style
=
"margin-left: 8px"
>
{{
item
.
FirmName
}}
<
/span
>
<
/div
>
<
div
>
...
...
@@ -184,6 +184,10 @@ const toPersonal = () => {
router
.
push
({
path
:
'/recruitmentManagement/personal'
,
query
:
{
street
:
streetActive
.
value
}
}
)
}
const
toCompanyDetail
=
(
FID
:
number
)
=>
{
router
.
push
({
path
:
'/recruitmentManagement/companyDetail'
,
query
:
{
FID
}
}
)
}
const
change
=
(
FID
:
string
)
=>
{
streetActive
.
value
=
FID
initStreetPosition
()
...
...
types/components.d.ts
浏览文件 @
ca2001b3
...
...
@@ -9,6 +9,7 @@ declare module 'vue' {
export
interface
GlobalComponents
{
Autocomplete
:
typeof
import
(
'./../src/components/autocomplete.vue'
)[
'default'
]
CommonDetail
:
typeof
import
(
'./../src/components/commonDetail.vue'
)[
'default'
]
CommonItem
:
typeof
import
(
'./../src/components/commonItem.vue'
)[
'default'
]
ContentBlock
:
typeof
import
(
'./../src/components/contentBlock.vue'
)[
'default'
]
CustomPagination
:
typeof
import
(
'./../src/components/customPagination.vue'
)[
'default'
]
CustomSelect
:
typeof
import
(
'./../src/components/customSelect.vue'
)[
'default'
]
...
...
@@ -23,8 +24,6 @@ declare module 'vue' {
ElCascader
:
typeof
import
(
'element-plus/es'
)[
'ElCascader'
]
ElCheckbox
:
typeof
import
(
'element-plus/es'
)[
'ElCheckbox'
]
ElCol
:
typeof
import
(
'element-plus/es'
)[
'ElCol'
]
ElCollapse
:
typeof
import
(
'element-plus/es'
)[
'ElCollapse'
]
ElCollapseItem
:
typeof
import
(
'element-plus/es'
)[
'ElCollapseItem'
]
ElConfigProvider
:
typeof
import
(
'element-plus/es'
)[
'ElConfigProvider'
]
ElContainer
:
typeof
import
(
'element-plus/es'
)[
'ElContainer'
]
ElDatePicker
:
typeof
import
(
'element-plus/es'
)[
'ElDatePicker'
]
...
...
@@ -46,7 +45,6 @@ declare module 'vue' {
ElMenu
:
typeof
import
(
'element-plus/es'
)[
'ElMenu'
]
ElMenuItem
:
typeof
import
(
'element-plus/es'
)[
'ElMenuItem'
]
ElOption
:
typeof
import
(
'element-plus/es'
)[
'ElOption'
]
ElPagination
:
typeof
import
(
'element-plus/es'
)[
'ElPagination'
]
ElPopover
:
typeof
import
(
'element-plus/es'
)[
'ElPopover'
]
ElRow
:
typeof
import
(
'element-plus/es'
)[
'ElRow'
]
ElScrollbar
:
typeof
import
(
'element-plus/es'
)[
'ElScrollbar'
]
...
...
vite.config.ts
浏览文件 @
ca2001b3
...
...
@@ -75,7 +75,8 @@ export default defineConfig({
// 设置代理
proxy
:
{
'/K3Cloud'
:
{
target
:
'http://192.168.1.168'
,
// target: 'http://192.168.1.168',
target
:
'http://14.29.230.199:84/'
,
changeOrigin
:
true
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论