招聘管理功能

main
lijingyu007 7 months ago
parent 1b0468f01c
commit 1133a648a9
  1. 2
      .env.development
  2. 59
      src/api/job/index.js
  3. 5
      src/page/homepage/personability/abilityMoreDetail.vue
  4. 2
      src/page/homepage/personability/abilityUser.vue
  5. 5
      src/page/homepage/personability/abilityUserDetail.vue
  6. 231
      src/page/personalpage/jobm/addjob.vue
  7. 72
      src/page/personalpage/jobm/job.vue

@ -5,8 +5,8 @@ ENV = 'development'
VUE_APP_BASE_API = '/prod-api'
# VUE_APP_BASE_TARGET = 'http://192.168.0.229:9999'
VUE_APP_BASE_TARGET = 'http://192.168.0.229:9999'
# VUE_APP_BASE_TARGET = 'http://192.168.0.129:9999'
# VUE_APP_BASE_TARGET = 'http://172.16.36.180:9999'
# VUE_APP_BASE_TARGET = 'http://172.16.36.176:9998'

@ -0,0 +1,59 @@
import request from "../request";
// 查询我的工具列表
export function jobList(id, params) {
return request({
url: '/job/myIssueJob/' + id,
method: 'get',
params
})
}
// 发布
export function fbStatus(id) {
return request({
url: '/job/issue/' + id,
method: 'post',
})
}
// 取消发布
export function qxfbStatus(id) {
return request({
url: '/job/cancelIssue/' + id,
method: 'post',
})
}
// 新增
export function addJob(data) {
return request({
url: '/job/addJob',
method: 'post',
data
})
}
// 修改
export function editJob(data) {
return request({
url: '/job/editJob',
method: 'post',
data
})
}
// 删除
export function deleteJob(id) {
return request({
url: '/job/' + id,
method: 'delete',
})
}
// 查看详情
export function jobDetailById(id) {
return request({
url: '/job/detail/' + id,
method: 'get',
headers: {
isToken: false
}
})
}

