Commit 2580a21d by yangchao

update

1 parent 8eb09c66
...@@ -50,4 +50,15 @@ export function getJobClassify(data) { ...@@ -50,4 +50,15 @@ export function getJobClassify(data) {
}) })
} }
//投递拒绝原因
export function applyRefuseReasons(data) {
return request({
url: 'recruit/common/applyRefuseReasons',
method: 'post',
data: data,
source : 'zp'
})
}
...@@ -3,7 +3,7 @@ import request from '@/utils/request' ...@@ -3,7 +3,7 @@ import request from '@/utils/request'
//面试邀请列表 //面试邀请列表
export function interviewList (data) { export function interviewList (data) {
return request({ return request({
url: 'design/myTemplate/lists' , url: 'recruit/interview/list' ,
method : 'post' , method : 'post' ,
data : data , data : data ,
source : 'zp' source : 'zp'
...@@ -22,7 +22,7 @@ export function interviewDetail (data) { ...@@ -22,7 +22,7 @@ export function interviewDetail (data) {
//面试邀请处理 //面试邀请处理
export function interviewDispose (data) { export function interviewDispose (data) {
return request({ return request({
url: 'design/myTemplate/lists' , url: 'recruit/interview/ask' ,
method : 'post' , method : 'post' ,
data : data , data : data ,
source : 'zp' source : 'zp'
......
...@@ -13,7 +13,7 @@ export function resumeList (data) { ...@@ -13,7 +13,7 @@ export function resumeList (data) {
//简历详情 //简历详情
export function resumeDetail (data) { export function resumeDetail (data) {
return request({ return request({
url: 'design/myTemplate/lists' , url: 'recruit/cv/info' ,
method : 'post' , method : 'post' ,
data : data , data : data ,
source : 'zp' source : 'zp'
......
<template> <template>
<div> <div>
<el-upload class="upload-pic" action="//upload.qiniup.com" :data="form" :limit="1" multiple <el-upload class="upload-pic" action="//upload.qiniup.com" :data="form" :limit="66" multiple
:file-list="fileList" :on-error="handleErrorpics" :on-success="handleSuccesspics" :file-list="fileList" :on-error="handleErrorpics" :on-success="handleSuccesspics"
:before-upload="beforeUploadpics" list-type="picture-card" :before-upload="beforeUploadpics" list-type="picture-card"
:on-preview="handlePictureCardPreview" :on-remove="handleRemove" accept="image/*"> :on-preview="handlePictureCardPreview" :on-remove="handleRemove" accept="image/*">
...@@ -8,11 +8,12 @@ ...@@ -8,11 +8,12 @@
</el-upload> </el-upload>
<el-dialog :visible.sync="dialogVisible" width="40%" center> <el-dialog :visible.sync="dialogVisible" width="40%" center>
<div style="display: flex;align-items: center;flex-direction: row;"> <div style="display: flex;align-items: center;flex-direction: row;">
<!-- <div @click="toBeforeImg(imgIndex)"> 前移</div>--> <!-- <div @click="toBeforeImg(imgIndex)"> 前移</div>-->
<img width="80%" :src="dialogImageUrl" alt="" class="img"> <img width="80%" :src="dialogImageUrl" alt="" class="img">
<!-- <div @click="toAfterImg(imgIndex)"> 后移</div>--> <!-- <div @click="toAfterImg(imgIndex)"> 后移</div>-->
</div> </div>
</el-dialog> </el-dialog>
<!-- <p class="info">建议尺寸:750*750,小于1M,最多上传6张,建议主图背景为白色</p> -->
</div> </div>
</template> </template>
...@@ -35,7 +36,7 @@ ...@@ -35,7 +36,7 @@
dialogImageUrl: '', dialogImageUrl: '',
dialogVisible: false, dialogVisible: false,
is1M: false, is1M: false,
limitSize: 3, //验证图片大小,单位MB limitSize: 1, //验证图片大小,单位MB
imgIndex: -1, imgIndex: -1,
} }
}, },
...@@ -49,6 +50,14 @@ ...@@ -49,6 +50,14 @@
} }
}, },
methods: { methods: {
// toBeforeImg(index) {
// this.pics[index] = this.pics[index-1];
// console.log(this.pics);
// },
// toAfterImg(index) {
//
// },
handleImageList(fileList) { handleImageList(fileList) {
this.pics = []; this.pics = [];
fileList.forEach((v, i) => { fileList.forEach((v, i) => {
...@@ -79,7 +88,7 @@ ...@@ -79,7 +88,7 @@
this.is1M = file.size / 1024 / 1024 < this.limitSize; this.is1M = file.size / 1024 / 1024 < this.limitSize;
if (!this.is1M) { if (!this.is1M) {
Loading.service({}).close(); Loading.service({}).close();
this.$message.error('上传图片应小于3M'); this.$message.error('上传图片应小于1M');
return false return false
} }
...@@ -108,6 +117,12 @@ ...@@ -108,6 +117,12 @@
handlePictureCardPreview(file) { handlePictureCardPreview(file) {
this.dialogImageUrl = file.url; this.dialogImageUrl = file.url;
this.dialogVisible = true; this.dialogVisible = true;
// if (file.response && file.response.domain && file.response.truekey) {
// file.url = file.response.domain + file.response.truekey;
// }
// this.imgIndex = this.pics.indexOf(file.url);
// console.log(this.imgIndex);
}, },
}, },
} }
...@@ -123,20 +138,14 @@ ...@@ -123,20 +138,14 @@
.img { .img {
margin: 0 auto; margin: 0 auto;
height: 114px;
width: 114px;
} }
.upload-pic >>> .el-upload--picture-card { .upload-pic >>> .el-upload--picture-card {
line-height: 114px; line-height: 156px;
height: 114px;
width: 114px;
} }
.upload-pic >>> .el-upload-list--picture-card .el-upload-list__item-actions { .upload-pic >>> .el-upload-list--picture-card .el-upload-list__item-actions {
line-height: 114px; line-height: 144px;
left: -5px; left: -5px;
height: 114px;
width: 114px;
} }
</style> </style>
...@@ -33,6 +33,22 @@ export const constantRouterMap = [ ...@@ -33,6 +33,22 @@ export const constantRouterMap = [
}, },
//init //init
{ {
path: '/',
component: Layout,
redirect: '/position/list/list',
children: [
{
path: 'list',
component: _import('position/list'),
meta: {
auth: ['basic', 'generally'],
role: ['master']
}
}
]
},
//init
{
path: '/position/list', path: '/position/list',
component: Layout, component: Layout,
redirect: '/position/list/list', redirect: '/position/list/list',
...@@ -77,7 +93,7 @@ export const constantRouterMap = [ ...@@ -77,7 +93,7 @@ export const constantRouterMap = [
} }
}, },
{ {
path: 'list/detail/:id', path: 'list/detail',
component: _import('resume/detail'), component: _import('resume/detail'),
meta: { meta: {
auth: ['basic', 'generally'], auth: ['basic', 'generally'],
...@@ -100,7 +116,7 @@ export const constantRouterMap = [ ...@@ -100,7 +116,7 @@ export const constantRouterMap = [
} }
}, },
{ {
path: 'list/detail/:id', path: 'list/detail',
component: _import('recommend/detail'), component: _import('recommend/detail'),
meta: { meta: {
auth: ['basic', 'generally'], auth: ['basic', 'generally'],
...@@ -123,7 +139,7 @@ export const constantRouterMap = [ ...@@ -123,7 +139,7 @@ export const constantRouterMap = [
} }
}, },
{ {
path: 'list/detail/:id', path: 'list/detail',
component: _import('interview/detail'), component: _import('interview/detail'),
meta: { meta: {
auth: ['basic', 'generally'], auth: ['basic', 'generally'],
......
const positionTtpe= function (res) {
let content = [];
for (let item in res.data['01']) {
content.push({
value: item,
label: res.data['01'][item]
})
}
content.forEach((v,i) => {
for(let item in res.data) {
if(v.value == item) {
v.children = [];
for(let item_1 in res.data[item]) {
v.children.push({
value: item_1,
label: res.data[item][item_1]
})
}
}
}
v.children.forEach((vv,ii)=>{
for(let item in res.data) {
if(vv.value == item) {
v.children[ii].children = [];
for(let item_1 in res.data[item]) {
v.children[ii].children.push({
value: item_1,
label: res.data[item][item_1]
})
}
}
}
})
});
return content;
}
export {positionTtpe}
...@@ -42,11 +42,11 @@ const service = axios.create({ ...@@ -42,11 +42,11 @@ const service = axios.create({
// request interceptor // request interceptor
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
config.headers.token = getUserToken();
if (config.source === 'apc') { // if (config.source === 'apc') {
config.headers.token = getUserToken(); // config.headers.token = getUserToken();
} else // } else
config.headers.token = getMallToken(); // config.headers.token = getMallToken();
//判断baseURL //判断baseURL
// if (process.env.NODE_ENV === 'development') // if (process.env.NODE_ENV === 'development')
if (config.source === 'cm') config.baseURL = store.state.testBaseURL; if (config.source === 'cm') config.baseURL = store.state.testBaseURL;
......
<template> <template>
<div class="contanier"> <div class="contanier">
<!-- <div class="search-title">-->
<!-- <div></div>-->
<!-- <div>-->
<!-- <el-button type="primary" size="small" @click="optimizedVisible = true" >添加优化建议-->
<!-- </el-button>-->
<!-- <el-tooltip effect="dark" placement="right-start">-->
<!-- <div slot="content" class="slot">-->
<!-- <p>注释信息及辅助提示文字内容</p>-->
<!-- </div>-->
<!-- <el-button type="text" icon="el-icon-question"></el-button>-->
<!-- </el-tooltip>-->
<!-- </div>-->
<!-- </div>-->
<div class="resume-contanier"> <div class="resume-contanier">
<div class="resume-header flex"> <div class="resume-header flex">
<div class="flex resume-header_left" style="margin-right:200px;"> <div class="flex resume-header_left" style="margin-right:200px;">
<img src="https://wx.qlogo.cn/mmopen/vi_32/0nluCqghffPjzhVqMuguxaGFY0dgicfArLZrFGIJo3xL3wZrODiaJR8Znux6w7KhR1HeKTkw7Yw3fqrmcO7cNSWQ/132" alt="" class="resume-avatar"> <img :src="detailInfo.photo" alt="" class="resume-avatar">
<div class="resume-header_info flex-direct"> <div class="resume-header_info flex-direct">
<div> <div>
<span class="name mr">王富贵</span> <span class="name mr">{{detailInfo.base_name}}</span>
<span>先生/27</span> <span>{{detailInfo.base_sex==1?'男':'女'}}/{{detailInfo.age}}</span>
</div> </div>
<div> <div>
<span class="mr">教课老师</span> <span class="mr">{{detailInfo.work_experiences[0].job_name}}</span>
<span class="mr">本科</span> <span class="mr">{{detailInfo.edu_experiences[0].qualifications}}</span>
<span >3-5年</span> <!-- <span >3-5年</span> -->
</div> </div>
</div> </div>
</div> </div>
...@@ -33,11 +20,13 @@ ...@@ -33,11 +20,13 @@
<div class="resume-header_info flex-direct"> <div class="resume-header_info flex-direct">
<div class="flex-between"> <div class="flex-between">
<i class='iconfont icon-mobile txtSize'></i> <i class='iconfont icon-mobile txtSize'></i>
<span class='ml'>已隐藏</span> <span class='ml' v-if="detailInfo.show_status==2">已隐藏</span>
<span class='ml' v-else>{{detailInfo.base_phone}}</span>
</div> </div>
<div class="flex-between"> <div class="flex-between">
<i class='iconfont icon-dianziyoujian txtSize'></i> <i class='iconfont icon-dianziyoujian txtSize'></i>
<span class='ml'>已隐藏</span> <span class='ml' v-if="detailInfo.show_status==2">已隐藏</span>
<span class='ml' v-else>{{detailInfo.base_email}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -46,42 +35,39 @@ ...@@ -46,42 +35,39 @@
<div class="resume-item-title">求职意向</div> <div class="resume-item-title">求职意向</div>
<div class="resume-icon-style"> <div class="resume-icon-style">
<i class='iconfont icon-ruzhishijian txtSize'></i> <i class='iconfont icon-ruzhishijian txtSize'></i>
<span class='txt_adjust'>待业-求职中</span> <span class='txt_adjust'>
{{detailInfo.intention_current_status==1?'待业-求职中':
detailInfo.intention_current_status==2?'正常工作-寻求机会':
detailInfo.intention_current_status==3?'在业-暂不考虑机会':'学业中-寻找机会'
}}
</span>
</div> </div>
<div class="flex"> <div class="flex">
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-yingpinzhiwei txtSize'></i> <i class='iconfont icon-yingpinzhiwei txtSize'></i>
<span class='txt_adjust'>英语教师</span> <span class='txt_adjust'>{{detailInfo.job_name}}</span>
</div>
<div class="resume-icon-style gap">
<i class='iconfont icon-xueli txtSizel'></i>
<span class='txt_adjust'>初中</span>
</div> </div>
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-suozaichengshi txtSize'></i> <i class='iconfont icon-suozaichengshi txtSize'></i>
<span class='txt_adjust'>西安-雁塔</span> <span class='txt_adjust'>{{detailInfo.work_city}}-{{detailInfo.work_area}}</span>
</div> </div>
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-xinziyaoqiu txtSize'></i> <i class='iconfont icon-xinziyaoqiu txtSize'></i>
<span class='txt_adjust'>5K-10K</span> <span class='txt_adjust'>{{detailInfo.intention_salary_min?(detailInfo.intention_salary_min/100000).toFixed(1):0}}K-{{detailInfo.intention_salary_max?(detailInfo.intention_salary_max/100000).toFixed(1):0}}K</span>
</div> </div>
</div> </div>
</div> </div>
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title">工作经历</div> <div class="resume-item-title">工作经历</div>
<div class="resume-experice"> <div class="resume-experice">
<div class="resume-experice-item"> <div class="resume-experice-item" v-for="(item,index) in detailInfo.work_experiences" :key="index">
<div class="resume-experice-company mb"> <div class="resume-experice-company mb">
<span class="resume-experice-txt">陕西当老师教育科技有限公司</span> <span class="resume-experice-txt">{{item.organization_name}}</span>
<span>2019.11 - 至今</span> <span>{{item.start_time}} - {{item.end_time?item.end_time:'至今'}}</span>
</div> </div>
<div class="resume-experice-job mb">数学教师</div> <div class="resume-experice-job mb">{{item.job_name}}</div>
<div>工作内容:</div> <div>工作内容:</div>
<div class="resume-content"> <div class="resume-content" v-html="item.work_content">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -89,20 +75,13 @@ ...@@ -89,20 +75,13 @@
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title">教育经历</div> <div class="resume-item-title">教育经历</div>
<div class="resume-edu"> <div class="resume-edu">
<div class="resume-edu-item"> <div class="resume-edu-item" v-for="(item,index) in detailInfo.edu_experiences" :key="index">
<div class="resume-edu-school mb"> <div class="resume-edu-school mb">
<span class="resume-edu-txt">陕西当老师教育科技有限公司</span> <span class="resume-edu-txt">{{item.school_name}}</span>
</div> </div>
<div class="resume-edu mb"> <div class="resume-edu mb">
<span class="resume-edu-course">教育心理学 · 本科</span> <span class="resume-edu-course">{{item.major_name}} · {{item.qualifications}}</span>
<span>2019.11 - 至今</span> <span>{{item.start_time}} - {{item.end_time?item.end_time:'至今'}}</span>
</div>
<div>工作内容:</div>
<div class="resume-content">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -110,29 +89,20 @@ ...@@ -110,29 +89,20 @@
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title mb">自我评价</div> <div class="resume-item-title mb">自我评价</div>
<div>相关描述:</div> <div>相关描述:</div>
<div class="resume-content"> <div class="resume-content" v-html="detailInfo.self_advantage">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
</div> </div>
<!--优化建议-->
<el-dialog title="优化建议" :visible.sync="optimizedVisible" width="600px" center>
<div>
<el-input type="textarea" v-model="remarks" maxlength="200" rows="5" placeholder="请输入优化建议,最多200字"></el-input>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="optimizedVisible=false" size="small">取 消</el-button>
<el-button type="primary" @click="optimizedVisible=false" size="small">确 认</el-button>
</span>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {resumeDetail} from '@/api/resume'
import {getJobClassify} from '@/api/common'
import { CodeToText, TextToCode,} from 'element-china-area-data';
import {Loading} from 'element-ui';
export default { export default {
props: { props: {
...@@ -143,20 +113,112 @@ ...@@ -143,20 +113,112 @@
data() { data() {
return { return {
optimizedVisible:false, optimizedVisible:false,
remarks:'' remarks:'',
detailInfo:'', //获取详情
suggestList:[],
jobList:[],
}; };
}, },
methods: { methods: {
jsGetAge(strBirthday){
var returnAge;
var strBirthdayArr=strBirthday.split("-");
var birthYear = strBirthdayArr[0];
var birthMonth = strBirthdayArr[1];
var birthDay = strBirthdayArr[2];
}, let d = new Date();
computed: { var nowYear = d.getFullYear();
var nowMonth = d.getMonth() + 1;
var nowDay = d.getDate();
}, if(nowYear == birthYear){
watch: { returnAge = 0;//同年 则为0岁
}
else{
var ageDiff = nowYear - birthYear ; //年之差
if(ageDiff > 0){
if(nowMonth == birthMonth) {
var dayDiff = nowDay - birthDay;//日之差
if(dayDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
else
{
var monthDiff = nowMonth - birthMonth;//月之差
if(monthDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
}
else
{
returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
}
}
return returnAge;//返回周岁年龄
},
getDetail(){
let loading = Loading.service({
target: document.querySelector('.main-container'),
text: '请求中...',
});
// this.$route.query.cv_token
let data={
utoken:this.$route.query.utoken,
cv_token:"CV1577948246894fzJFS",
mode:0
}
resumeDetail(data).then(res=>{
loading.close();
if(res.error==0){
let obj={
...res.data,
age:this.jsGetAge(res.data.base_birthday),
work_city:CodeToText[res.data.intention_area_id.slice(0,4)+'00'],
work_area:CodeToText[res.data.intention_area_id],
job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job]
}
console.log(this.jobList)
let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000']
console.log(a1);
console.log(obj);
this.detailInfo=obj;
}
}).catch()
},
//获取职位列表
getJobList(){
return new Promise((resolve,reject)=>{
getJobClassify().then(res=>{
if(res.error==0){
this.jobList=res.data;
}
}).catch();
resolve(true)
}).catch(error => {
reject(error)
})
},
}, },
created() { async created() {
await this.getJobList();
this.getDetail();
this.getSysSuggestion();
}, },
mounted() { mounted() {
...@@ -248,4 +310,10 @@ ...@@ -248,4 +310,10 @@
.resume-edu-course{ .resume-edu-course{
margin-right:100px; margin-right:100px;
} }
.suggest_title,.suggest_txt{
line-height: 30px;
}
.suggest_txt{
color:#666;
}
</style> </style>
<template> <template>
<div class="partner-supervise-container"> <div class="partner-supervise-container">
<el-form :inline="true" :model="queryForm" size="small" ref="queryForm" class="fiter-box" > <!-- <el-form :inline="true" :model="queryForm" size="small" ref="queryForm" class="fiter-box">-->
<div class="fiter-col" style="margin-bottom: 0"> <!-- <div class="fiter-col">-->
<el-form-item label="搜索内容:" prop="searchContent" class="order-item"> <!-- <el-form-item label="状态:" prop="searchContent" class="order-item">-->
<el-input placeholder="请输入内容" v-model="queryForm.searchContent" class="order-input"> </el-input> <!-- <el-select v-model="queryForm.status" placeholder="请选择" class="input-style" size="small">-->
</el-form-item> <!-- <el-option label="全部" value=""></el-option>-->
<el-form-item label="" prop="searchContent" class="order-item"> <!-- <el-option label="待邀请" value="1"></el-option>-->
<el-button type="primary" size="small" style="margin-left: -20px" @click="search">搜索</el-button> <!-- <el-option label="已邀请" value="2"></el-option>-->
</el-form-item> <!-- <el-option label="已接受邀请" value="3"></el-option>-->
</div> <!-- <el-option label="已拒绝邀请" value="4"></el-option>-->
</el-form> <!-- <el-option label="已完成面试" value="5"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="" prop="searchContent" class="order-item">-->
<!-- <el-button type="primary" size="small" style="" @click="search">搜索</el-button>-->
<!-- </el-form-item>-->
<!-- </div>-->
<!-- </el-form>-->
<el-tabs v-model="resumeStatus" type="card" @tab-click="handleClick"> <el-tabs v-model="resumeStatus" type="card" @tab-click="handleClick">
<el-tab-pane label="待邀请" name="1"></el-tab-pane> <el-tab-pane label="待邀请" name="1"></el-tab-pane>
<el-tab-pane label="已邀请" name="2"></el-tab-pane> <el-tab-pane label="已邀请" name="2"></el-tab-pane>
<el-tab-pane label="已接受" name="3"></el-tab-pane> <el-tab-pane label="已接受" name="3"></el-tab-pane>
<el-tab-pane label="已拒绝" name="4"></el-tab-pane> <el-tab-pane label="已拒绝" name="4"></el-tab-pane>
<el-tab-pane label="已完成" name="5"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="partner-supervise-table"> <div class="partner-supervise-table">
<el-table :data="list" stripe size="medium" :header-cell-class-name="headerName"> <el-table :data="list" stripe size="medium" :header-cell-class-name="headerName">
<el-table-column align="center" prop="truename" label="职位信息" width="300"> <el-table-column align="center" prop="truename" label="职位信息" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="position-info"> <div class="position-info">
<div class="position"><span></span>{{scope.row.position}}</div> <div class="position"><span>{{scope.row.job_type == 1 ? '全' : '兼'}}</span>{{scope.row.base_name}}</div>
<div class="info"> <div class="info">
<div>{{scope.row.address}}</div> <div>{{scope.row.work_city}}-{{scope.row.work_area}}</div>
<div>{{scope.row.education}}</div> <!-- <div>{{scope.row.edu_experiences[0].qualifications}}</div>-->
<div>{{scope.row.experience}}</div> <!-- <div>{{scope.row.experience}}</div>-->
</div> </div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="compensation" show-overflow-tooltip label="薪资"> <el-table-column align="center" prop="compensation" show-overflow-tooltip label="简历状态">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="compensation">{{scope.row.compensation}}</div> <div class="compensation" v-if="scope.row.status == 1">待邀请</div>
<div class="compensation" v-if="scope.row.status == 2">已邀请</div>
<div class="compensation" v-if="scope.row.status == 3">已接受邀请</div>
<div class="compensation" v-if="scope.row.status == 4">已拒绝邀请</div>
<div class="compensation" v-if="scope.row.status == 5">已完成面试</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="publishTime" show-overflow-tooltip label="发布时间"> <el-table-column align="center" prop="publishTime" show-overflow-tooltip label="求职状态">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="table-inf0-h3">{{scope.row.publishTime}}</span> <div class="table-inf0-h3" v-if="scope.row.intention_current_status==1">待业-求职中</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==2">正常工作-寻求机会</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==3">在业-暂不考虑机会</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==4">学业中-寻找机会</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="refreshTime" show-overflow-tooltip label="刷新时间"> <el-table-column align="center" prop="refreshTime" show-overflow-tooltip label="求职职位">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="table-inf0-h3">{{scope.row.refreshTime}}</span> <span class="table-inf0-h3">{{scope.row.job_name}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="status" show-overflow-tooltip label="职位状态"> <el-table-column align="center" prop="status" show-overflow-tooltip label="处理时间">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="table-inf0-h3">{{scope.row.status}}</span> <span class="table-inf0-h3">{{scope.row.interview_time}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="操作" width="260"> <el-table-column align="center" label="操作" width="260">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
<el-button size="small" type="text" @click="checkResume()">查看简历</el-button> <el-button size="small" type="text" @click="checkResume(scope.row.cv_token_apply, scope.row.utoken)">查看简历</el-button>
<span class="segmenting-line" v-if="resumeStatus != 4">|</span> <span class="segmenting-line" v-if="resumeStatus != 4">|</span>
<el-button size="small" type="text" @click="disposeResume" v-if="resumeStatus == 1">处理</el-button> <el-button size="small" type="text" @click="disposeResume(scope.row.apply_id,scope.row.id)" v-if="resumeStatus == 1">处理</el-button>
<el-button size="small" type="text" @click="disposeResume" v-if="resumeStatus == 2 || resumeStatus == 3">更新</el-button> <el-button size="small" type="text" @click="disposeResume(scope.row.apply_id,scope.row.id)" v-if="resumeStatus == 2 || resumeStatus == 3">更新</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -97,25 +113,16 @@ ...@@ -97,25 +113,16 @@
</div> </div>
</template> </template>
<script> <script>
import {interviewList, interviewDispose} from '@/api/interview' import {interviewList, interviewDispose} from '@/api/interview';
import {getAcademicQualifications, getWorkExperience, getSalaryExpectation} from "@/api/common";
import {CodeToText} from 'element-china-area-data';
export default { export default {
data() { data() {
return { return {
queryForm:{ queryForm:{
searchContent:'', status:'1',
}, },
list: [ list: [],//合伙人列表
{
position: '英语老师',
address: '西安-雁塔区',
education: '本科',
experience: '一年',
compensation: '4k-5k/月',
publishTime: '2019-11-12',
refreshTime: '2019-12-12',
status: '正在招聘'
}
],//合伙人列表
currentPage: 1,//当前页 currentPage: 1,//当前页
totalPages: 0,//总记录数 totalPages: 0,//总记录数
page_size: 10,//每页10条记录 page_size: 10,//每页10条记录
...@@ -124,12 +131,26 @@ ...@@ -124,12 +131,26 @@
resumeStatus: '1', resumeStatus: '1',
interview_time: '', //面试时间 interview_time: '', //面试时间
interview_address: '', //面试地点 interview_address: '', //面试地点
eduList: [],
workAgesList: [],
apply_id: '',
interview_id: ''
} }
}, },
methods: { methods: {
//处理简历 //处理简历
sendMessage() { sendMessage() {
interviewDispose({
apply_id: this.apply_id,
interview_id: this.interview_id,
interview_time: this.interview_time,
interview_address: this.interview_address
}).then(res => {
if(res.error ==0) {
this.$message.success('邀请成功!');
this.isShowRefuseResume = false;
}
})
}, },
//检索 //检索
search() { search() {
...@@ -139,19 +160,51 @@ ...@@ -139,19 +160,51 @@
return 'header-class-title'; return 'header-class-title';
}, },
handleClick() { handleClick() {
this.queryForm.status = this.resumeStatus;
this.getInterviewList();
}, },
checkResume() { checkResume(id,utoken) {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/detail/" + 0, path: this.$route.path + "/detail/",
query: {
utoken: utoken,
cv_token: id
}
}); });
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
}, },
disposeResume() { disposeResume(apply_id,id) {
this.interview_id = id;
this.apply_id = apply_id;
this.isShowRefuseResume = true; this.isShowRefuseResume = true;
}, },
//获取面试邀请列表 //获取面试邀请列表
getInterviewList() { getInterviewList() {
return new Promise(resolve => {
let data = {
page: this.currentPage,
page_size: this.page_size,
status: this.queryForm.status
}
interviewList(data).then(res => {
if(res.error == 0) {
this.list = res.data.info;
this.totalPages = res.data.total;
this.list= res.data.info.map(item=>{
let obj={
...item,
work_city: CodeToText[item.base_area_id.slice(0,4)+'00'],
work_area: CodeToText[item.base_area_id],
}
this.eduList.forEach(m =>{if(m.level==item.job_require_edu_level){ obj.job_require_edu_level_txt = m.level_name}})
this.workAgesList.forEach(m =>{if(m.level==item.job_require_work_ages){ obj.job_require_work_ages_txt =m.level_name}})
return obj;
})
}
})
}).catch(error=>{
})
}, },
handleCurrentChange(page) { handleCurrentChange(page) {
...@@ -163,9 +216,39 @@ ...@@ -163,9 +216,39 @@
this.page_size = e; this.page_size = e;
this.currentPage = 1; this.currentPage = 1;
this.getInterviewList(); this.getInterviewList();
} },
//获取学历
getEduLevels() {
return new Promise(resolve => {
getAcademicQualifications().then(res => {
if(res.error == 0) {
this.eduList = res.data;
resolve();
}
})
}).catch(error => {
})
},
//获取工作经验
getWorkAges() {
return new Promise(resolve => {
getWorkExperience().then(res => {
if (res.error == 0) {
this.workAgesList = res.data;
resolve();
}
})
}).catch(error => {
})
},
}, },
mounted() { async mounted() {
await this.getEduLevels();
await this.getWorkAges();
this.getInterviewList();
} }
} }
</script> </script>
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<div class="register-2"> <div class="register-2">
<div class="title">基本信息</div> <div class="title">基本信息</div>
<div class="line-style"> <div class="line-style">
<div class="label">头像</div> <div class="label">企业logo</div>
<Upload @productImgs="getPortrait" :editPics="registerInfo.portrait"></Upload> <Upload @productImgs="getPortrait" :editPics="registerInfo.portrait"></Upload>
</div> </div>
<div class="line-style"> <div class="line-style">
...@@ -84,15 +84,12 @@ ...@@ -84,15 +84,12 @@
style="width: 400px;"></el-input> style="width: 400px;"></el-input>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">相关证件</div> <div class="label">营业执照</div>
<div class="zheng-jian"> <Upload @productImgs="getBusiness" :editPics="registerInfo.business_license_pic"></Upload>
<Upload @productImgs="getBusiness" :editPics="registerInfo.business_license_pic"></Upload> </div>
<div class="explain">营业执照</div> <div class="line-style">
</div> <div class="label">办学许可证</div>
<div class="zheng-jian"> <Upload @productImgs="getLicence" :editPics="registerInfo.school_license_pic"></Upload>
<Upload @productImgs="getLicence" :editPics="registerInfo.school_license_pic"></Upload>
<div class="explain">办学许可证</div>
</div>
</div> </div>
<el-button class="register-save" @click="registerBtn">提交注册</el-button> <el-button class="register-save" @click="registerBtn">提交注册</el-button>
</div> </div>
...@@ -204,20 +201,6 @@ ...@@ -204,20 +201,6 @@
phone: this.loginInfo.uname phone: this.loginInfo.uname
}); });
this.$router.push("/position/list"); this.$router.push("/position/list");
// switchMallMater({
// mtoken: mtoken?mtoken:"0854089c8fa538ab3dd3d2e311b32c92",
// password: '',
// unique_id: mtoken?mtoken:'0854089c8fa538ab3dd3d2e311b32c92'
// }).then(res => {
//
// setStoreMallInfo(res.data.mallInfo);
// setStoreMallToken(res.data.authorize.token);
//
// // setMallRoles(res.data.encryptString);
// Cookies.set('logType', 1, {domain: domain});
// this.$router.push("/position/list");
// });
}); });
} }
...@@ -442,7 +425,6 @@ ...@@ -442,7 +425,6 @@
business_license_pic: this.registerInfo.get_business_license_pic[0], business_license_pic: this.registerInfo.get_business_license_pic[0],
school_license_pic: this.registerInfo.get_school_license_pic[0] school_license_pic: this.registerInfo.get_school_license_pic[0]
} }
console.log(data);
// return // return
accountEdit(data).then(res => { accountEdit(data).then(res => {
if(res.error == 0) { if(res.error == 0) {
......
<template> <template>
<div class="conatiner"> <div class="conatiner">
<p>新建基地</p> <p>企业信息</p>
<div class="line-style"> <div class="line-style">
<div class="label">基地名称:</div> <div class="label">企业logo:</div>
<el-input class="input" placeholder="请输入基地名称" size="small" v-model="name"></el-input> <uploadimage @productImgs="getPortrait" :editPics="registerInfo.portrait"></uploadimage>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">基地编号:</div> <div class="label">企业名称:</div>
<el-input class="input" placeholder="请输入基地编号" size="small" v-model="code"></el-input> <el-input class="input" placeholder="请输入企业名称" size="small" v-model="registerInfo.enterprise_name"></el-input>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">基地面积(亩):</div> <div class="label">企业规模:</div>
<el-input class="input" placeholder="请输入基地面积" size="small" v-model="areas"></el-input> <el-input class="input" placeholder="请输入企业人数" size="small" v-model="registerInfo.enterprise_scale"></el-input>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">基地负责人:</div> <div class="label">企业类型:</div>
<el-input class="input" placeholder="请输入基地负责人" size="small" v-model="user"></el-input> <el-input class="input" placeholder="请输入企业类型" size="small" v-model="registerInfo.enterprise_type"></el-input>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">企业:</div> <div class="label">企业区域:</div>
<el-select placeholder="请选择生产企业" size="small" class="select-item" clearable v-model='enterprise_id'> <el-cascader class="input"
<el-option v-for="(item,index) in enterpriseList" :key="index" :label="item.label" :value="item.value"></el-option> size="small"
</el-select> :options="regionData"
v-model="registerInfo.enterprise_area"
>
</el-cascader>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">基地详情:</div> <div class="label">企业地址:</div>
<div style="width: 600px;"> <el-input class="input" placeholder="请输入企业地址" size="small" v-model="registerInfo.enterprise_address"></el-input>
<UE @callback="getEditorHtml" :richText="detail" v-model="detail"></UE>
</div>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">基地位置:</div> <div class="label">营业执照:</div>
<el-input class="input" placeholder="请输入基地位置" size="small" v-model="address"></el-input> <uploadimage @productImgs="getBusiness" :editPics="registerInfo.business_license_pic"></uploadimage>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">备注:</div> <div class="label">办学许可证:</div>
<el-input class="input" placeholder="请输入备注" size="small" v-model="remark"></el-input> <uploadimage @productImgs="getLicence" :editPics="registerInfo.school_license_pic"></uploadimage>
</div>
<div class="line-style">
<div class="label">企业描述:</div>
<el-input style="width: 500px" rows="4" type="textarea" placeholder="请输入企业描述" size="small" v-model="registerInfo.enterprise_describe"></el-input>
</div> </div>
<div class="opration"> <div class="opration">
<el-button size="small" @click="cancel">取消</el-button>
<el-button size="small" @click="save" type="primary" class="save">保存</el-button> <el-button size="small" @click="save" type="primary" class="save">保存</el-button>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import uploadimage from '../../components/Upload/index' import uploadimage from '../../components/Upload/upload'
import {accountGet, accountEdit} from "@/api/login" import {accountGet, accountEdit} from "@/api/login"
import {provinceAndCityData,regionData, CodeToText, TextToCode} from 'element-china-area-data';
export default { export default {
name: "newPoint", name: "newPoint",
components: { components: {
...@@ -55,63 +60,70 @@ ...@@ -55,63 +60,70 @@
}, },
data() { data() {
return { return {
producerId: '', regionData: regionData,
name: '', registerInfo: {
code: '', portrait: [], //头像
areas: '', getPortrait: [],
user: '', duty: '', //职务
detail: '', email: '',//邮箱
address: '', enterprise_name: '', //企业名称
remark: '', enterprise_scale: '', //企业规模
enterpriseList: [], enterprise_type: '', //企业类型
enterprise_id: '' enterprise_address: '', //企业地址
enterprise_describe: '', //企业描述
enterprise_area: '', //企业区域
business_license_pic: [], //营业执照
school_license_pic: [], //办学许可证
get_business_license_pic: [], //营业执照
get_school_license_pic: [], //办学许可证
},
} }
}, },
methods: { methods: {
cancel() { //获取头像
this.$router.go(-1); getPortrait(data) {
this.registerInfo.getPortrait = data;
}, },
//获取富文本编辑器中的内容 //获取营业执照
getEditorHtml(data) { getBusiness(data) {
// console.log(data); this.registerInfo.get_business_license_pic = data;
this.detail= data; },
//获取办学许可证
getLicence(data) {
this.registerInfo.get_school_license_pic = data;
}, },
getInfo() { getInfo() {
accountGet({ accountGet().then(res => {
}).then(res => {
if(res.error == 0) { if(res.error == 0) {
this.name = res.data.name; this.registerInfo.portrait.push(res.data.logo);
this.code = res.data.code; this.registerInfo.enterprise_name = res.data.name;
this.areas = res.data.areas; this.registerInfo.enterprise_scale = res.data.peoples;
this.user = res.data.user; this.registerInfo.enterprise_type = res.data.type;
this.detail = res.data.detail; this.registerInfo.enterprise_area = res.data.area_id;
this.address = res.data.address; this.registerInfo.enterprise_address = res.data.address;
this.remark = res.data.remark; this.registerInfo.enterprise_describe = res.data.remark;
this.enterprise_id = res.data.enterprise_id; this.registerInfo.business_license_pic.push(res.data.business_license_pic);
this.registerInfo.school_license_pic.push(res.data.school_license_pic);
} }
}) })
}, },
save() { save() {
let params = { let params = {
name: this.name, position_name: this.registerInfo.duty,
code: this.code, email: this.registerInfo.email,
areas: this.areas, logo: this.registerInfo.getPortrait[0],
user: this.user, name: this.registerInfo.enterprise_name,
detail: this.detail, peoples: Number(this.registerInfo.enterprise_scale),
address: this.address, type: this.registerInfo.enterprise_type,
remark: this.remark, area_id: this.registerInfo.enterprise_area[2],
enterprise_id: this.enterprise_id address: this.registerInfo.enterprise_address,
} remark: this.registerInfo.enterprise_describe,
if(this.producerId) { business_license_pic: this.registerInfo.get_business_license_pic[0],
params.id = this.producerId; school_license_pic: this.registerInfo.get_school_license_pic[0]
} }
accountEdit(params).then(res => { accountEdit(params).then(res => {
if(res.error == 0) { if(res.error == 0) {
this.$message.success('操作成功!'); this.$message.success('操作成功!');
setTimeout(()=>{
window.close();
},1000)
} }
}) })
} }
......
...@@ -98,7 +98,8 @@ ...@@ -98,7 +98,8 @@
<script> <script>
import {provinceAndCityData,regionData, CodeToText, TextToCode} from 'element-china-area-data'; import {provinceAndCityData,regionData, CodeToText, TextToCode} from 'element-china-area-data';
import {positionEdit, positionDetail} from "@/api/position"; import {positionEdit, positionDetail} from "@/api/position";
import {getAcademicQualifications, getWorkExperience, getJobClassify} from "@/api/common" import {getAcademicQualifications, getWorkExperience, getJobClassify} from "@/api/common";
import {positionTtpe} from '@/utils/positionType'
export default { export default {
data() { data() {
return { return {
...@@ -399,41 +400,7 @@ ...@@ -399,41 +400,7 @@
JobClassify() { JobClassify() {
return new Promise(resolve => { return new Promise(resolve => {
getJobClassify().then(res => { getJobClassify().then(res => {
this.position_type = []; this.position_type = positionTtpe(res);
for (let item in res.data['01']) {
this.position_type.push({
value: item,
label: res.data['01'][item]
})
}
this.position_type.forEach((v,i) => {
for(let item in res.data) {
if(v.value == item) {
v.children = [];
for(let item_1 in res.data[item]) {
v.children.push({
value: item_1,
label: res.data[item][item_1]
})
}
}
}
v.children.forEach((vv,ii)=>{
for(let item in res.data) {
if(vv.value == item) {
v.children[ii].children = [];
for(let item_1 in res.data[item]) {
v.children[ii].children.push({
value: item_1,
label: res.data[item][item_1]
})
}
}
}
})
})
}) })
resolve(); resolve();
}).catch(error => { }).catch(error => {
...@@ -448,7 +415,6 @@ ...@@ -448,7 +415,6 @@
await this.getEduLevels(); await this.getEduLevels();
await this.getWorkAges(); await this.getWorkAges();
await this.JobClassify(); await this.JobClassify();
console.log(this.$route.params.id && this.$route.params.id != 0,'this.$route.params.id');
if (this.$route.params.id && this.$route.params.id != 0) { if (this.$route.params.id && this.$route.params.id != 0) {
console.log(9); console.log(9);
this.id = this.$route.params.id; this.id = this.$route.params.id;
......
...@@ -43,7 +43,7 @@ ...@@ -43,7 +43,7 @@
</el-table-column> </el-table-column>
<el-table-column align="center" prop="compensation" show-overflow-tooltip label="薪资"> <el-table-column align="center" prop="compensation" show-overflow-tooltip label="薪资">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="compensation">{{scope.row.job_require_salary_min / 100000}}-{{scope.row.job_require_salary_max / 100000}}K</div> <div class="compensation">{{(scope.row.job_require_salary_min / 100000).toFixed(1)}}~{{(scope.row.job_require_salary_max / 100000).toFixed(1)}}K</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="publishTime" show-overflow-tooltip label="发布时间"> <el-table-column align="center" prop="publishTime" show-overflow-tooltip label="发布时间">
......
<template> <template>
<div class="contanier"> <div class="contanier">
<!-- <div class="search-title">-->
<!-- <div></div>-->
<!-- <div>-->
<!-- <el-button type="primary" size="small" @click="optimizedVisible = true" >添加优化建议-->
<!-- </el-button>-->
<!-- <el-tooltip effect="dark" placement="right-start">-->
<!-- <div slot="content" class="slot">-->
<!-- <p>注释信息及辅助提示文字内容</p>-->
<!-- </div>-->
<!-- <el-button type="text" icon="el-icon-question"></el-button>-->
<!-- </el-tooltip>-->
<!-- </div>-->
<!-- </div>-->
<div class="resume-contanier"> <div class="resume-contanier">
<div class="resume-header flex"> <div class="resume-header flex">
<div class="flex resume-header_left" style="margin-right:200px;"> <div class="flex resume-header_left" style="margin-right:200px;">
<img src="https://wx.qlogo.cn/mmopen/vi_32/0nluCqghffPjzhVqMuguxaGFY0dgicfArLZrFGIJo3xL3wZrODiaJR8Znux6w7KhR1HeKTkw7Yw3fqrmcO7cNSWQ/132" alt="" class="resume-avatar"> <img :src="detailInfo.photo" alt="" class="resume-avatar">
<div class="resume-header_info flex-direct"> <div class="resume-header_info flex-direct">
<div> <div>
<span class="name mr">王富贵</span> <span class="name mr">{{detailInfo.base_name}}</span>
<span>先生/27</span> <span>{{detailInfo.base_sex==1?'男':'女'}}/{{detailInfo.age}}</span>
</div> </div>
<div> <div>
<span class="mr">教课老师</span> <span class="mr">{{detailInfo.work_experiences[0].job_name}}</span>
<span class="mr">本科</span> <span class="mr">{{detailInfo.edu_experiences[0].qualifications}}</span>
<span >3-5年</span> <!-- <span >3-5年</span> -->
</div> </div>
</div> </div>
</div> </div>
...@@ -33,11 +20,13 @@ ...@@ -33,11 +20,13 @@
<div class="resume-header_info flex-direct"> <div class="resume-header_info flex-direct">
<div class="flex-between"> <div class="flex-between">
<i class='iconfont icon-mobile txtSize'></i> <i class='iconfont icon-mobile txtSize'></i>
<span class='ml'>已隐藏</span> <span class='ml' v-if="detailInfo.show_status==2">已隐藏</span>
<span class='ml' v-else>{{detailInfo.base_phone}}</span>
</div> </div>
<div class="flex-between"> <div class="flex-between">
<i class='iconfont icon-dianziyoujian txtSize'></i> <i class='iconfont icon-dianziyoujian txtSize'></i>
<span class='ml'>已隐藏</span> <span class='ml' v-if="detailInfo.show_status==2">已隐藏</span>
<span class='ml' v-else>{{detailInfo.base_email}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -46,42 +35,39 @@ ...@@ -46,42 +35,39 @@
<div class="resume-item-title">求职意向</div> <div class="resume-item-title">求职意向</div>
<div class="resume-icon-style"> <div class="resume-icon-style">
<i class='iconfont icon-ruzhishijian txtSize'></i> <i class='iconfont icon-ruzhishijian txtSize'></i>
<span class='txt_adjust'>待业-求职中</span> <span class='txt_adjust'>
{{detailInfo.intention_current_status==1?'待业-求职中':
detailInfo.intention_current_status==2?'正常工作-寻求机会':
detailInfo.intention_current_status==3?'在业-暂不考虑机会':'学业中-寻找机会'
}}
</span>
</div> </div>
<div class="flex"> <div class="flex">
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-yingpinzhiwei txtSize'></i> <i class='iconfont icon-yingpinzhiwei txtSize'></i>
<span class='txt_adjust'>英语教师</span> <span class='txt_adjust'>{{detailInfo.job_name}}</span>
</div>
<div class="resume-icon-style gap">
<i class='iconfont icon-xueli txtSizel'></i>
<span class='txt_adjust'>初中</span>
</div> </div>
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-suozaichengshi txtSize'></i> <i class='iconfont icon-suozaichengshi txtSize'></i>
<span class='txt_adjust'>西安-雁塔</span> <span class='txt_adjust'>{{detailInfo.work_city}}-{{detailInfo.work_area}}</span>
</div> </div>
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-xinziyaoqiu txtSize'></i> <i class='iconfont icon-xinziyaoqiu txtSize'></i>
<span class='txt_adjust'>5K-10K</span> <span class='txt_adjust'>{{detailInfo.intention_salary_min?(detailInfo.intention_salary_min/100000).toFixed(1):0}}K-{{detailInfo.intention_salary_max?(detailInfo.intention_salary_max/100000).toFixed(1):0}}K</span>
</div> </div>
</div> </div>
</div> </div>
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title">工作经历</div> <div class="resume-item-title">工作经历</div>
<div class="resume-experice"> <div class="resume-experice">
<div class="resume-experice-item"> <div class="resume-experice-item" v-for="(item,index) in detailInfo.work_experiences" :key="index">
<div class="resume-experice-company mb"> <div class="resume-experice-company mb">
<span class="resume-experice-txt">陕西当老师教育科技有限公司</span> <span class="resume-experice-txt">{{item.organization_name}}</span>
<span>2019.11 - 至今</span> <span>{{item.start_time}} - {{item.end_time?item.end_time:'至今'}}</span>
</div> </div>
<div class="resume-experice-job mb">数学教师</div> <div class="resume-experice-job mb">{{item.job_name}}</div>
<div>工作内容:</div> <div>工作内容:</div>
<div class="resume-content"> <div class="resume-content" v-html="item.work_content">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -89,20 +75,13 @@ ...@@ -89,20 +75,13 @@
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title">教育经历</div> <div class="resume-item-title">教育经历</div>
<div class="resume-edu"> <div class="resume-edu">
<div class="resume-edu-item"> <div class="resume-edu-item" v-for="(item,index) in detailInfo.edu_experiences" :key="index">
<div class="resume-edu-school mb"> <div class="resume-edu-school mb">
<span class="resume-edu-txt">陕西当老师教育科技有限公司</span> <span class="resume-edu-txt">{{item.school_name}}</span>
</div> </div>
<div class="resume-edu mb"> <div class="resume-edu mb">
<span class="resume-edu-course">教育心理学 · 本科</span> <span class="resume-edu-course">{{item.major_name}} · {{item.qualifications}}</span>
<span>2019.11 - 至今</span> <span>{{item.start_time}} - {{item.end_time?item.end_time:'至今'}}</span>
</div>
<div>工作内容:</div>
<div class="resume-content">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -110,29 +89,46 @@ ...@@ -110,29 +89,46 @@
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title mb">自我评价</div> <div class="resume-item-title mb">自我评价</div>
<div>相关描述:</div> <div>相关描述:</div>
<div class="resume-content"> <div class="resume-content" v-html="detailInfo.self_advantage">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
<div>
<el-button type="primary" size="small" @click="isShowPassResume = true">通过</el-button>
<el-button type="danger" size="small" @click="isShowRefuseResume = true">拒绝</el-button>
</div>
</div> </div>
<!--拒绝简历弹框-->
<!--优化建议--> <el-dialog title="拒绝理由" :visible.sync="isShowRefuseResume" width="360px" center>
<el-dialog title="优化建议" :visible.sync="optimizedVisible" width="600px" center>
<div> <div>
<el-input type="textarea" v-model="remarks" maxlength="200" rows="5" placeholder="请输入优化建议,最多200字"></el-input> <el-select v-model="refuse_reason" placeholder="请选择" style="width: 100%;margin-bottom: 20px">
<el-option v-for="item in reasonList" :key="item.label" :label="item.label" :value="item.value"></el-option>
</el-select>
<div class="operation">
<el-button type="primary" size="small" @click="sureRefuseResume">确定</el-button>
<el-button size="small" @click="isShowRefuseResume = false">取消</el-button>
</div>
</div>
</el-dialog>
<!--通过简历弹框-->
<el-dialog title="确认通过" :visible.sync="isShowPassResume" width="300px" center>
<div>
<div style="text-align: center;margin-bottom: 40px">该求职者是否符合贵司要求</div>
<div class="operation">
<el-button type="primary" size="small" @click="surePassResume">确定</el-button>
<el-button size="small" @click="isShowPassResume = false">取消</el-button>
</div>
</div> </div>
<span slot="footer" class="dialog-footer">
<el-button @click="optimizedVisible=false" size="small">取 消</el-button>
<el-button type="primary" @click="optimizedVisible=false" size="small">确 认</el-button>
</span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {resumeDetail,resumePass,resumeRefuse} from '@/api/resume'
import {getJobClassify,applyRefuseReasons} from '@/api/common'
import { CodeToText, TextToCode,} from 'element-china-area-data';
import {Loading} from 'element-ui';
export default { export default {
props: { props: {
...@@ -143,20 +139,153 @@ ...@@ -143,20 +139,153 @@
data() { data() {
return { return {
optimizedVisible:false, optimizedVisible:false,
remarks:'' remarks:'',
detailInfo:'', //获取详情
suggestList:[],
jobList:[],
isShowRefuseResume: false,
isShowPassResume: false,
refuse_reason: '',
reasonList: []
}; };
}, },
methods: { methods: {
//获取拒绝原因列表
getResonList() {
applyRefuseReasons().then(res => {
if(res.error == 0) {
res.data.forEach(v=>{
this.reasonList.push({
label: v,
value: v
})
})
}
})
},
//确认通过
surePassResume() {
resumePass({
apply_id: Number(this.detailInfo.id),
handle: 'pass'
}).then(res => {
if(res.error == 0) {
this.$message.success('已通过成功!');
this.isShowPassResume = false;
}
})
},
//确认拒绝简历
sureRefuseResume() {
resumeRefuse({
apply_id: Number(this.detailInfo.id),
handle: 'refuse',
refuse_reason: this.refuse_reason
}).then(res => {
if(res.error == 0) {
this.$message.success('已拒绝成功!');
this.isShowRefuseResume = false;
}
})
},
jsGetAge(strBirthday){
var returnAge;
var strBirthdayArr=strBirthday.split("-");
var birthYear = strBirthdayArr[0];
var birthMonth = strBirthdayArr[1];
var birthDay = strBirthdayArr[2];
}, let d = new Date();
computed: { var nowYear = d.getFullYear();
var nowMonth = d.getMonth() + 1;
var nowDay = d.getDate();
}, if(nowYear == birthYear){
watch: { returnAge = 0;//同年 则为0岁
}
else{
var ageDiff = nowYear - birthYear ; //年之差
if(ageDiff > 0){
if(nowMonth == birthMonth) {
var dayDiff = nowDay - birthDay;//日之差
if(dayDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
else
{
var monthDiff = nowMonth - birthMonth;//月之差
if(monthDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
}
else
{
returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
}
}
return returnAge;//返回周岁年龄
},
getDetail(){
let loading = Loading.service({
target: document.querySelector('.main-container'),
text: '请求中...',
});
// this.$route.query.cv_token
let data={
utoken:this.$route.query.utoken,
cv_token:"CV1577948246894fzJFS",
mode:0
}
resumeDetail(data).then(res=>{
loading.close();
if(res.error==0){
let obj={
...res.data,
age:this.jsGetAge(res.data.base_birthday),
work_city:CodeToText[res.data.intention_area_id.slice(0,4)+'00'],
work_area:CodeToText[res.data.intention_area_id],
job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job]
}
let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000']
console.log(a1);
console.log(obj);
this.detailInfo=obj;
}
}).catch()
},
}, //获取职位列表
created() { getJobList(){
return new Promise((resolve,reject)=>{
getJobClassify().then(res=>{
if(res.error==0){
this.jobList=res.data;
resolve(true)
}
}).catch();
}).catch(error => {
reject(error)
})
},
},
async created() {
await this.getJobList();
this.getResonList();
this.getDetail();
this.getSysSuggestion();
}, },
mounted() { mounted() {
...@@ -173,15 +302,6 @@ ...@@ -173,15 +302,6 @@
width:900px; width:900px;
margin:0 120px; margin:0 120px;
} }
.search-title {
width:900px;
/* margin:0 auto 10px; */
margin:0 120px 10px 120px;
display: flex;
align-items: center;
justify-content: space-between;
/* margin-bottom: 10px; */
}
.ml{ .ml{
margin-left:15px; margin-left:15px;
} }
...@@ -248,4 +368,14 @@ ...@@ -248,4 +368,14 @@
.resume-edu-course{ .resume-edu-course{
margin-right:100px; margin-right:100px;
} }
.suggest_title,.suggest_txt{
line-height: 30px;
}
.suggest_txt{
color:#666;
}
.operation {
margin-top: 20px;
text-align: center;
}
</style> </style>
...@@ -2,26 +2,23 @@ ...@@ -2,26 +2,23 @@
<div class="partner-supervise-container"> <div class="partner-supervise-container">
<div class="refresh"> <div class="refresh">
<el-button @click="refresh" type="primary" size="small">立即刷新</el-button> <el-button @click="refresh" type="primary" size="small">立即刷新</el-button>
<span>今日剩余(0/10)</span> <!-- <span>今日剩余(0/10)</span>-->
</div> </div>
<el-form :inline="true" :model="queryForm" size="small" ref="queryForm" class="fiter-box" > <el-form :inline="true" :model="queryForm" size="small" ref="queryForm" class="fiter-box">
<div class="fiter-col"> <div class="fiter-col">
<el-form-item label="搜索内容:" prop="searchContent" class="order-item">
<el-input placeholder="请输入内容" v-model="queryForm.searchContent" class="order-input"> </el-input>
</el-form-item>
<el-form-item label="状态:" prop="searchContent" class="order-item"> <el-form-item label="状态:" prop="searchContent" class="order-item">
<el-select v-model="queryForm.status" placeholder="请选择" class="input-style" size="small"> <el-select v-model="queryForm.status" placeholder="请选择" class="input-style" size="small">
<el-option label="全部" value="0"></el-option> <el-option label="全部" value=""></el-option>
<el-option label="正在招聘" value="1"></el-option> <el-option label="刚投递" value="1"></el-option>
<el-option label="已关闭" value="2"></el-option> <el-option label="已查看" value="2"></el-option>
<el-option label="通过初筛" value="3"></el-option>
<el-option label="已拒绝" value="4"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</div> <el-form-item label="" prop="searchContent" class="order-item">
<el-button type="primary" size="small" style="" @click="search">搜索</el-button>
<div class="fiter-col" style="margin-bottom: 0"> </el-form-item>
<el-button type="primary" size="small" style="margin-left: 20px" @click="search">搜索</el-button>
<el-button type="danger" size="small" @click="reset">清空搜索条件</el-button>
</div> </div>
</el-form> </el-form>
<div class="partner-supervise-table"> <div class="partner-supervise-table">
...@@ -29,39 +26,41 @@ ...@@ -29,39 +26,41 @@
<el-table-column align="center" prop="truename" label="职位信息" width="300"> <el-table-column align="center" prop="truename" label="职位信息" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="position-info"> <div class="position-info">
<div class="position"><span></span>{{scope.row.position}}</div> <div class="position"><span>{{scope.row.job_type == 1 ? '全' : '兼'}}</span>{{scope.row.base_name}}</div>
<div class="info"> <div class="info">
<div>{{scope.row.address}}</div> <div>{{scope.row.work_city}}-{{scope.row.work_area}}</div>
<div>{{scope.row.education}}</div> <div>{{scope.row.edu}}</div>
<div>{{scope.row.experience}}</div>
</div> </div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="compensation" show-overflow-tooltip label="薪资"> <el-table-column align="center" prop="compensation" show-overflow-tooltip label="薪资">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="compensation">{{scope.row.compensation}}</div> <div class="compensation">{{(scope.row.job_require_salary_min/100000).toFixed(1)}}~{{(scope.row.job_require_salary_max/100000).toFixed(1)}}K</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="publishTime" show-overflow-tooltip label="发布时间"> <el-table-column align="center" prop="publishTime" show-overflow-tooltip label="求职状态">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="table-inf0-h3">{{scope.row.publishTime}}</span> <div class="table-inf0-h3" v-if="scope.row.intention_current_status==1">待业-求职中</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==2">正常工作-寻求机会</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==3">在业-暂不考虑机会</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==4">学业中-寻找机会</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="refreshTime" show-overflow-tooltip label="刷新时间"> <el-table-column align="center" prop="refreshTime" show-overflow-tooltip label="职位名称">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="table-inf0-h3">{{scope.row.refreshTime}}</span> <span class="table-inf0-h3">{{scope.row.job_name}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="status" show-overflow-tooltip label="职位状态"> <el-table-column align="center" prop="status" show-overflow-tooltip label="处理时间">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="table-inf0-h3">{{scope.row.status}}</span> <span class="table-inf0-h3">{{scope.row.updated_at}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="操作" width="160"> <el-table-column align="center" label="操作" width="160">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
<el-button size="small" type="text" @click="checkPosition">查看简历</el-button> <el-button size="small" type="text" @click="checkPosition(scope.row.cv_token_apply, scope.row.utoken)">查看简历</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -81,7 +80,8 @@ ...@@ -81,7 +80,8 @@
</div> </div>
</template> </template>
<script> <script>
import {recommendList} from '@/api/recommend' import {resumeList, resumePass, resumeRefuse} from "@/api/resume"
import {CodeToText} from 'element-china-area-data';
export default { export default {
data() { data() {
return { return {
...@@ -120,18 +120,44 @@ ...@@ -120,18 +120,44 @@
headerName() { headerName() {
return 'header-class-title' return 'header-class-title'
}, },
checkPosition() { checkPosition(id,utoken) {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/detail/" + 0, path: this.$route.path + "/detail/",
query: {
utoken: utoken,
cv_token: id
}
}); });
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
}, },
refresh() { refresh() {
this.getRcommendList();
}, },
//获取推荐列表 //获取推荐列表
getRcommendList() { getRcommendList() {
let data = {
page: this.currentPage,
page_size: this.page_size,
apply_type: 'self'
}
if(this.queryForm.status) {
data.status = this.queryForm.status;
}
resumeList(data).then(res => {
if(res.error == 0 && res.data && res.data.info) {
this.list = res.data.info;
this.totalPages = res.data.total;
this.list= res.data.info.map(item=>{
let obj={
...item,
work_city: CodeToText[item.base_area_id.slice(0,4)+'00'],
work_area: CodeToText[item.base_area_id],
edu: item.edu_experiences[0].qualifications
}
return obj;
})
}
})
}, },
handleCurrentChange(page) { handleCurrentChange(page) {
this.currentPage = page; this.currentPage = page;
...@@ -145,7 +171,7 @@ ...@@ -145,7 +171,7 @@
} }
}, },
mounted() { mounted() {
this.getRcommendList();
} }
} }
</script> </script>
......
<template> <template>
<div class="contanier"> <div class="contanier">
<!-- <div class="search-title">-->
<!-- <div></div>-->
<!-- <div>-->
<!-- <el-button type="primary" size="small" @click="optimizedVisible = true" >添加优化建议-->
<!-- </el-button>-->
<!-- <el-tooltip effect="dark" placement="right-start">-->
<!-- <div slot="content" class="slot">-->
<!-- <p>注释信息及辅助提示文字内容</p>-->
<!-- </div>-->
<!-- <el-button type="text" icon="el-icon-question"></el-button>-->
<!-- </el-tooltip>-->
<!-- </div>-->
<!-- </div>-->
<div class="resume-contanier"> <div class="resume-contanier">
<div class="resume-header flex"> <div class="resume-header flex">
<div class="flex resume-header_left" style="margin-right:200px;"> <div class="flex resume-header_left" style="margin-right:200px;">
<img src="https://wx.qlogo.cn/mmopen/vi_32/0nluCqghffPjzhVqMuguxaGFY0dgicfArLZrFGIJo3xL3wZrODiaJR8Znux6w7KhR1HeKTkw7Yw3fqrmcO7cNSWQ/132" alt="" class="resume-avatar"> <img :src="detailInfo.photo" alt="" class="resume-avatar">
<div class="resume-header_info flex-direct"> <div class="resume-header_info flex-direct">
<div> <div>
<span class="name mr">王富贵</span> <span class="name mr">{{detailInfo.base_name}}</span>
<span>先生/27</span> <span>{{detailInfo.base_sex==1?'男':'女'}}/{{detailInfo.age}}</span>
</div> </div>
<div> <div>
<span class="mr">教课老师</span> <span class="mr">{{detailInfo.work_experiences[0].job_name}}</span>
<span class="mr">本科</span> <span class="mr">{{detailInfo.edu_experiences[0].qualifications}}</span>
<span >3-5年</span> <!-- <span >3-5年</span> -->
</div> </div>
</div> </div>
</div> </div>
...@@ -33,11 +20,13 @@ ...@@ -33,11 +20,13 @@
<div class="resume-header_info flex-direct"> <div class="resume-header_info flex-direct">
<div class="flex-between"> <div class="flex-between">
<i class='iconfont icon-mobile txtSize'></i> <i class='iconfont icon-mobile txtSize'></i>
<span class='ml'>已隐藏</span> <span class='ml' v-if="detailInfo.show_status==2">已隐藏</span>
<span class='ml' v-else>{{detailInfo.base_phone}}</span>
</div> </div>
<div class="flex-between"> <div class="flex-between">
<i class='iconfont icon-dianziyoujian txtSize'></i> <i class='iconfont icon-dianziyoujian txtSize'></i>
<span class='ml'>已隐藏</span> <span class='ml' v-if="detailInfo.show_status==2">已隐藏</span>
<span class='ml' v-else>{{detailInfo.base_email}}</span>
</div> </div>
</div> </div>
</div> </div>
...@@ -46,42 +35,39 @@ ...@@ -46,42 +35,39 @@
<div class="resume-item-title">求职意向</div> <div class="resume-item-title">求职意向</div>
<div class="resume-icon-style"> <div class="resume-icon-style">
<i class='iconfont icon-ruzhishijian txtSize'></i> <i class='iconfont icon-ruzhishijian txtSize'></i>
<span class='txt_adjust'>待业-求职中</span> <span class='txt_adjust'>
{{detailInfo.intention_current_status==1?'待业-求职中':
detailInfo.intention_current_status==2?'正常工作-寻求机会':
detailInfo.intention_current_status==3?'在业-暂不考虑机会':'学业中-寻找机会'
}}
</span>
</div> </div>
<div class="flex"> <div class="flex">
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-yingpinzhiwei txtSize'></i> <i class='iconfont icon-yingpinzhiwei txtSize'></i>
<span class='txt_adjust'>英语教师</span> <span class='txt_adjust'>{{detailInfo.job_name}}</span>
</div>
<div class="resume-icon-style gap">
<i class='iconfont icon-xueli txtSizel'></i>
<span class='txt_adjust'>初中</span>
</div> </div>
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-suozaichengshi txtSize'></i> <i class='iconfont icon-suozaichengshi txtSize'></i>
<span class='txt_adjust'>西安-雁塔</span> <span class='txt_adjust'>{{detailInfo.work_city}}-{{detailInfo.work_area}}</span>
</div> </div>
<div class="resume-icon-style gap"> <div class="resume-icon-style gap">
<i class='iconfont icon-xinziyaoqiu txtSize'></i> <i class='iconfont icon-xinziyaoqiu txtSize'></i>
<span class='txt_adjust'>5K-10K</span> <span class='txt_adjust'>{{detailInfo.intention_salary_min?(detailInfo.intention_salary_min/100000).toFixed(1):0}}K-{{detailInfo.intention_salary_max?(detailInfo.intention_salary_max/100000).toFixed(1):0}}K</span>
</div> </div>
</div> </div>
</div> </div>
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title">工作经历</div> <div class="resume-item-title">工作经历</div>
<div class="resume-experice"> <div class="resume-experice">
<div class="resume-experice-item"> <div class="resume-experice-item" v-for="(item,index) in detailInfo.work_experiences" :key="index">
<div class="resume-experice-company mb"> <div class="resume-experice-company mb">
<span class="resume-experice-txt">陕西当老师教育科技有限公司</span> <span class="resume-experice-txt">{{item.organization_name}}</span>
<span>2019.11 - 至今</span> <span>{{item.start_time}} - {{item.end_time?item.end_time:'至今'}}</span>
</div> </div>
<div class="resume-experice-job mb">数学教师</div> <div class="resume-experice-job mb">{{item.job_name}}</div>
<div>工作内容:</div> <div>工作内容:</div>
<div class="resume-content"> <div class="resume-content" v-html="item.work_content">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -89,20 +75,13 @@ ...@@ -89,20 +75,13 @@
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title">教育经历</div> <div class="resume-item-title">教育经历</div>
<div class="resume-edu"> <div class="resume-edu">
<div class="resume-edu-item"> <div class="resume-edu-item" v-for="(item,index) in detailInfo.edu_experiences" :key="index">
<div class="resume-edu-school mb"> <div class="resume-edu-school mb">
<span class="resume-edu-txt">陕西当老师教育科技有限公司</span> <span class="resume-edu-txt">{{item.school_name}}</span>
</div> </div>
<div class="resume-edu mb"> <div class="resume-edu mb">
<span class="resume-edu-course">教育心理学 · 本科</span> <span class="resume-edu-course">{{item.major_name}} · {{item.qualifications}}</span>
<span>2019.11 - 至今</span> <span>{{item.start_time}} - {{item.end_time?item.end_time:'至今'}}</span>
</div>
<div>工作内容:</div>
<div class="resume-content">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -110,48 +89,195 @@ ...@@ -110,48 +89,195 @@
<div class="resume-item"> <div class="resume-item">
<div class="resume-item-title mb">自我评价</div> <div class="resume-item-title mb">自我评价</div>
<div>相关描述:</div> <div>相关描述:</div>
<div class="resume-content"> <div class="resume-content" v-html="detailInfo.self_advantage">
<p>1、配合协助班级主班保育教育工作;</p>
<p>2、负责幼儿园的家庭教育指导工作;</p>
<p>3、负责幼儿园的亲子教育工作;</p>
<p>4、收集、整理家园教育资料</p>
</div> </div>
</div> </div>
<div>
<el-button type="primary" size="small" @click="isShowPassResume = true">通过</el-button>
<el-button type="danger" size="small" @click="isShowRefuseResume = true">拒绝</el-button>
</div>
</div> </div>
<!--优化建议--> <!--拒绝简历弹框-->
<el-dialog title="优化建议" :visible.sync="optimizedVisible" width="600px" center> <el-dialog title="拒绝理由" :visible.sync="isShowRefuseResume" width="360px" center>
<div> <div>
<el-input type="textarea" v-model="remarks" maxlength="200" rows="5" placeholder="请输入优化建议,最多200字"></el-input> <el-select v-model="refuse_reason" placeholder="请选择" style="width: 100%;margin-bottom: 20px">
<el-option v-for="item in reasonList" :key="item.label" :label="item.label" :value="item.value"></el-option>
</el-select>
<div class="operation">
<el-button type="primary" size="small" @click="sureRefuseResume">确定</el-button>
<el-button size="small" @click="isShowRefuseResume = false">取消</el-button>
</div>
</div>
</el-dialog>
<!--通过简历弹框-->
<el-dialog title="确认通过" :visible.sync="isShowPassResume" width="300px" center>
<div>
<div style="text-align: center;margin-bottom: 40px">该求职者是否符合贵司要求</div>
<div class="operation">
<el-button type="primary" size="small" @click="surePassResume">确定</el-button>
<el-button size="small" @click="isShowPassResume = false">取消</el-button>
</div>
</div> </div>
<span slot="footer" class="dialog-footer">
<el-button @click="optimizedVisible=false" size="small">取 消</el-button>
<el-button type="primary" @click="optimizedVisible=false" size="small">确 认</el-button>
</span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import {resumeDetail} from '@/api/resume' import {resumeDetail,resumePass,resumeRefuse} from '@/api/resume'
import {getJobClassify,applyRefuseReasons} from '@/api/common'
import { CodeToText, TextToCode,} from 'element-china-area-data';
import {Loading} from 'element-ui';
export default { export default {
data() { data() {
return { return {
optimizedVisible:false, optimizedVisible:false,
remarks:'' remarks:'',
detailInfo:'', //获取详情
suggestList:[],
jobList:[],
isShowRefuseResume: false,
isShowPassResume: false,
refuse_reason: '',
reasonList: []
}; };
}, },
methods: { methods: {
//获取拒绝原因列表
getResonList() {
applyRefuseReasons().then(res => {
if(res.error == 0) {
res.data.forEach(v=>{
this.reasonList.push({
label: v,
value: v
})
})
}
})
},
//确认通过
surePassResume() {
resumePass({
apply_id: Number(this.detailInfo.id),
handle: 'pass'
}).then(res => {
if(res.error == 0) {
this.$message.success('已通过成功!');
this.isShowPassResume = false;
}
})
},
//确认拒绝简历
sureRefuseResume() {
resumeRefuse({
apply_id: Number(this.detailInfo.id),
handle: 'refuse',
refuse_reason: this.refuse_reason
}).then(res => {
if(res.error == 0) {
this.$message.success('已拒绝成功!');
this.isShowRefuseResume = false;
}
})
},
jsGetAge(strBirthday){
var returnAge;
var strBirthdayArr=strBirthday.split("-");
var birthYear = strBirthdayArr[0];
var birthMonth = strBirthdayArr[1];
var birthDay = strBirthdayArr[2];
}, let d = new Date();
computed: { var nowYear = d.getFullYear();
var nowMonth = d.getMonth() + 1;
var nowDay = d.getDate();
}, if(nowYear == birthYear){
watch: { returnAge = 0;//同年 则为0岁
}
else{
var ageDiff = nowYear - birthYear ; //年之差
if(ageDiff > 0){
if(nowMonth == birthMonth) {
var dayDiff = nowDay - birthDay;//日之差
if(dayDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
else
{
var monthDiff = nowMonth - birthMonth;//月之差
if(monthDiff < 0)
{
returnAge = ageDiff - 1;
}
else
{
returnAge = ageDiff ;
}
}
}
else
{
returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
}
}
return returnAge;//返回周岁年龄
},
getDetail(){
let loading = Loading.service({
target: document.querySelector('.main-container'),
text: '请求中...',
});
// this.$route.query.cv_token
let data={
utoken:this.$route.query.utoken,
cv_token:"CV1577948246894fzJFS",
mode:0
}
resumeDetail(data).then(res=>{
loading.close();
if(res.error==0){
let obj={
...res.data,
age:this.jsGetAge(res.data.base_birthday),
work_city:CodeToText[res.data.intention_area_id.slice(0,4)+'00'],
work_area:CodeToText[res.data.intention_area_id],
job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job]
}
let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000']
this.detailInfo=obj;
}
}).catch()
},
}, //获取职位列表
created() { getJobList(){
return new Promise((resolve,reject)=>{
getJobClassify().then(res=>{
if(res.error==0){
this.jobList=res.data;
resolve(true)
}
}).catch();
}).catch(error => {
reject(error)
})
},
},
async created() {
await this.getJobList();
this.getResonList();
this.getDetail();
}, },
mounted() { mounted() {
...@@ -168,15 +294,6 @@ ...@@ -168,15 +294,6 @@
width:900px; width:900px;
margin:0 120px; margin:0 120px;
} }
.search-title {
width:900px;
/* margin:0 auto 10px; */
margin:0 120px 10px 120px;
display: flex;
align-items: center;
justify-content: space-between;
/* margin-bottom: 10px; */
}
.ml{ .ml{
margin-left:15px; margin-left:15px;
} }
...@@ -243,4 +360,14 @@ ...@@ -243,4 +360,14 @@
.resume-edu-course{ .resume-edu-course{
margin-right:100px; margin-right:100px;
} }
.suggest_title,.suggest_txt{
line-height: 30px;
}
.suggest_txt{
color:#666;
}
.operation {
margin-top: 20px;
text-align: center;
}
</style> </style>
...@@ -27,8 +27,8 @@ ...@@ -27,8 +27,8 @@
<div class="position"><span>{{scope.row.job_type == 1 ? '全' : '兼'}}</span>{{scope.row.base_name}}</div> <div class="position"><span>{{scope.row.job_type == 1 ? '全' : '兼'}}</span>{{scope.row.base_name}}</div>
<div class="info"> <div class="info">
<div>{{scope.row.work_city}}-{{scope.row.work_area}}</div> <div>{{scope.row.work_city}}-{{scope.row.work_area}}</div>
<div>{{scope.row.education}}</div> <div>{{scope.row.edu_experiences[0].qualifications}}</div>
<div>{{scope.row.experience}}</div> <!-- <div>{{scope.row.experience}}</div>-->
</div> </div>
</div> </div>
</template> </template>
...@@ -43,24 +43,27 @@ ...@@ -43,24 +43,27 @@
</el-table-column> </el-table-column>
<el-table-column align="center" prop="compensation" show-overflow-tooltip label="求职状态"> <el-table-column align="center" prop="compensation" show-overflow-tooltip label="求职状态">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="table-inf0-h3">{{scope.row.compensation}}</div> <div class="table-inf0-h3" v-if="scope.row.intention_current_status==1">待业-求职中</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==2">正常工作-寻求机会</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==3">在业-暂不考虑机会</div>
<div class="table-inf0-h3" v-if="scope.row.intention_current_status==4">学业中-寻找机会</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="publishTime" show-overflow-tooltip label="职位名称"> <el-table-column align="center" prop="publishTime" show-overflow-tooltip label="职位名称">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="compensation">{{scope.row.job_name}}</div> <div class="table-inf0-h3">{{scope.row.job_name}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" prop="refreshTime" show-overflow-tooltip label="处理时间"> <el-table-column align="center" prop="refreshTime" show-overflow-tooltip label="处理时间">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="table-inf0-h3">{{scope.row.publishTime}}</div> <div class="table-inf0-h3">{{scope.row.updated_at}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column align="center" label="操作" width="200" fixed="right"> <el-table-column align="center" label="操作" width="200" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div>
<el-button size="small" type="text" @click="checkResume(scope.row.id)">查看简历</el-button> <el-button size="small" type="text" @click="checkResume(scope.row.cv_token_apply, scope.row.utoken)">查看简历</el-button>
<span class="segmenting-line">|</span> <span class="segmenting-line">|</span>
<el-button size="small" type="text" @click="passResume(scope.row.id)">通过</el-button> <el-button size="small" type="text" @click="passResume(scope.row.id)">通过</el-button>
<span class="segmenting-line">|</span> <span class="segmenting-line">|</span>
...@@ -85,11 +88,7 @@ ...@@ -85,11 +88,7 @@
<el-dialog title="拒绝理由" :visible.sync="isShowRefuseResume" width="360px" center> <el-dialog title="拒绝理由" :visible.sync="isShowRefuseResume" width="360px" center>
<div> <div>
<el-select v-model="refuse_reason" placeholder="请选择" style="width: 100%;margin-bottom: 20px"> <el-select v-model="refuse_reason" placeholder="请选择" style="width: 100%;margin-bottom: 20px">
<el-option label="简历与职位不相符" value="简历与职位不相符"></el-option> <el-option v-for="item in reasonList" :key="item.label" :label="item.label" :value="item.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-select>
<div class="operation"> <div class="operation">
<el-button type="primary" size="small" @click="sureRefuseResume">确定</el-button> <el-button type="primary" size="small" @click="sureRefuseResume">确定</el-button>
...@@ -111,6 +110,8 @@ ...@@ -111,6 +110,8 @@
</template> </template>
<script> <script>
import {resumeList, resumePass, resumeRefuse} from "@/api/resume" import {resumeList, resumePass, resumeRefuse} from "@/api/resume"
import {applyRefuseReasons} from "@/api/common";
import {CodeToText} from 'element-china-area-data';
export default { export default {
data() { data() {
return { return {
...@@ -125,10 +126,24 @@ ...@@ -125,10 +126,24 @@
isShowPassResume: false, isShowPassResume: false,
isShowRefuseResume: false, isShowRefuseResume: false,
refuse_reason: '', refuse_reason: '',
checked_id: '' checked_id: '',
reasonList: []
} }
}, },
methods: { methods: {
//获取拒绝原因列表
getResonList() {
applyRefuseReasons().then(res => {
if(res.error == 0) {
res.data.forEach(v=>{
this.reasonList.push({
label: v,
value: v
})
})
}
})
},
//清空搜索条件 //清空搜索条件
reset() { reset() {
this.queryForm.searchContent = ''; this.queryForm.searchContent = '';
...@@ -143,9 +158,13 @@ ...@@ -143,9 +158,13 @@
return 'header-class-title' return 'header-class-title'
}, },
checkResume() { checkResume(id,utoken) {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/detail/" + 0, path: this.$route.path + "/detail/",
query: {
utoken: utoken,
cv_token: id
}
}); });
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
}, },
...@@ -173,7 +192,7 @@ ...@@ -173,7 +192,7 @@
sureRefuseResume() { sureRefuseResume() {
resumeRefuse({ resumeRefuse({
apply_id: Number(this.checked_id), apply_id: Number(this.checked_id),
handle: 'pass', handle: 'refuse',
refuse_reason: this.refuse_reason refuse_reason: this.refuse_reason
}).then(res => { }).then(res => {
if(res.error == 0) { if(res.error == 0) {
...@@ -187,6 +206,7 @@ ...@@ -187,6 +206,7 @@
let data = { let data = {
page: this.currentPage, page: this.currentPage,
page_size: this.page_size, page_size: this.page_size,
apply_type: 'self'
} }
if(this.queryForm.status) { if(this.queryForm.status) {
data.status = this.queryForm.status; data.status = this.queryForm.status;
...@@ -219,6 +239,7 @@ ...@@ -219,6 +239,7 @@
} }
}, },
mounted() { mounted() {
this.getResonList();
this.getResumeList(); this.getResumeList();
} }
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!