|
@@ -4,196 +4,381 @@
|
|
|
* @Autor: XuTongZhang
|
|
|
* @Date: 2020-07-28 15:25:06
|
|
|
* @LastEditors: XuTongZhang
|
|
|
- * @LastEditTime: 2020-08-02 16:48:59
|
|
|
+ * @LastEditTime: 2020-08-05 20:30:04
|
|
|
-->
|
|
|
<template>
|
|
|
<div class="indexPage">
|
|
|
- <v-input :btn="btn" :list="list" @del="delAll" @search="search"></v-input>
|
|
|
+ <v-input
|
|
|
+ :btn="isCollapse?isCollapse===1?btn1:btn2:btn0"
|
|
|
+ :list="list"
|
|
|
+ :key="isCollapse+3"
|
|
|
+ @del="delAll"
|
|
|
+ @search="search"
|
|
|
+ @through="throughAll"
|
|
|
+ @eliminate="eliminateAll"
|
|
|
+ ></v-input>
|
|
|
<el-radio-group v-model="isCollapse" style="margin-bottom: 20px;">
|
|
|
+ <el-radio-button :label="0">候选人列表</el-radio-button>
|
|
|
<el-radio-button :label="1">已通过候选人</el-radio-button>
|
|
|
<el-radio-button :label="2">已淘汰候选人</el-radio-button>
|
|
|
</el-radio-group>
|
|
|
<v-table
|
|
|
:key="isCollapse"
|
|
|
- :table="table"
|
|
|
+ :table="isCollapse===2?table2:table"
|
|
|
:tableList="tableList"
|
|
|
:sortType="true"
|
|
|
+ :form="searchForm"
|
|
|
:queryData="queryData"
|
|
|
- :form="form"
|
|
|
@details="details"
|
|
|
- @update="update"
|
|
|
+ @eliminate="eliminate"
|
|
|
+ @through="through"
|
|
|
+ @del="del"
|
|
|
@selection-change="selection"
|
|
|
- id=""
|
|
|
+ id="id"
|
|
|
></v-table>
|
|
|
<v-pager @page="callPage" :total="totalrecords"></v-pager>
|
|
|
+ <resume :dialogFormVisible="dialogVisible" :close="closeDia" :info="info" :searchForm="searchForm" :queryData="queryData"></resume>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import resume from './resume'
|
|
|
export default {
|
|
|
data () {
|
|
|
return {
|
|
|
+ dialogFormVisible: false,
|
|
|
+ dialogVisible: false,
|
|
|
tableList: [],
|
|
|
page: 1,
|
|
|
- sortRule: {},
|
|
|
- isCollapse: 1,
|
|
|
+ isCollapse: 0,
|
|
|
totalrecords: 0,
|
|
|
pickList: [],
|
|
|
+ downList: [],
|
|
|
+ searchForm: {},
|
|
|
form: {},
|
|
|
+ info: {},
|
|
|
+ rules: {
|
|
|
+ templateId: [
|
|
|
+ { required: true, message: '请选择群发模板', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
list: [
|
|
|
{
|
|
|
placeholder: '请输入关键字查询',
|
|
|
- props: ''
|
|
|
+ props: 'condition'
|
|
|
},
|
|
|
{
|
|
|
type: 'select',
|
|
|
placeholder: '性别',
|
|
|
- props: '',
|
|
|
- options: [{ label: '男', value: 1 }, { label: '女', value: 0 }]
|
|
|
+ props: 'delivererSex',
|
|
|
+ options: [
|
|
|
+ { label: '男', value: 1 },
|
|
|
+ { label: '女', value: 0 }
|
|
|
+ ]
|
|
|
},
|
|
|
{
|
|
|
type: 'select',
|
|
|
placeholder: '来源',
|
|
|
- props: '',
|
|
|
- options: []
|
|
|
+ props: 'resumeFrom',
|
|
|
+ options: [
|
|
|
+ { label: '51job', value: 0 },
|
|
|
+ { label: '智联', value: 1 },
|
|
|
+ { label: '58同城', value: 2 }
|
|
|
+ ]
|
|
|
},
|
|
|
{
|
|
|
- type: 'select',
|
|
|
- placeholder: '投递职位',
|
|
|
- props: '',
|
|
|
- options: []
|
|
|
+ placeholder: '请输入投递职位',
|
|
|
+ props: 'positionApplied'
|
|
|
},
|
|
|
{
|
|
|
type: 'select',
|
|
|
placeholder: '应聘职位',
|
|
|
- props: '',
|
|
|
+ props: 'desiredPositionId',
|
|
|
options: []
|
|
|
},
|
|
|
{
|
|
|
type: 'date'
|
|
|
}
|
|
|
],
|
|
|
- btn: [
|
|
|
+ btn0: [
|
|
|
{
|
|
|
name: '确定',
|
|
|
type: 'primary',
|
|
|
+ method: 'search'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '标记通过',
|
|
|
+ type: 'success',
|
|
|
+ method: 'through'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '标记淘汰',
|
|
|
+ type: 'danger',
|
|
|
+ method: 'eliminate'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ btn1: [
|
|
|
+ {
|
|
|
+ name: '确定',
|
|
|
+ type: 'primary',
|
|
|
+ method: 'search'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '通知成功',
|
|
|
+ type: 'success',
|
|
|
method: ''
|
|
|
}
|
|
|
],
|
|
|
+ btn2: [
|
|
|
+ {
|
|
|
+ name: '确定',
|
|
|
+ type: 'primary',
|
|
|
+ method: 'search'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '标记通过',
|
|
|
+ type: 'success',
|
|
|
+ method: 'through'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ name: '删除',
|
|
|
+ type: 'danger',
|
|
|
+ method: 'del'
|
|
|
+ }
|
|
|
+ ],
|
|
|
table: {
|
|
|
selection: true,
|
|
|
column: [
|
|
|
{
|
|
|
label: '编号',
|
|
|
- props: ''
|
|
|
+ props: 'id'
|
|
|
},
|
|
|
{
|
|
|
label: '姓名',
|
|
|
- props: ''
|
|
|
+ props: 'delivererName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '性别',
|
|
|
+ props: 'delivererSex',
|
|
|
+ options: ['女', '男']
|
|
|
},
|
|
|
{
|
|
|
label: '简历来源',
|
|
|
- props: ''
|
|
|
+ props: 'resumeFrom',
|
|
|
+ options: ['51job', '智联招聘', '58同城']
|
|
|
},
|
|
|
{
|
|
|
- label: '简历投递时间',
|
|
|
- props: ''
|
|
|
+ label: '招聘类型',
|
|
|
+ props: 'recruitType',
|
|
|
+ options: ['社招', '校招', '直接校招']
|
|
|
},
|
|
|
{
|
|
|
label: '简历投递职位',
|
|
|
- props: ''
|
|
|
+ props: 'positionApplied'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '面试应聘职位',
|
|
|
+ props: 'desiredPositionId'
|
|
|
},
|
|
|
{
|
|
|
label: '工作年限',
|
|
|
- props: ''
|
|
|
+ props: 'delivererWorkExp'
|
|
|
},
|
|
|
{
|
|
|
label: '学历',
|
|
|
- props: ''
|
|
|
+ props: 'delivererEducation'
|
|
|
},
|
|
|
{
|
|
|
label: '联系电话',
|
|
|
- props: ''
|
|
|
+ props: 'delivererPhone'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '通知面试时间',
|
|
|
+ props: 'sendMailTime'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '完成面试时间',
|
|
|
+ props: 'confirmInterviewTime'
|
|
|
}
|
|
|
],
|
|
|
+ width: 310,
|
|
|
handle: [
|
|
|
{
|
|
|
title: '查看简历',
|
|
|
- method: '',
|
|
|
+ method: 'details',
|
|
|
type: 'info'
|
|
|
},
|
|
|
{
|
|
|
- title: '通知面试',
|
|
|
- method: '',
|
|
|
+ title: '标记通过',
|
|
|
+ method: 'through',
|
|
|
+ type: 'success'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '标记淘汰',
|
|
|
+ method: 'eliminate',
|
|
|
+ type: 'danger'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ table2: {
|
|
|
+ selection: true,
|
|
|
+ column: [
|
|
|
+ {
|
|
|
+ label: '编号',
|
|
|
+ props: 'id'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '姓名',
|
|
|
+ props: 'delivererName'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '性别',
|
|
|
+ props: 'delivererSex',
|
|
|
+ options: ['女', '男']
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '简历来源',
|
|
|
+ props: 'resumeFrom',
|
|
|
+ options: ['51job', '智联招聘', '58同城']
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '简历投递职位',
|
|
|
+ props: 'positionApplied'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '面试应聘职位',
|
|
|
+ props: 'desiredPositionId'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '工作年限',
|
|
|
+ props: 'delivererWorkExp'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '学历',
|
|
|
+ props: 'delivererEducation'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '联系电话',
|
|
|
+ props: 'delivererPhone'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '被标记未通过时间',
|
|
|
+ props: 'rejectTime'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '理由',
|
|
|
+ props: 'rejectReason'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ width: 300,
|
|
|
+ handle: [
|
|
|
+ {
|
|
|
+ title: '查看简历',
|
|
|
+ method: 'details',
|
|
|
type: 'info'
|
|
|
},
|
|
|
{
|
|
|
title: '标记通过',
|
|
|
- method: '',
|
|
|
- type: 'info'
|
|
|
+ method: 'through',
|
|
|
+ type: 'success'
|
|
|
},
|
|
|
{
|
|
|
- title: '标记淘汰',
|
|
|
- method: '',
|
|
|
- type: 'warning'
|
|
|
+ title: '删除',
|
|
|
+ method: 'del',
|
|
|
+ type: 'danger'
|
|
|
}
|
|
|
]
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
mounted () {
|
|
|
- // this.queryData()
|
|
|
+ this.queryData()
|
|
|
+ this.queryDownList()
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ resume
|
|
|
},
|
|
|
methods: {
|
|
|
- queryData (form = { conditions: '' }, sort = {}) {
|
|
|
+ queryData (form = {}) {
|
|
|
let page = this.page
|
|
|
- this.sortRule = sort
|
|
|
- this.form = form
|
|
|
- let reqdata = Object.assign({}, form, sort)
|
|
|
+ this.searchForm = form
|
|
|
+ let reqdata = form
|
|
|
+ reqdata.interviewResult = this.isCollapse
|
|
|
this.$api
|
|
|
- .post('', {
|
|
|
+ .post('/resumeInfo/queryCandidateList', {
|
|
|
reqdata,
|
|
|
page
|
|
|
})
|
|
|
.then((res) => {
|
|
|
this.totalrecords = res.totalrecords
|
|
|
- this.tableList = res.list.map((item) => {
|
|
|
- item.ctx = item.infoContent
|
|
|
- ? item.infoContent.length > 15
|
|
|
- ? item.infoContent.replace(/<[^>]+>/g, '').slice(0, 15) + '...'
|
|
|
- : item.infoContent.replace(/<[^>]+>/g, '').slice(0, 15)
|
|
|
- : ''
|
|
|
- return item
|
|
|
- })
|
|
|
+ this.tableList = res.list
|
|
|
+ })
|
|
|
+ },
|
|
|
+ queryDownList () {
|
|
|
+ this.$api
|
|
|
+ .post('/position/queryPositionList', {
|
|
|
+ reqdata: {}
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.list[4].options = res.list.map((item) => ({
|
|
|
+ value: item.id,
|
|
|
+ label: item.positionName
|
|
|
+ }))
|
|
|
+ })
|
|
|
+ this.$api
|
|
|
+ .post('/template/queryTemplateList', {
|
|
|
+ reqdata: {}
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.downList = res.list
|
|
|
})
|
|
|
},
|
|
|
- search (form, sortRule) {
|
|
|
- this.queryData(form, sortRule)
|
|
|
+ search (form) {
|
|
|
+ this.queryData(form)
|
|
|
},
|
|
|
details (row) {
|
|
|
- this.dialogVisible = true
|
|
|
- this.querydetail(row.infoId)
|
|
|
+ this.openDia()
|
|
|
+ this.info = row
|
|
|
+ },
|
|
|
+ through (row, type = false) {
|
|
|
+ let ids = type ? row : [row.id]
|
|
|
+ let resumeInfoStatusList = ids.map(item => ({ id: item, interviewResult: 1 }))
|
|
|
+ this.$api
|
|
|
+ .post('/resumeInfo/changeInterviewResult', {
|
|
|
+ reqdata: {
|
|
|
+ resumeInfoStatusList
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .then((res) => {
|
|
|
+ this.queryData(this.searchForm)
|
|
|
+ })
|
|
|
},
|
|
|
- update (row) {
|
|
|
- this.type = 1
|
|
|
- this.querydetail(row.infoId)
|
|
|
- this.openDiaLog()
|
|
|
+ throughAll () {
|
|
|
+ this.pickList.length
|
|
|
+ ? this.through(this.pickList, true)
|
|
|
+ : this.$message({ type: 'info', message: '请选择通过的应聘者' })
|
|
|
},
|
|
|
- querydetail (infoId) {
|
|
|
+ eliminate (row, type = false) {
|
|
|
+ let ids = type ? row : [row.id]
|
|
|
+ let resumeInfoStatusList = ids.map(item => ({ id: item, interviewResult: 2 }))
|
|
|
this.$api
|
|
|
- .post('/platform/information/platformGetInformation', {
|
|
|
+ .post('/resumeInfo/changeInterviewResult', {
|
|
|
reqdata: {
|
|
|
- infoId
|
|
|
+ resumeInfoStatusList
|
|
|
}
|
|
|
})
|
|
|
.then((res) => {
|
|
|
- let obj = res.object
|
|
|
- // obj.createtime = this.$utils.format(res.object.createtime)
|
|
|
- this.info = obj
|
|
|
+ this.queryData(this.searchForm)
|
|
|
})
|
|
|
},
|
|
|
+ eliminateAll () {
|
|
|
+ this.pickList.length
|
|
|
+ ? this.eliminate(this.pickList, true)
|
|
|
+ : this.$message({ type: 'info', message: '请选择被淘汰的应聘者' })
|
|
|
+ },
|
|
|
del (row, type = false) {
|
|
|
- let id = type ? row : [row.infoId]
|
|
|
+ let ids = type ? row : [row.id]
|
|
|
+ let deleteResumeInfoList = ids.map(item => ({ id: item, status: 1 }))
|
|
|
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
|
|
|
confirmButtonText: '确定',
|
|
|
cancelButtonText: '取消',
|
|
@@ -201,13 +386,13 @@ export default {
|
|
|
})
|
|
|
.then(() => {
|
|
|
this.$api
|
|
|
- .post('/platform/information/platformDeleteInformation', {
|
|
|
+ .post('/resumeInfo/deleteResumeInfo', {
|
|
|
reqdata: {
|
|
|
- id
|
|
|
+ deleteResumeInfoList
|
|
|
}
|
|
|
})
|
|
|
.then((res) => {
|
|
|
- this.queryData(this.form, this.sortRule)
|
|
|
+ this.queryData(this.searchForm)
|
|
|
this.$message({
|
|
|
type: 'success',
|
|
|
message: '删除成功!'
|
|
@@ -227,11 +412,54 @@ export default {
|
|
|
: this.$message({ type: 'info', message: '请选择需要删除的内容' })
|
|
|
},
|
|
|
selection (val) {
|
|
|
- this.pickList = val
|
|
|
+ this.$set(this.$data, 'pickList', val)
|
|
|
+ },
|
|
|
+ closeDia () {
|
|
|
+ this.dialogVisible = false
|
|
|
+ },
|
|
|
+ openDia () {
|
|
|
+ this.dialogVisible = true
|
|
|
},
|
|
|
callPage (val) {
|
|
|
this.page = val
|
|
|
- this.queryData(this.form, this.sortRule)
|
|
|
+ this.queryData(this.searchForm)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ isCollapse () {
|
|
|
+ this.queryData(this.searchForm)
|
|
|
+ this.isCollapse === 1
|
|
|
+ ? this.$set(this.table, 'handle', [
|
|
|
+ {
|
|
|
+ title: '查看简历',
|
|
|
+ method: 'details',
|
|
|
+ type: 'info'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '通知成功',
|
|
|
+ method: '',
|
|
|
+ type: 'success'
|
|
|
+ }
|
|
|
+ ])
|
|
|
+ : this.isCollapse === 0 && this.$set(this.table, 'handle',
|
|
|
+ [
|
|
|
+ {
|
|
|
+ title: '查看简历',
|
|
|
+ method: 'details',
|
|
|
+ type: 'info'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '标记通过',
|
|
|
+ method: 'through',
|
|
|
+ type: 'success'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ title: '标记淘汰',
|
|
|
+ method: 'eliminate',
|
|
|
+ type: 'danger'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ )
|
|
|
}
|
|
|
}
|
|
|
}
|