@ -43,7 +43,7 @@
工作经历
</div>
<template v-if="workList.length">
<div v-for="it in workList" :key="it.caseId">
<div v-for="it in workList" :key="it.caseId" style="margin-bottom: 30px">
<div class="contentitemM">
<div class="contentitemML">公司名称{{ it.name }}</div>
<div class="contentitemML">职位{{ it.title }}</div>
@ -60,7 +60,7 @@
项目经历
</div>
<template v-if="projectList.length">
<div v-for="it in projectList" :key="it.caseId">
<div v-for="it in projectList" :key="it.caseId" style="margin-bottom: 30px">
<div class="contentitemM">
<div class="contentitemML">公司名称{{ it.name }}</div>
<div class="contentitemML">担任角色{{ it.title }}</div>
@ -251,6 +251,7 @@ export default {
}
.contentitemTBookit {
margin-right: 30px;
margin-bottom: 20px;
}
.contentitemTBookitT {
font-weight: 500;

@ -94,7 +94,7 @@ export default {
this.$router.push({
path: '/ability/detail',
query: {
id: it.jobId,
id: it.job_id,
},
})
},

@ -33,10 +33,7 @@
</div>
<div class="topboxR">
<div class="topboxRT">
<div class="topboxRTIT">五险一金</div>
<div class="topboxRTIT">加班补助</div>
<div class="topboxRTIT">餐补</div>
<div class="topboxRTIT">带薪年假</div>
<div class="topboxRTIT" v-for="it in jonInfo.welfare.split(',')" :key="it">{{it}}</div>
</div>
<div class="topboxRB">{{ jonInfo.company }}</div>
</div>

@ -4,54 +4,76 @@
<div slot="header" class="clearfix">
<div class="cardtitle">
<div class="cardline"></div>
<div class="cardtext">新增招聘</div>
<div class="cardtext">{{ form.jobId ? '修改' : '新增' }}招聘</div>
</div>
<div class="cardBtn" @click="backlist">{{ '< 返回' }}</div>
</div>
<!-- 表单 -->
<el-form :model="form" :rules="rules" ref="form" label-width="100px" class="formclass">
<el-form-item label="职位名称:" prop="name">
<el-input v-model="form.name"></el-input>
<el-form-item label="职位名称:" prop="title">
<el-input v-model="form.title" placeholder="请输入职位名称"></el-input>
</el-form-item>
<el-form-item label="经验要求:" prop="name">
<el-input v-model="form.name"></el-input>
<!-- 工作地点 -->
<el-form-item label="工作地点" prop="city" class="citybox">
<el-input v-model="form.city" v-show="false"></el-input>
<v-distpicker
@province="onChangeProvince"
@city="onChangeCity"
:placeholders="placeholders"
:province="province"
:city="city"
hide-area
></v-distpicker>
</el-form-item>
<el-form-item label="招聘人数:" prop="name" class="littleBox">
<el-input v-model="form.name"></el-input>
<el-form-item label="经验要求:" prop="experience">
<el-input v-model="form.experience" placeholder="请输入经验要求"></el-input>
</el-form-item>
<el-form-item label="工作方式:" prop="name" class="littleBox">
<el-select v-model="form.region" placeholder="请选择活动区域">
<el-option label="全职" value="全职"></el-option>
<el-option label="兼职" value="兼职"></el-option>
<el-form-item label="招聘人数:" prop="personCount" class="littleBox">
<el-input min="1" type="number" v-model="form.personCount" placeholder="请输入招聘人数"></el-input>
</el-form-item>
<el-form-item label="工作方式:" prop="jobType" class="littleBox">
<el-select v-model="form.jobType" placeholder="请选择工作方式">
<el-option label="全职" :value="0"></el-option>
<el-option label="兼职" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item label="学历要求:" prop="name" class="littleBox">
<el-select v-model="form.region" placeholder="请选择活动区域">
<el-form-item label="学历要求:" prop="education" class="littleBox">
<el-select v-model="form.education" placeholder="请选择学历要求">
<el-option label="硕士" value="硕士"></el-option>
<el-option label="本科" value="本科"></el-option>
<el-option label="专科" value="专科"></el-option>
<el-option label="不限学历" value="不限学历"></el-option>
</el-select>
</el-form-item>
<el-form-item label="福利:" prop="name">
<el-select v-model="form.region" multiple placeholder="请选择活动区域">
<el-option label="硕士" value="硕士"></el-option>
<el-option label="本科" value="本科"></el-option>
<el-option label="专科" value="专科"></el-option>
<el-option label="不限学历" value="不限学历"></el-option>
<el-form-item label="福利:" prop="welfare">
<el-select v-model="form.welfare" multiple placeholder="请选择福利">
<el-option label="五险一金" value="五险一金"></el-option>
<el-option label="餐饮福利" value="餐饮福利"></el-option>
<el-option label="住房福利" value="住房福利"></el-option>
<el-option label="带薪休假" value="带薪休假"></el-option>
<el-option label="节日福利" value="节日福利"></el-option>
<el-option label="生日福利" value="生日福利"></el-option>
<el-option label="健康体检" value="健康体检"></el-option>
</el-select>
</el-form-item>
<el-form-item label="入职企业:" prop="name">
<el-input v-model="form.name"></el-input>
<el-form-item label="入职企业:" prop="company">
<el-input v-model="form.company" placeholder="请输入入职企业"></el-input>
</el-form-item>
<el-form-item label="职位描述:" prop="name">
<el-input v-model="form.name" type="textarea"></el-input>
<el-form-item label="职位描述:" prop="jobDesc" class="jobDesc">
<quill-editor
class="ql-editor"
v-model="editContent"
ref="myQuillEditor"
:options="editorOption"
@change="onEditorChange($event)"
>
</quill-editor>
</el-form-item>
<el-form-item label="薪资范围:" prop="name">
<el-input v-model="form.name"></el-input>
<el-form-item label="薪资范围:" prop="emolument">
<el-input v-model="form.emolument" placeholder="请输入入职企业"></el-input>
</el-form-item>
<el-form-item label="" prop="name">
<div class="subJob">保存</div>
<el-form-item label="">
<div class="subJob" @click="subJob">保存</div>
</el-form-item>
</el-form>
</el-card>
@ -59,30 +81,177 @@
</template>
<script>
import { mapGetters } from 'vuex'
import { addJob, jobDetailById, editJob } from '@/api/job'
//
import { quillEditor } from 'vue-quill-editor' //
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import Quill from 'quill'
const fontSizeStyle = Quill.import('attributors/style/size')
fontSizeStyle.whitelist = ['12px', '14px', '16px', '18px', '20px', '24px', '28px', '32px', '36px']
Quill.register(fontSizeStyle, true)
const Font = Quill.import('attributors/style/font')
const fonts = ['SimSun', 'SimHei', 'Microsoft-YaHei', 'KaiTi', 'FangSong']
Font.whitelist = fonts
Quill.register(Font, true)
const AlignStyle = Quill.import('attributors/style/align')
AlignStyle.whitelist = ['right', 'center', 'justify']
Quill.register(AlignStyle, true)
const toolbarOptions = [
['bold', 'italic', 'underline', 'strike'],
[{ color: [] }, { background: [] }],
[{ align: [] }],
[{ size: fontSizeStyle.whitelist }],
[{ font: fonts }],
[{ header: [1, 2, 3, 4, 5, 6, true] }],
[{ direction: 'ltl' }],
[{ direction: 'rtl' }],
[{ indent: '-1' }, { indent: '+1' }],
[{ list: 'ordered' }, { list: 'bullet' }],
[{ script: 'sub' }, { script: 'super' }],
['blockquote', 'code-block'],
['clean'],
]
//
export default {
components: { quillEditor },
data() {
return {
form: {},
form: {
city: '北京市-北京市',
},
rules: {
name: [{ required: true, message: '请输入职位名称', trigger: 'blur' }],
title: [{ required: true, message: '请输入职位名称', trigger: 'blur' }],
city: [{ required: true, message: '请输入工作地点', trigger: 'blur' }],
experience: [{ required: true, message: '请输入职位名称', trigger: 'blur' }],
personCount: [{ required: true, message: '请输入招聘人数', trigger: 'blur' }],
jobType: [{ required: true, message: '请选择工作方式', trigger: 'change' }],
education: [{ required: true, message: '请选择学历要求', trigger: 'change' }],
welfare: [{ required: true, message: '请选择福利', trigger: 'blur' }],
company: [{ required: true, message: '请输入入职企业', trigger: 'blur' }],
jobDesc: [{ required: true, message: '请输入职位描述', trigger: 'blur' }],
emolument: [{ required: true, message: '请输入薪资范围', trigger: 'blur' }],
},
province: '北京市',
city: '北京市',
placeholders: {
province: '--- 省 ----',
city: '--- 市 ---',
},
editContent: '', //
editorOption: {
placeholder: '请在这里输入',
modules: {
toolbar: {
container: toolbarOptions,
},
},
},
}
},
mounted() {},
mounted() {
const id = this.$route.query.id
if (id) {
this.getDetail(id)
}
},
computed: {
...mapGetters(['userinform']),
},
methods: {
//
getDetail(id) {
jobDetailById(id).then((res) => {
this.form = res.data || {}
if (this.form.city) {
this.province = this.form.city.split('-')[0]
this.city = this.form.city.split('-')[1]
}
this.editContent = this.form.jobDesc
if (this.form.welfare) {
this.form.welfare = this.form.welfare.split(',')
}
})
},
//
backlist() {
this.$router.push('/console/jobM')
},
subJob() {},
//
subJob() {
this.form.jobDesc = this.editContent
this.form.welfare = this.form.welfare.join(',')
this.$refs.form.validate((valid) => {
if (valid) {
if (this.form.jobId) {
//
editJob(this.form).then((res) => {
this.$message.success('修改成功')
this.form = { city: '北京市-北京市' }
this.$router.push('/console/jobM')
})
} else {
//
addJob(this.form).then((res) => {
this.$message.success('新增成功')
this.form = { city: '北京市-北京市' }
this.$router.push('/console/jobM')
})
}
}
})
},
//
onChangeProvince(data) {
if (data.value.indexOf('---') == -1) {
this.province = data.value
this.city = '--- 市 ---'
this.form.city = this.province + '-' + this.city
} else {
this.province = ''
}
},
//
onChangeCity(data) {
if (data.value.indexOf('---') == -1) {
this.city = data.value
this.form.city = this.province + '-' + this.city
} else {
this.city = ''
}
},
onEditorChange() {
this.form.jobDesc = this.escapeStringHTML(this.editContent)
},
escapeStringHTML(content) {
content = content.replace(/&lt;/g, '<')
content = content.replace(/&gt;/g, '>')
return content
},
},
}
</script>
<style scoped>
.jobDesc >>> .quill-editor {
width: 570px;
padding: 0;
}
.jobDesc >>> .ql-container {
height: 150px;
}
.citybox >>> select {
width: 282px !important;
font-size: 14px !important;
}
.littleBox >>> .el-input__inner {
padding: 0 0 0 15px;
}
.clearfix {
display: flex;
justify-content: space-between;

@ -8,26 +8,35 @@
</div>
<div class="cardBtn" @click="goanthor('/console/addjob')">新增招聘</div>
</div>
<el-table :data="sactionData">
<el-table-column label="序号" align="center" prop="name" />
<el-table-column label="岗位名称" align="center" prop="name" />
<el-table-column label="薪资范围" align="center" prop="name" />
<el-table-column label="工作地点" align="center" prop="name" />
<el-table-column label="经验要求" align="center" prop="name" />
<el-table-column label="学历要求" align="center" prop="name" />
<el-table-column label="招聘人数" align="center" prop="name" />
<el-table :data="jobData">
<el-table-column label="序号" align="center" prop="job_id" />
<el-table-column label="岗位名称" align="center" prop="title" />
<el-table-column label="薪资范围" align="center" prop="emolument" />
<el-table-column label="工作地点" align="center" prop="city" />
<el-table-column label="经验要求" align="center" prop="experience" />
<el-table-column label="学历要求" align="center" prop="education" />
<el-table-column label="招聘人数" align="center" prop="person_count" />
<el-table-column label="申请岗位人数" align="center" prop="name">
<template slot-scope="scope">
<span @click="goanthor('/console/jobuser')" style="color: #1578ed; cursor: pointer">{{
'123'
scope.row.huntCount
}}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" prop="name" />
<el-table-column label="状态" align="center" prop="status">
<template slot-scope="scope">
<el-tag v-if="scope.row.status == 1" effect="dark" type="success">已发布</el-tag>
<el-tag v-if="scope.row.status == 0" effect="dark" type="danger">未发布</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="260">
<template slot-scope="scope">
<el-button type="text" @click="fabu(scope.row, 1)"> 发布 </el-button>
<el-button type="text" @click="fabu(scope.row, 0)"> 取消发布 </el-button>
<el-button v-if="scope.row.status == 0" type="text" @click="fabu(scope.row, 1)">
发布
</el-button>
<el-button v-if="scope.row.status == 1" type="text" @click="fabu(scope.row, 0)">
取消发布
</el-button>
<el-button type="text" @click="edit(scope.row)"> 编辑 </el-button>
<el-button type="text" @click="delFn(scope.row)"> 删除 </el-button>
</template>
@ -57,11 +66,11 @@
</template>
<script>
import { mapGetters } from 'vuex'
import { querydemand } from '@/api/my/testb'
import { jobList, fbStatus, qxfbStatus, deleteJob } from '@/api/job'
export default {
data() {
return {
sactionData: [],
jobData: [],
total: 0,
queryParams: {
pageSize: 10,
@ -77,14 +86,13 @@ export default {
this.getList()
},
computed: {
...mapGetters(['userinform']),
...mapGetters(['userId']),
},
methods: {
getList() {
querydemand(this.userinform.userId).then((res) => {
// res.rows=[{recordName:'1',recordType:'3',recordAmount:'500.363654',recordStatus:'2',recordTime:'2023.01.60 10:50'}]
this.sactionData = res.rows
jobList(this.userId, this.queryParams).then((res) => {
this.jobData = res.rows
this.total = res.total
})
},
@ -93,7 +101,7 @@ export default {
},
//
fabu(row, val) {
this.delId = row.id
this.delId = row.job_id
this.dialogVisible = true
this.titletext = val ? '发布' : '取消发布'
this.dailogtext = val ? '确定要发布该职位吗?' : '确定要取消发布该职位吗?'
@ -104,24 +112,42 @@ export default {
},
//
delFn(row) {
this.delId = row.id
this.delId = row.job_id
this.dialogVisible = true
this.titletext = '删除'
this.dailogtext = '删除后相关的申请岗位人数将无法查询,确定要删除吗?'
},
//
submitDia() {
this.dialogVisible = false
if (this.titletext == '取消发布') {
qxfbStatus(this.delId).then((res) => {
this.$message.success('取消发布成功!')
this.dialogVisible = false
this.getList()
})
} else if (this.titletext == '发布') {
fbStatus(this.delId).then((res) => {
this.$message.success('发布成功!')
this.dialogVisible = false
this.getList()
})
} else {
deleteJob(this.delId).then((res) => {
this.$message.success('删除成功!')
this.dialogVisible = false
this.getList()
})
}
},
//
cancelDia() {
this.dialogVisible = false
},
//
edit(row) {
this.$router.push({
path: '/console/addjob',
query: { id: row.id },
query: { id: row.job_id },
})
},
},

Loading…
Cancel
Save