Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
J
jy_jfb_vue
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Administrator
jy_jfb_vue
Commits
cce14ef1
提交
cce14ef1
authored
9月 17, 2025
作者:
赵世杰
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1
上级
674c64ea
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
132 行增加
和
64 行删除
+132
-64
area.js
src/utils/area.js
+0
-0
index.vue
src/views/enterprise/index.vue
+47
-13
add.vue
src/views/recruit/add.vue
+77
-47
index.vue
src/views/recruit/index.vue
+6
-2
vite.config.js
vite.config.js
+2
-2
没有找到文件。
src/utils/area.js
0 → 100644
浏览文件 @
cce14ef1
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/views/enterprise/index.vue
浏览文件 @
cce14ef1
...
...
@@ -22,11 +22,16 @@
<el-table
v-loading=
"loading"
:data=
"list"
show-overflow-tooltip
style=
"width: 100%;"
>
<el-table-column
label=
"企业名称"
prop=
"name"
/>
<el-table-column
label=
"邮政编号"
prop=
"regionCode"
/>
<el-table-column
label=
"地址"
prop=
"address"
/>
<el-table-column
label=
"地址"
prop=
"address"
>
<template
#
default=
"
{row}">
{{
row
.
province
}}
{{
row
.
city
}}
{{
row
.
region
}}
{{
row
.
address
}}
</
template
>
</el-table-column>
<el-table-column
label=
"企业介绍"
prop=
"descr"
/>
<el-table-column
label=
"logo"
prop=
"logo"
>
<
template
#
default=
"{row}"
>
<el-image
style=
"width:
80px;height: 8
0px;display: block;"
style=
"width:
50px;height: 5
0px;display: block;"
v-if=
"row.logo"
:src=
"row.logo"
/>
...
...
@@ -39,7 +44,9 @@
name: row.name,
logo: row.logo,
regionCode: row.regionCode,
area: [row.province,row.city,row.region],
address: row.address,
descr: row.descr,
id: row.id,
}">编辑
</el-button>
<el-button
link
type=
"primary"
icon=
"Delete"
@
click=
"del(row)"
>
删除
</el-button>
...
...
@@ -49,22 +56,34 @@
<pagination
v-show=
"total > 0"
:total=
"total"
v-model:page=
"queryParams.pageNum"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<!-- 添加或修改账号问答框 -->
<el-dialog
title=
"新增企业"
v-model=
"open"
width=
"4
2
0px"
append-to-body
>
<el-form
label-width=
"100px"
style=
"padding-right: 15px;"
>
<el-dialog
title=
"新增企业"
v-model=
"open"
width=
"4
4
0px"
append-to-body
>
<el-form
label-width=
"100px"
style=
"padding-right: 15px;"
ref=
"addRef"
:model=
"openForm"
:rules=
"rules"
>
<el-form-item
label=
"企业名称"
prop=
"name"
>
<el-input
v-model=
"openForm.name"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"邮政编号"
prop=
"regionCode"
>
<el-input
v-model=
"openForm.regionCode"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"地址"
prop=
"address"
>
<el-form-item
label=
"地址"
prop=
"area"
>
<el-cascader
v-model=
"openForm.area"
:options=
"areaList"
@
change=
"(e)=>{console.log(e)}"
style=
"width: 100%"
:props=
"{ value: 'label' }"
/>
</el-form-item>
<el-form-item
label=
"详细地址"
prop=
"address"
>
<el-input
v-model=
"openForm.address"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"企业介绍"
prop=
"descr"
>
<el-input
v-model=
"openForm.descr"
placeholder=
"请输入"
type=
"textarea"
rows=
"3"
/>
</el-form-item>
<el-form-item
label=
"企业LOGO"
prop=
"logo"
>
<div>
<el-button
type=
"primary"
@
click=
"$refs.fileInput.click()"
>
上传图片
</el-button>
<el-image
style=
"width:
200px;display: block
;"
style=
"width:
100px;display: block;margin-top: 10px
;"
v-if=
"openForm.logo"
:src=
"openForm.logo"
/>
...
...
@@ -86,6 +105,7 @@
import
{
orgList
,
orgDel
,
orgSave
}
from
"@/api/enterprise"
;
import
{
ref
}
from
"vue"
;
import
{
uploadFileToOss
}
from
"@/utils/oss"
;
import
{
areaList
,
getAreaText
}
from
'@/utils/area.js'
const
{
proxy
}
=
getCurrentInstance
();
const
list
=
ref
([]);
const
loading
=
ref
(
false
);
...
...
@@ -99,6 +119,14 @@ const openForm = ref({
name
:
''
,
logo
:
''
,
})
const
rules
=
ref
({
name
:
[{
required
:
true
,
message
:
"请输入企业名称"
,
trigger
:
"blur"
}],
regionCode
:
[{
required
:
true
,
message
:
"请输入邮政编码"
,
trigger
:
"blur"
}],
area
:
[{
required
:
true
,
message
:
"请选择地址"
,
trigger
:
"blur"
}],
address
:
[{
required
:
true
,
message
:
"请输入详细地址"
,
trigger
:
"blur"
}],
descr
:
[{
required
:
true
,
message
:
"请输入企业介绍"
,
trigger
:
"blur"
}],
logo
:
[{
required
:
true
,
message
:
"请上传logo"
,
trigger
:
"blur"
}]
})
// 上传文件
function
handleFileChange
(
e
)
{
if
(
e
.
target
.
files
.
length
>
0
)
{
...
...
@@ -120,13 +148,19 @@ function getList() {
});
}
function
submit
()
{
if
(
!
openForm
.
value
.
name
)
{
return
proxy
.
$modal
.
msgError
(
"请输入企业名称"
);
}
orgSave
(
openForm
.
value
).
then
(
res
=>
{
proxy
.
$modal
.
msgSuccess
(
"操作成功"
);
open
.
value
=
false
;
getList
();
proxy
.
$refs
.
addRef
.
validate
(
valid
=>
{
if
(
valid
){
const
submitForm
=
{...
openForm
.
value
}
submitForm
.
province
=
submitForm
.
area
[
0
]
submitForm
.
city
=
submitForm
.
area
[
1
]
submitForm
.
region
=
submitForm
.
area
[
2
]
delete
submitForm
.
area
orgSave
(
submitForm
).
then
(
res
=>
{
proxy
.
$modal
.
msgSuccess
(
"操作成功"
);
open
.
value
=
false
;
getList
();
})
}
})
}
...
...
src/views/recruit/add.vue
浏览文件 @
cce14ef1
<
template
>
<div
class=
"recruitAdd"
>
<el-dialog
:title=
"
'新增招聘需求
'"
v-model=
"dialogShow"
width=
"500px"
@
open=
"dialogOpen"
@
close=
"dialogClose"
>
<el-dialog
:title=
"
form.id ? '编辑岗位信息' : '岗位发布
'"
v-model=
"dialogShow"
width=
"500px"
@
open=
"dialogOpen"
@
close=
"dialogClose"
>
<el-form
:model=
"form"
:rules=
"rules"
label-width=
"100px"
style=
"padding-right: 40px;"
ref=
"addRef"
>
<el-form-item
label=
"招聘企业"
prop=
"orgId"
>
<el-select
...
...
@@ -20,20 +20,19 @@
<el-form-item
label=
"职位名称"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"职位类型"
prop=
"industryId"
>
<el-select
v-model=
"form.industryId"
placeholder=
"请选择"
filterable
<el-form-item
label=
"职位类型"
prop=
"industry"
>
<el-cascader
v-model=
"form.industry"
:options=
"industryList"
:show-all-levels=
"false"
@
change=
"(e)=>
{console.log(e)}"
style="width: 100%"
>
<el-option
v-for=
"item in industryList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
:props="{
value: 'name',
label: 'name',
children: 'chilList'
}"
/>
</el-form-item>
<el-form-item
label=
"招聘类型"
prop=
"recruitTypeId"
>
<el-select
...
...
@@ -92,7 +91,15 @@
/>
</el-form-item>
<el-form-item
label=
"招聘人数"
prop=
"times"
>
<el-input
v-model=
"form.times"
placeholder=
"请输入"
/>
<el-input-number
v-model=
"form.times"
step=
"1"
placeholder=
"请输入"
step-strictly
:min=
"1"
:controls=
"false"
style=
"width: 100%;"
/>
</el-form-item>
<el-form-item
label=
"薪资待遇"
prop=
"salaryMin"
>
<!--
<el-input
v-model=
"form.salaryMin"
placeholder=
"请输入"
/>
-->
...
...
@@ -139,20 +146,28 @@
</el-select>
</div>
</el-form-item>
<!--
<el-form-item
label=
"最低工资"
prop=
"salaryMin"
>
<el-input
v-model=
"form.salaryMin"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"最高工资"
prop=
"salaryMax"
>
<el-input
v-model=
"form.salaryMax"
placeholder=
"请输入"
/>
</el-form-item>
<el-form-item
label=
"发薪次数"
prop=
"payTimes"
>
<el-input
v-model=
"form.payTimes"
placeholder=
"请输入"
/>
</el-form-item>
-->
<el-form-item
label=
"绩效奖金"
prop=
"bonus"
>
<el-input
v-model=
"form.bonus"
placeholder=
"请输入"
/>
<el-input-number
v-model=
"form.bonus"
:step=
"0.01"
placeholder=
"请输入"
step-strictly
:min=
"0"
:controls=
"false"
style=
"width: 100%;"
/>
</el-form-item>
<el-form-item
label=
"地址"
prop=
"address"
>
<el-input
v-model=
"form.address"
placeholder=
"请输入"
/>
<el-form-item
label=
"地址"
prop=
"area"
>
<el-cascader
v-model=
"form.area"
:options=
"areaList"
@
change=
"(e)=>
{console.log(e)}"
style="width: 100%"
:props="{ value: 'label' }"
/>
</el-form-item>
<el-form-item
label=
"详细地址"
prop=
"address"
>
<el-input
v-model=
"form.address"
placeholder=
"请输入"
type=
"textarea"
rows=
"3"
/>
</el-form-item>
<el-form-item
label=
"职位描述"
prop=
"details"
>
<el-input
type=
"textarea"
v-model=
"form.details"
rows=
"3"
placeholder=
"请输入"
/>
...
...
@@ -170,7 +185,7 @@
<
script
setup
>
import
{
recruitSave
}
from
"@/api/recruit"
;
import
{
areaList
,
getAreaText
}
from
'@/utils/area.js'
import
{
ref
,
defineProps
,
...
...
@@ -183,6 +198,7 @@ const form = ref({});
const
rules
=
ref
({
orgId
:
[{
required
:
true
,
message
:
"请选择招聘企业"
,
trigger
:
"blur"
}],
name
:
[{
required
:
true
,
message
:
"请输入职位名称"
,
trigger
:
"blur"
}],
industry
:
[{
required
:
true
,
message
:
"请输入职位类型"
,
trigger
:
"blur"
}],
recruitTypeId
:
[{
required
:
true
,
message
:
"请选择招聘类型"
,
trigger
:
"blur"
}],
qualificationId
:
[{
required
:
true
,
message
:
"请选择学历"
,
trigger
:
"blur"
}],
experienceId
:
[{
required
:
true
,
message
:
"请选择经验"
,
trigger
:
"blur"
}],
...
...
@@ -190,7 +206,8 @@ const rules = ref({
times
:
[{
required
:
true
,
message
:
"请输入招聘人数"
,
trigger
:
"blur"
}],
salaryMin
:
[{
required
:
true
,
message
:
"请输入最低工资"
,
trigger
:
"blur"
}],
bonus
:
[{
required
:
true
,
message
:
"请输入绩效奖金"
,
trigger
:
"blur"
}],
address
:
[{
required
:
true
,
message
:
"请输入地址"
,
trigger
:
"blur"
}],
area
:
[{
required
:
true
,
message
:
"请选择地址"
,
trigger
:
"blur"
}],
address
:
[{
required
:
true
,
message
:
"请输入详细地址"
,
trigger
:
"blur"
}],
industryId
:
[{
required
:
true
,
message
:
"请选择职位类型"
,
trigger
:
"blur"
}],
details
:
[{
required
:
true
,
message
:
"请输入职位描述"
,
trigger
:
"blur"
}],
})
...
...
@@ -223,24 +240,23 @@ const salaryMinList = ref([
{
value
:
"26000"
,
label
:
"26000"
},
{
value
:
"27000"
,
label
:
"27000"
},
{
value
:
"28000"
,
label
:
"28000"
},
{
value
:
"29000"
,
label
:
"29000"
},
{
value
:
"30000"
,
label
:
"30000"
}
{
value
:
"29000"
,
label
:
"29000"
}
])
const
salaryMaxList
=
ref
([])
const
payTimeList
=
ref
([
{
value
:
"12"
,
label
:
"12薪"
},
{
value
:
"13"
,
label
:
"13薪"
},
{
value
:
"14"
,
label
:
"14薪"
},
{
value
:
"15"
,
label
:
"15薪"
},
{
value
:
"16"
,
label
:
"16薪"
},
{
value
:
"17"
,
label
:
"17薪"
},
{
value
:
"18"
,
label
:
"18薪"
},
{
value
:
"19"
,
label
:
"19薪"
},
{
value
:
"20"
,
label
:
"20薪"
},
{
value
:
"21"
,
label
:
"21薪"
},
{
value
:
"22"
,
label
:
"22薪"
},
{
value
:
"23"
,
label
:
"23薪"
},
{
value
:
"24"
,
label
:
"24薪"
},
{
value
:
12
,
label
:
"12薪"
},
{
value
:
13
,
label
:
"13薪"
},
{
value
:
14
,
label
:
"14薪"
},
{
value
:
15
,
label
:
"15薪"
},
{
value
:
16
,
label
:
"16薪"
},
{
value
:
17
,
label
:
"17薪"
},
{
value
:
18
,
label
:
"18薪"
},
{
value
:
19
,
label
:
"19薪"
},
{
value
:
20
,
label
:
"20薪"
},
{
value
:
21
,
label
:
"21薪"
},
{
value
:
22
,
label
:
"22薪"
},
{
value
:
23
,
label
:
"23薪"
},
{
value
:
24
,
label
:
"24薪"
},
])
const
props
=
defineProps
([
"selectOp"
,
"addVisible"
,
"detailInfo"
,
"selectOp"
]);
let
{
recruitAllList
,
experienceList
,
qualificationList
,
orgList
,
industryList
}
=
props
.
selectOp
;
...
...
@@ -260,7 +276,8 @@ const dialogShow = computed({
salaryMaxList
.
value
=
[...
salaryMinList
.
value
]
function
salaryMinChange
(
e
)
{
const
index
=
salaryMinList
.
value
.
findIndex
(
item
=>
item
.
value
===
e
)
salaryMaxList
.
value
=
salaryMinList
.
value
.
slice
(
index
)
salaryMaxList
.
value
=
salaryMinList
.
value
.
slice
(
index
+
1
)
salaryMaxList
.
value
.
push
({
value
:
"30000"
,
label
:
"30000"
})
form
.
value
.
salaryMax
=
''
}
function
dialogClose
()
{
...
...
@@ -281,7 +298,8 @@ function dialogOpen(){
payTimes
:
props
.
detailInfo
.
payTimes
,
bonus
:
props
.
detailInfo
.
bonus
,
address
:
props
.
detailInfo
.
address
,
industryId
:
props
.
detailInfo
.
industryId
,
industry
:
[
props
.
detailInfo
.
oneIndustryName
,
props
.
detailInfo
.
towIndustryName
,
props
.
detailInfo
.
industryName
],
area
:
[
props
.
detailInfo
.
province
,
props
.
detailInfo
.
city
,
props
.
detailInfo
.
region
],
details
:
props
.
detailInfo
.
details
,
times
:
props
.
detailInfo
.
times
,
time
:
[
props
.
detailInfo
.
startDate
,
props
.
detailInfo
.
expiredDate
]
...
...
@@ -303,7 +321,19 @@ function submit() {
submitForm
.
qualification
=
qualificationList
.
find
(
item
=>
item
.
id
==
submitForm
.
qualificationId
).
name
submitForm
.
qualificationCode
=
qualificationList
.
find
(
item
=>
item
.
id
==
submitForm
.
qualificationId
).
code
submitForm
.
orgName
=
orgList
.
find
(
item
=>
item
.
id
==
submitForm
.
orgId
).
name
submitForm
.
industryName
=
industryList
.
find
(
item
=>
item
.
id
==
submitForm
.
industryId
).
name
// 职位类型start
submitForm
.
oneIndustryName
=
submitForm
.
industry
[
0
]
submitForm
.
towIndustryName
=
submitForm
.
industry
[
1
]
submitForm
.
industryName
=
submitForm
.
industry
[
2
]
let
v1
=
industryList
.
find
(
item
=>
item
.
name
==
submitForm
.
industry
[
0
])
let
v2
=
v1
.
chilList
.
find
(
item
=>
item
.
name
==
submitForm
.
industry
[
1
])
submitForm
.
industryCode
=
v2
.
chilList
.
find
(
item
=>
item
.
name
==
submitForm
.
industry
[
2
]).
code
delete
submitForm
.
industry
// 职位类型end
submitForm
.
province
=
submitForm
.
area
[
0
]
submitForm
.
city
=
submitForm
.
area
[
1
]
submitForm
.
region
=
submitForm
.
area
[
2
]
delete
submitForm
.
area
if
(
submitForm
.
time
.
length
==
2
)
{
submitForm
.
startDate
=
submitForm
.
time
[
0
]
submitForm
.
expiredDate
=
submitForm
.
time
[
1
]
...
...
src/views/recruit/index.vue
浏览文件 @
cce14ef1
...
...
@@ -78,11 +78,15 @@
<el-table
v-loading=
"loading"
:data=
"list"
show-overflow-tooltip
>
<el-table-column
label=
"招聘企业"
prop=
"orgName"
/>
<el-table-column
label=
"职位"
prop=
"name"
/>
<el-table-column
label=
"职位类型"
prop=
"industryName"
/>
<el-table-column
label=
"招聘类型"
prop=
"recruitType"
/>
<el-table-column
label=
"经验"
prop=
"experience"
align=
"center"
/>
<el-table-column
label=
"学历"
prop=
"qualification"
/>
<el-table-column
label=
"地址"
prop=
"address"
/>
<el-table-column
label=
"职位类型"
prop=
"industryName"
/>
<el-table-column
label=
"地址"
prop=
"address"
>
<template
#
default=
"
{row}">
{{
row
.
province
}}
{{
row
.
city
}}
{{
row
.
region
}}
{{
row
.
address
}}
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
prop=
"createTime"
align=
"center"
width=
"160"
/>
<el-table-column
label=
"操作"
width=
"120"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
#
default=
"{row}"
>
...
...
vite.config.js
浏览文件 @
cce14ef1
...
...
@@ -30,8 +30,8 @@ export default defineConfig(({ mode, command }) => {
open
:
true
,
proxy
:
{
'/jfb-recruit'
:
{
//
target: 'http://192.168.0.6:8000',
target
:
'https://jyzp.365jft.com/jfb-recruit'
,
target
:
'http://192.168.0.6:8000'
,
//
target: 'https://jyzp.365jft.com/jfb-recruit',
changeOrigin
:
true
,
rewrite
:
(
p
)
=>
p
.
replace
(
/^
\/
jfb-recruit/
,
''
)
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论