Commit 026a976d by yangchao

update

1 parent c86b38e8
...@@ -51,7 +51,6 @@ export function getJobClassify(data) { ...@@ -51,7 +51,6 @@ export function getJobClassify(data) {
} }
//投递拒绝原因 //投递拒绝原因
export function applyRefuseReasons(data) { export function applyRefuseReasons(data) {
return request({ return request({
url: 'recruit/common/applyRefuseReasons', url: 'recruit/common/applyRefuseReasons',
...@@ -61,4 +60,18 @@ export function applyRefuseReasons(data) { ...@@ -61,4 +60,18 @@ export function applyRefuseReasons(data) {
}) })
} }
//获取企业类型
export function getEnterpriseType(data) {
return request({
url: 'recruit/organization/types',
method: 'post',
data: data,
source : 'zp'
})
}
...@@ -48,3 +48,23 @@ export function accountLogin (data) { ...@@ -48,3 +48,23 @@ export function accountLogin (data) {
source : 'zp' source : 'zp'
}) })
} }
//忘记密码
export function forgetPassword(data) {
return request({
url: 'business/login/forgetPassword',
method: 'post',
data: data,
source : 'zp'
})
}
//忘记密码发送短信
export function send(data) {
return request({
url: 'business/login/forgetPassword/send',
method: 'post',
data: data,
source : 'zp'
})
}
...@@ -20,6 +20,16 @@ export function resumeDetail (data) { ...@@ -20,6 +20,16 @@ export function resumeDetail (data) {
}) })
} }
//简历详情
export function checkResumeDetail (data) {
return request({
url: 'recruit/apply/viewCv' ,
method : 'post' ,
data : data ,
source : 'zp'
})
}
//简历通过 //简历通过
export function resumePass (data) { export function resumePass (data) {
return request({ return request({
......
<template> <template>
<div> <div>
<el-upload class="upload-pic" action="//upload.qiniup.com" :data="form" :limit="66" multiple <el-upload class="upload-pic" action="//upload.qiniup.com" :data="form" :limit="1" 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/*">
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
<el-dialog :visible.sync="dialogVisible" width="40%" center> <el-dialog :visible.sync="dialogVisible" width="40%" center :modal="false">
<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">
......
...@@ -4,6 +4,11 @@ import store from '../store' ...@@ -4,6 +4,11 @@ import store from '../store'
let domain = process.env.NODE_ENV == 'development' ? '' : '.ledianyun.com'; let domain = process.env.NODE_ENV == 'development' ? '' : '.ledianyun.com';
// 获取商铺 token // 获取商铺 token
export function getMallToken() { export function getMallToken() {
...@@ -21,24 +26,24 @@ export function getMallRole() { ...@@ -21,24 +26,24 @@ export function getMallRole() {
let role = ['master']; let role = ['master'];
return ['master'] return ['master']
//基础版默认为 master 权限 //基础版默认为 master 权限
if (store.getters.platform == 'basic') { // if (store.getters.platform == 'basic') {
return ['master'] // return ['master']
} // }
let Roles = Cookies.get('storeMallRoles'); // let Roles = Cookies.get('storeMallRoles');
if (Roles) { // if (Roles) {
if (Cookies.get('storeMallRoles')) { // if (Cookies.get('storeMallRoles')) {
return JSON.parse(Decrypt(Roles)).roles // return JSON.parse(Decrypt(Roles)).roles
} else { // } else {
return role; // return role;
} // }
//
} else { // } else {
if (process.env.NODE_ENV == 'development') { // if (process.env.NODE_ENV == 'development') {
return Roles ? JSON.parse(Decrypt(Roles)).roles : role; // return Roles ? JSON.parse(Decrypt(Roles)).roles : role;
} else { // } else {
return JSON.parse(Decrypt(Roles)).roles // return JSON.parse(Decrypt(Roles)).roles
} // }
} // }
} }
......
const isEmail = (str) => {
if (str == null || str == "") return false;
var result = str.match(/^[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?$/);
if (result == null) return false;
return true;
}
export {isEmail}
...@@ -53,7 +53,8 @@ ...@@ -53,7 +53,8 @@
</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'>{{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> <span class="txt_adjust">{{detailInfo.intention_salary_level_txt}}</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>
...@@ -97,8 +98,8 @@ ...@@ -97,8 +98,8 @@
</template> </template>
<script> <script>
import {resumeDetail} from '@/api/resume' import {resumeDetail,checkResumeDetail} from '@/api/resume'
import {getJobClassify} from '@/api/common' import {getJobClassify,getSalaryExpectation} from '@/api/common'
import { CodeToText, TextToCode,} from 'element-china-area-data'; import { CodeToText, TextToCode,} from 'element-china-area-data';
import {Loading} from 'element-ui'; import {Loading} from 'element-ui';
...@@ -117,6 +118,7 @@ ...@@ -117,6 +118,7 @@
detailInfo:'', //获取详情 detailInfo:'', //获取详情
suggestList:[], suggestList:[],
jobList:[], jobList:[],
salaryLevels: []
}; };
}, },
methods: { methods: {
...@@ -176,11 +178,10 @@ ...@@ -176,11 +178,10 @@
}); });
// this.$route.query.cv_token // this.$route.query.cv_token
let data={ let data={
utoken:this.$route.query.utoken, apply_id: this.$route.query.apply_id,
cv_token:"CV1577948246894fzJFS", cv_token_apply: this.$route.query.cv_token_apply
mode:0
} }
resumeDetail(data).then(res=>{ checkResumeDetail(data).then(res=>{
loading.close(); loading.close();
if(res.error==0){ if(res.error==0){
let obj={ let obj={
...@@ -190,10 +191,12 @@ ...@@ -190,10 +191,12 @@
work_area:CodeToText[res.data.intention_area_id], work_area:CodeToText[res.data.intention_area_id],
job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job] job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job]
} }
console.log(this.jobList) this.salaryLevels.forEach(v=>{
if(v.level == obj.intention_salary_level) {
obj.intention_salary_level_txt = v.level_name;
}
})
let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000'] let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000']
console.log(a1);
console.log(obj);
this.detailInfo=obj; this.detailInfo=obj;
} }
}).catch() }).catch()
...@@ -213,10 +216,24 @@ ...@@ -213,10 +216,24 @@
}) })
}, },
//获取薪资列表
getSalaryLevels() {
return new Promise(resolve => {
getSalaryExpectation().then(res => {
if(res.error == 0) {
this.salaryLevels = res.data;
resolve();
}
})
}).catch(error =>{
})
}
}, },
async created() { async created() {
await this.getJobList(); await this.getJobList();
await this.getSalaryLevels();
this.getDetail(); this.getDetail();
this.getSysSuggestion(); this.getSysSuggestion();
}, },
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
<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(scope.row.cv_token_apply, scope.row.utoken)">查看简历</el-button> <el-button size="small" type="text" @click="checkResume(scope.row.cv_token_apply, scope.row.apply_id)">查看简历</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(scope.row.apply_id,scope.row.id)" 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(scope.row.apply_id,scope.row.id)" 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>
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
<div> <div>
<div class="line-style"> <div class="line-style">
<div class="label">面试时间:</div> <div class="label">面试时间:</div>
<el-date-picker v-model="interview_time" size="small" <el-date-picker v-model="interview_time" size="small" :picker-options="pickerOptions"
type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="选择日期时间"
style="width: 270px"> style="width: 270px">
</el-date-picker> </el-date-picker>
...@@ -116,6 +116,7 @@ ...@@ -116,6 +116,7 @@
import {interviewList, interviewDispose} from '@/api/interview'; import {interviewList, interviewDispose} from '@/api/interview';
import {getAcademicQualifications, getWorkExperience, getSalaryExpectation} from "@/api/common"; import {getAcademicQualifications, getWorkExperience, getSalaryExpectation} from "@/api/common";
import {CodeToText} from 'element-china-area-data'; import {CodeToText} from 'element-china-area-data';
import {nsToText} from '@/utils/formatDateTime'
export default { export default {
data() { data() {
return { return {
...@@ -126,7 +127,6 @@ ...@@ -126,7 +127,6 @@
currentPage: 1,//当前页 currentPage: 1,//当前页
totalPages: 0,//总记录数 totalPages: 0,//总记录数
page_size: 10,//每页10条记录 page_size: 10,//每页10条记录
isShowPassResume: false,
isShowRefuseResume: false, isShowRefuseResume: false,
resumeStatus: '1', resumeStatus: '1',
interview_time: '', //面试时间 interview_time: '', //面试时间
...@@ -134,7 +134,12 @@ ...@@ -134,7 +134,12 @@
eduList: [], eduList: [],
workAgesList: [], workAgesList: [],
apply_id: '', apply_id: '',
interview_id: '' interview_id: '',
pickerOptions: {
disabledDate(time) {
return time.getTime() < Date.now() - 8.64e7
}
},
} }
}, },
methods: { methods: {
...@@ -143,7 +148,7 @@ ...@@ -143,7 +148,7 @@
interviewDispose({ interviewDispose({
apply_id: this.apply_id, apply_id: this.apply_id,
interview_id: this.interview_id, interview_id: this.interview_id,
interview_time: this.interview_time, interview_time: nsToText(this.interview_time),
interview_address: this.interview_address interview_address: this.interview_address
}).then(res => { }).then(res => {
if(res.error ==0) { if(res.error ==0) {
...@@ -163,12 +168,12 @@ ...@@ -163,12 +168,12 @@
this.queryForm.status = this.resumeStatus; this.queryForm.status = this.resumeStatus;
this.getInterviewList(); this.getInterviewList();
}, },
checkResume(id,utoken) { checkResume(utoken,id) {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/detail/", path: this.$route.path + "/detail/",
query: { query: {
utoken: utoken, cv_token_apply: utoken,
cv_token: id apply_id: id
} }
}); });
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
......
...@@ -15,7 +15,10 @@ ...@@ -15,7 +15,10 @@
</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="registerInfo.enterprise_type"></el-input> <el-select class="input" v-model="registerInfo.enterprise_type" placeholder="请选择" size="small">
<el-option v-for="item in enterprise" :key="item.type" :label="item.type_name" :value="item.type">
</el-option>
</el-select>
</div> </div>
<div class="line-style"> <div class="line-style">
<div class="label">企业区域:</div> <div class="label">企业区域:</div>
...@@ -50,9 +53,11 @@ ...@@ -50,9 +53,11 @@
</template> </template>
<script> <script>
import uploadimage from '../../components/Upload/upload' 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'; import {provinceAndCityData,regionData, CodeToText, TextToCode} from 'element-china-area-data';
import {getEnterpriseType} from '@/api/common';
export default { export default {
name: "newPoint", name: "newPoint",
components: { components: {
...@@ -61,6 +66,7 @@ ...@@ -61,6 +66,7 @@
data() { data() {
return { return {
regionData: regionData, regionData: regionData,
enterprise: [],
registerInfo: { registerInfo: {
portrait: [], //头像 portrait: [], //头像
getPortrait: [], getPortrait: [],
...@@ -126,10 +132,25 @@ ...@@ -126,10 +132,25 @@
this.$message.success('操作成功!'); this.$message.success('操作成功!');
} }
}) })
},
//获取企业类型
getEnterprise() {
return new Promise(resolve=>{
getEnterpriseType().then(res => {
if(res.error ==0) {
this.enterprise = res.data;
resolve();
}
})
}).catch(error => {
})
} }
}, },
mounted() { async mounted() {
this.getInfo(); await this.getEnterprise();
await this.getInfo();
} }
} }
</script> </script>
......
...@@ -8,8 +8,8 @@ ...@@ -8,8 +8,8 @@
<div class="info-job_txt">{{detailInfo.job_name}}</div> <div class="info-job_txt">{{detailInfo.job_name}}</div>
</div> </div>
</div> </div>
<div class="table-info-h1">陕西当老师教育科技有限公司</div> <div class="table-info-h1">{{detailInfo.organization_name}}</div>
<div class="info-salary">{{detailInfo.job_require_salary_min/100000}}K-{{detailInfo.job_require_salary_max/100000}}K</div> <div class="info-salary">{{detailInfo.job_require_salary_level_txt}}</div>
</div> </div>
<div class="info-item"> <div class="info-item">
<div class="table-inf0-h3 mb"> <div class="table-inf0-h3 mb">
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
<span class='mr'>{{detailInfo.job_require_work_ages_txt}}</span> <span class='mr'>{{detailInfo.job_require_work_ages_txt}}</span>
<span>{{detailInfo.job_require_people}}</span> <span>{{detailInfo.job_require_people}}</span>
</div> </div>
<div class="info-update_time mb">更新:{{detailInfo.updated_at?detailInfo.updated_at:'--'}}</div> <div class="info-update_time mb" v-if="detailInfo.created_at == detailInfo.updated_at">创建时间:{{detailInfo.created_at?detailInfo.created_at:'--'}}</div>
<div class="info-update_time mb" v-else>更新时间:{{detailInfo.updated_at?detailInfo.updated_at:'--'}}</div>
<div class="flex" v-if="detailInfo.job_benefits"> <div class="flex" v-if="detailInfo.job_benefits">
<span class="item-tips" v-for="(item,index) in detailInfo.job_benefits" :key="index">{{item}}</span> <span class="item-tips" v-for="(item,index) in detailInfo.job_benefits" :key="index">{{item}}</span>
</div> </div>
...@@ -90,6 +91,7 @@ ...@@ -90,6 +91,7 @@
id: '', id: '',
eduList: [], eduList: [],
workAgesList: [], workAgesList: [],
salaryLevels: []
}; };
}, },
methods: { methods: {
...@@ -126,6 +128,7 @@ ...@@ -126,6 +128,7 @@
} }
this.eduList.forEach(m =>{if(m.level==obj.job_require_edu_level){ obj.job_require_edu_level_txt = m.level_name}}) this.eduList.forEach(m =>{if(m.level==obj.job_require_edu_level){ obj.job_require_edu_level_txt = m.level_name}})
this.workAgesList.forEach(m =>{if(m.level==obj.job_require_work_ages){ obj.job_require_work_ages_txt =m.level_name}}) this.workAgesList.forEach(m =>{if(m.level==obj.job_require_work_ages){ obj.job_require_work_ages_txt =m.level_name}})
this.salaryLevels.forEach(m =>{if(m.level==obj.job_require_salary_level){ obj.job_require_salary_level_txt =m.level_name}})
this.detailInfo=obj; this.detailInfo=obj;
console.log(this.detailInfo,'==='); console.log(this.detailInfo,'===');
} }
...@@ -158,6 +161,20 @@ ...@@ -158,6 +161,20 @@
}) })
}, },
//获取薪资列表
getSalaryLevels() {
return new Promise(resolve => {
getSalaryExpectation().then(res => {
if(res.error == 0) {
this.salaryLevels = res.data;
resolve();
}
})
}).catch(error =>{
})
},
}, },
computed: { computed: {
...@@ -168,6 +185,7 @@ ...@@ -168,6 +185,7 @@
async created() { async created() {
await this.getEduLevels(); await this.getEduLevels();
await this.getWorkAges(); await this.getWorkAges();
await this.getSalaryLevels();
if (this.$route.params.id && this.$route.params.id != 0) { if (this.$route.params.id && this.$route.params.id != 0) {
this.id = this.$route.params.id; this.id = this.$route.params.id;
this.getDetail(); this.getDetail();
......
...@@ -60,13 +60,13 @@ ...@@ -60,13 +60,13 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="薪资范围:">-->
<!-- <el-input size="small" class="input-small" v-model="positionForm.min_salary"></el-input>-->
<!-- <span style="color: #AAAAAA">-</span>-->
<!-- <el-input size="small" class="input-small" v-model="positionForm.max_salary"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="薪资范围:"> <el-form-item label="薪资范围:">
<el-input size="small" class="input-small" v-model="positionForm.min_salary"></el-input> <el-select v-model="positionForm.salaryScope" placeholder="请选择" size="small" @change="selectSalary">
<span style="color: #AAAAAA">-</span>
<el-input size="small" class="input-small" v-model="positionForm.max_salary"></el-input>
</el-form-item>
<el-form-item label="薪资范围:">
<el-select v-model="positionForm.experience" placeholder="请选择" size="small">
<el-option v-for="item in salaryLevels" :key="item.level" :label="item.level_name" :value="item.level"> <el-option v-for="item in salaryLevels" :key="item.level" :label="item.level_name" :value="item.level">
</el-option> </el-option>
</el-select> </el-select>
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
</div> </div>
<el-form-item> <el-form-item>
<el-button type="primary" @click="create" class="form-btn" size="small">立即创建</el-button> <el-button type="primary" @click="create" class="form-btn" size="small">{{id?'更新':'立即创建'}}</el-button>
<el-button @click="goback" class="form-btn" size="small">取消</el-button> <el-button @click="goback" class="form-btn" size="small">取消</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -139,7 +139,8 @@ ...@@ -139,7 +139,8 @@
min_salary: '', //薪资范围 小 min_salary: '', //薪资范围 小
max_salary: '', //薪资范围 大 max_salary: '', //薪资范围 大
job_benefits: [], //公司福利 job_benefits: [], //公司福利
location_adderss: '' location_adderss: '',
salaryScope: ''
}, },
id: '', id: '',
inputVisible: false, inputVisible: false,
...@@ -148,6 +149,11 @@ ...@@ -148,6 +149,11 @@
} }
}, },
methods: { methods: {
//选择薪资
selectSalary(e) {
this.positionForm.min_salary = this.salaryLevels[e].data.min;
this.positionForm.max_salary = this.salaryLevels[e].data.max;
},
handleClose(tag) { handleClose(tag) {
this.job_benefits.splice(this.job_benefits.indexOf(tag), 1); this.job_benefits.splice(this.job_benefits.indexOf(tag), 1);
}, },
...@@ -175,6 +181,10 @@ ...@@ -175,6 +181,10 @@
}, },
//立即创建 //立即创建
create() { create() {
if(!this.positionForm.position_name.trim()) {
this.$message.error('请输入职位名称');
return;
}
let data = { let data = {
job_name: this.positionForm.position_name, job_name: this.positionForm.position_name,
job_classification_id: this.positionForm.position_type[2]?this.positionForm.position_type[2]:this.positionForm.position_type[1], job_classification_id: this.positionForm.position_type[2]?this.positionForm.position_type[2]:this.positionForm.position_type[1],
...@@ -184,13 +194,14 @@ ...@@ -184,13 +194,14 @@
job_require_people: Number(this.positionForm.number), job_require_people: Number(this.positionForm.number),
job_require_edu_level: this.positionForm.education ? Number(this.positionForm.education) : 2, job_require_edu_level: this.positionForm.education ? Number(this.positionForm.education) : 2,
job_require_work_ages: this.positionForm.experience ? Number(this.positionForm.experience) : 3, job_require_work_ages: this.positionForm.experience ? Number(this.positionForm.experience) : 3,
job_require_salary_min: this.positionForm.min_salary * 100, job_require_salary_min: this.positionForm.min_salary,
job_require_salary_max: this.positionForm.max_salary * 100, job_require_salary_max: this.positionForm.max_salary,
job_remark: this.positionForm.position_describe, job_remark: this.positionForm.position_describe,
job_benefits: this.job_benefits, job_benefits: this.job_benefits,
location_lng: this.positionForm.longitude, location_lng: this.positionForm.longitude,
location_lat: this.positionForm.latitude, location_lat: this.positionForm.latitude,
location_adderss: this.positionForm.location_adderss, location_adderss: this.positionForm.location_adderss,
job_require_salary_level: this.positionForm.salaryScope
} }
let explain = '创建成功'; let explain = '创建成功';
if(this.id) { if(this.id) {
...@@ -199,6 +210,7 @@ ...@@ -199,6 +210,7 @@
} }
positionEdit(data).then(res => { positionEdit(data).then(res => {
if(res.error == 0) { if(res.error == 0) {
localStorage.setItem("$windowState",0);
this.$message.success(explain); this.$message.success(explain);
this.goback(); this.goback();
} }
...@@ -216,8 +228,8 @@ ...@@ -216,8 +228,8 @@
this.positionForm.number = res.data.job_require_people; this.positionForm.number = res.data.job_require_people;
this.positionForm.address = res.data.work_address; this.positionForm.address = res.data.work_address;
this.positionForm.location_adderss = res.data.location_adderss; this.positionForm.location_adderss = res.data.location_adderss;
this.positionForm.min_salary = res.data.job_require_salary_min / 100; // this.positionForm.min_salary = res.data.job_require_salary_min / 100;
this.positionForm.max_salary = res.data.job_require_salary_max / 100; // this.positionForm.max_salary = res.data.job_require_salary_max / 100;
this.job_benefits = res.data.job_benefits; this.job_benefits = res.data.job_benefits;
this.positionForm.get_position_describe = res.data.job_remark; this.positionForm.get_position_describe = res.data.job_remark;
this.positionForm.education = res.data.job_require_edu_level; this.positionForm.education = res.data.job_require_edu_level;
...@@ -227,12 +239,12 @@ ...@@ -227,12 +239,12 @@
this.positionForm.longitude = res.data.location_lng; this.positionForm.longitude = res.data.location_lng;
this.positionForm.latitude = res.data.location_lat; this.positionForm.latitude = res.data.location_lat;
this.positionForm.location_adderss = res.data.location_adderss; this.positionForm.location_adderss = res.data.location_adderss;
this.positionForm.salaryScope = res.data.job_require_salary_level;
if (res.data.location_lng != 0 || res.data.location_lat != 0) { if (res.data.location_lng != 0 || res.data.location_lat != 0) {
let position = [res.data.location_lng, res.data.location_lat]; let position = [res.data.location_lng, res.data.location_lat];
console.log(position,'position');
setTimeout(() => { setTimeout(() => {
this.regeocoder(position) this.regeocoder(position)
}, 1000) }, 100)
} }
} }
}) })
...@@ -399,6 +411,9 @@ ...@@ -399,6 +411,9 @@
getAcademicQualifications().then(res => { getAcademicQualifications().then(res => {
if(res.error == 0) { if(res.error == 0) {
this.education = res.data; this.education = res.data;
this.education.forEach(v => {
v.level = String(v.level)
})
resolve(); resolve();
} }
}) })
...@@ -413,6 +428,9 @@ ...@@ -413,6 +428,9 @@
getWorkExperience().then(res => { getWorkExperience().then(res => {
if (res.error == 0) { if (res.error == 0) {
this.experience = res.data; this.experience = res.data;
this.experience.forEach(v => {
v.level = String(v.level)
})
resolve(); resolve();
} }
}) })
...@@ -438,6 +456,10 @@ ...@@ -438,6 +456,10 @@
getSalaryExpectation().then(res => { getSalaryExpectation().then(res => {
if(res.error == 0) { if(res.error == 0) {
this.salaryLevels = res.data; this.salaryLevels = res.data;
this.salaryLevels.forEach(v => {
v.level = String(v.level)
})
resolve();
} }
}) })
}).catch(error =>{ }).catch(error =>{
...@@ -453,7 +475,6 @@ ...@@ -453,7 +475,6 @@
await this.JobClassify(); await this.JobClassify();
await this.getSalaryLevels(); await this.getSalaryLevels();
if (this.$route.params.id && this.$route.params.id != 0) { if (this.$route.params.id && this.$route.params.id != 0) {
console.log(9);
this.id = this.$route.params.id; this.id = this.$route.params.id;
this.getPositionDetail(); this.getPositionDetail();
} }
......
...@@ -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).toFixed(1)}}~{{(scope.row.job_require_salary_max / 100000).toFixed(1)}}K</div> <div class="compensation">{{scope.row.job_require_salary_level_txt}}</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="发布时间">
...@@ -69,7 +69,8 @@ ...@@ -69,7 +69,8 @@
<el-button size="small" type="text" @click="editPartner(scope.row.id)">编辑</el-button> <el-button size="small" type="text" @click="editPartner(scope.row.id)">编辑</el-button>
<span class="segmenting-line">|</span> <span class="segmenting-line">|</span>
<el-button size="small" type="text" @click="refreshPosition(scope.row.id)">刷新</el-button> <el-button size="small" type="text" @click="refreshPosition(scope.row.id)">刷新</el-button>
<el-button size="small" type="text" @click="closePosition(scope.row.id)">关闭</el-button> <el-button size="small" type="text" v-if="scope.row.status == 1" @click="closePosition(scope.row.id)">关闭</el-button>
<el-button size="small" type="text" v-if="scope.row.status == 2" @click="openPosition(scope.row.id)">开启</el-button>
<span class="segmenting-line">|</span> <span class="segmenting-line">|</span>
<el-button size="small" type="text" style="color: #f56c6c" @click="deletePosition(scope.row.id)">删除</el-button> <el-button size="small" type="text" style="color: #f56c6c" @click="deletePosition(scope.row.id)">删除</el-button>
</div> </div>
...@@ -95,7 +96,17 @@ ...@@ -95,7 +96,17 @@
<div style="text-align: center;margin-bottom: 40px">是否已经招到合适人选?</div> <div style="text-align: center;margin-bottom: 40px">是否已经招到合适人选?</div>
<div class="operation"> <div class="operation">
<el-button type="primary" size="small" @click="sureClose">已招到</el-button> <el-button type="primary" size="small" @click="sureClose">已招到</el-button>
<el-button size="small" @click="isShowClose = false">未招到</el-button> <el-button size="small" @click="sureClose">未招到</el-button>
</div>
</div>
</el-dialog>
<!--开启职位弹框-->
<el-dialog title="确认开启" :visible.sync="isShowOpen" width="300px" center>
<div>
<div style="text-align: center;margin-bottom: 40px">是否重新开启职位?</div>
<div class="operation">
<el-button type="primary" size="small" @click="sureOpen">确认</el-button>
<el-button size="small" @click="isShowOpen = false">取消</el-button>
</div> </div>
</div> </div>
</el-dialog> </el-dialog>
...@@ -139,11 +150,13 @@ ...@@ -139,11 +150,13 @@
totalPages: 0,//总记录数 totalPages: 0,//总记录数
page_size: 10,//每页10条记录 page_size: 10,//每页10条记录
isShowClose: false, isShowClose: false,
isShowOpen: false,
isShowRefresh: false, isShowRefresh: false,
isShowDelete: false, isShowDelete: false,
this_id: '', this_id: '',
eduList: [], eduList: [],
workAgesList: [], workAgesList: [],
salaryLevels: []
} }
}, },
methods: { methods: {
...@@ -171,6 +184,24 @@ ...@@ -171,6 +184,24 @@
this.this_id = id; this.this_id = id;
this.isShowClose = true; this.isShowClose = true;
}, },
//开启职位
openPosition(id) {
this.this_id = id;
this.isShowOpen = true;
},
//确认开启职位
sureOpen() {
positionUpdate({
id: this.this_id,
status: 1
}).then(res => {
if(res.error == 0) {
this.$message.success('开启成功');
this.isShowOpen = false;
this.getPositionList();
}
})
},
//确认关闭职位 //确认关闭职位
sureClose() { sureClose() {
positionUpdate({ positionUpdate({
...@@ -179,6 +210,7 @@ ...@@ -179,6 +210,7 @@
}).then(res => { }).then(res => {
if(res.error == 0) { if(res.error == 0) {
this.$message.success('关闭成功'); this.$message.success('关闭成功');
this.isShowClose = false;
this.getPositionList(); this.getPositionList();
} }
}) })
...@@ -194,6 +226,7 @@ ...@@ -194,6 +226,7 @@
}).then(res => { }).then(res => {
if(res.error == 0) { if(res.error == 0) {
this.$message.success('删除成功!'); this.$message.success('删除成功!');
this.isShowDelete = false;
this.getPositionList(); this.getPositionList();
} }
}) })
...@@ -203,11 +236,25 @@ ...@@ -203,11 +236,25 @@
this.this_id = id; this.this_id = id;
this.isShowDelete = true; this.isShowDelete = true;
}, },
//监控新标签页状态
newBlank() {
localStorage.setItem("$windowState", 1);
let handle = function () {
let changeValue = localStorage.getItem("$windowState")
if (changeValue == 0) {
this.getPositionList();
localStorage.removeItem("$windowState");
window.removeEventListener("storage", handle);
}
}.bind(this);
window.addEventListener("storage", handle);
},
//添加职位 //添加职位
addPartner() { addPartner() {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/edit/" + 0, path: this.$route.path + "/edit/" + 0,
}); });
this.newBlank();
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
}, },
//编辑职位 //编辑职位
...@@ -215,6 +262,7 @@ ...@@ -215,6 +262,7 @@
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/edit/" + id, path: this.$route.path + "/edit/" + id,
}); });
this.newBlank();
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
}, },
//获取职位列表 //获取职位列表
...@@ -237,8 +285,13 @@ ...@@ -237,8 +285,13 @@
work_city: CodeToText[item.work_area_id.slice(0,4)+'00'], work_city: CodeToText[item.work_area_id.slice(0,4)+'00'],
work_area: CodeToText[item.work_area_id], work_area: CodeToText[item.work_area_id],
} }
this.eduList.forEach(m =>{if(m.level==item.job_require_edu_level){ obj.job_require_edu_level_txt = m.level_name}}) 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}}) this.workAgesList.forEach(m =>{if(m.level==item.job_require_work_ages){ obj.job_require_work_ages_txt =m.level_name}});
this.salaryLevels.forEach(m => {
if(m.level == item.job_require_salary_level) {
obj.job_require_salary_level_txt = m.level_name;
}
})
return obj; return obj;
}) })
resolve(); resolve();
...@@ -277,6 +330,20 @@ ...@@ -277,6 +330,20 @@
}) })
}, },
//获取薪资列表
getSalaryLevels() {
return new Promise(resolve => {
getSalaryExpectation().then(res => {
if(res.error == 0) {
this.salaryLevels = res.data;
resolve();
}
})
}).catch(error =>{
})
},
//选择第几页 //选择第几页
handleCurrentChange(page) { handleCurrentChange(page) {
this.currentPage = page; this.currentPage = page;
...@@ -292,6 +359,7 @@ ...@@ -292,6 +359,7 @@
async mounted() { async mounted() {
await this.getEduLevels(); await this.getEduLevels();
await this.getWorkAges(); await this.getWorkAges();
await this.getSalaryLevels();
await this.getPositionList(); await this.getPositionList();
} }
} }
......
...@@ -53,7 +53,8 @@ ...@@ -53,7 +53,8 @@
</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'>{{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> <span class="txt_adjust">{{detailInfo.intention_salary_level_txt}}</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>
...@@ -97,6 +98,7 @@ ...@@ -97,6 +98,7 @@
<el-button type="danger" size="small" @click="isShowRefuseResume = true">拒绝</el-button> <el-button type="danger" size="small" @click="isShowRefuseResume = true">拒绝</el-button>
</div> </div>
</div> </div>
<!--拒绝简历弹框--> <!--拒绝简历弹框-->
<el-dialog title="拒绝理由" :visible.sync="isShowRefuseResume" width="360px" center> <el-dialog title="拒绝理由" :visible.sync="isShowRefuseResume" width="360px" center>
<div> <div>
...@@ -123,19 +125,13 @@ ...@@ -123,19 +125,13 @@
</template> </template>
<script> <script>
import {resumeDetail,resumePass,resumeRefuse} from '@/api/resume' import {resumeDetail,resumePass,resumeRefuse,checkResumeDetail} from '@/api/resume'
import {getJobClassify,applyRefuseReasons} from '@/api/common' import {getJobClassify,applyRefuseReasons,getSalaryExpectation} from '@/api/common'
import { CodeToText, TextToCode,} from 'element-china-area-data'; import { CodeToText, TextToCode,} from 'element-china-area-data';
import {Loading} from 'element-ui'; import {Loading} from 'element-ui';
export default { export default {
props: {
},
components: {
},
data() { data() {
return { return {
optimizedVisible:false, optimizedVisible:false,
...@@ -146,7 +142,8 @@ ...@@ -146,7 +142,8 @@
isShowRefuseResume: false, isShowRefuseResume: false,
isShowPassResume: false, isShowPassResume: false,
refuse_reason: '', refuse_reason: '',
reasonList: [] reasonList: [],
salaryLevels: []
}; };
}, },
methods: { methods: {
...@@ -166,7 +163,7 @@ ...@@ -166,7 +163,7 @@
//确认通过 //确认通过
surePassResume() { surePassResume() {
resumePass({ resumePass({
apply_id: Number(this.detailInfo.id), apply_id: this.$route.query.apply_id,
handle: 'pass' handle: 'pass'
}).then(res => { }).then(res => {
if(res.error == 0) { if(res.error == 0) {
...@@ -244,11 +241,10 @@ ...@@ -244,11 +241,10 @@
}); });
// this.$route.query.cv_token // this.$route.query.cv_token
let data={ let data={
utoken:this.$route.query.utoken, apply_id: this.$route.query.apply_id,
cv_token:"CV1577948246894fzJFS", cv_token_apply: this.$route.query.cv_token_apply
mode:0
} }
resumeDetail(data).then(res=>{ checkResumeDetail(data).then(res=>{
loading.close(); loading.close();
if(res.error==0){ if(res.error==0){
let obj={ let obj={
...@@ -258,9 +254,12 @@ ...@@ -258,9 +254,12 @@
work_area:CodeToText[res.data.intention_area_id], work_area:CodeToText[res.data.intention_area_id],
job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job] job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job]
} }
this.salaryLevels.forEach(v=>{
if(v.level == obj.intention_salary_level) {
obj.intention_salary_level_txt = v.level_name;
}
})
let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000'] let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000']
console.log(a1);
console.log(obj);
this.detailInfo=obj; this.detailInfo=obj;
} }
}).catch() }).catch()
...@@ -280,12 +279,26 @@ ...@@ -280,12 +279,26 @@
}) })
}, },
//获取薪资列表
getSalaryLevels() {
return new Promise(resolve => {
getSalaryExpectation().then(res => {
if(res.error == 0) {
this.salaryLevels = res.data;
resolve();
}
})
}).catch(error =>{
})
}
}, },
async created() { async created() {
await this.getJobList(); await this.getJobList();
this.getResonList(); await this.getResonList();
await this.getSalaryLevels();
this.getDetail(); this.getDetail();
this.getSysSuggestion();
}, },
mounted() { mounted() {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<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-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=""></el-option> <el-option label="全部" value=""></el-option>
<el-option label="刚投递" value="1"></el-option> <el-option label="刚投递" value="1"></el-option>
...@@ -16,10 +16,32 @@ ...@@ -16,10 +16,32 @@
<el-option label="已拒绝" value="4"></el-option> <el-option label="已拒绝" value="4"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="" prop="searchContent" class="order-item"> <el-form-item label="工作经验:" prop="searchContent" class="order-item">
<el-button type="primary" size="small" style="" @click="search">搜索</el-button> <el-select v-model="queryForm.work_level" placeholder="请选择" class="input-style" size="small">
<el-option v-for="item in experience" :key="item.level" :label="item.level_name" :value="item.level">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="fiter-col">
<el-form-item label="教育经历:" prop="searchContent" class="order-item">
<el-select v-model="queryForm.edu_level" placeholder="请选择" class="input-style" size="small">
<el-option v-for="item in education" :key="item.level" :label="item.level_name" :value="item.level">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="薪资范围:" prop="searchContent" class="order-item">
<el-select v-model="queryForm.salary_level" placeholder="请选择" class="input-style" size="small">
<el-option v-for="item in salaryLevels" :key="item.level" :label="item.level_name" :value="item.level">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</div> </div>
<div class="fiter-col" style="margin-bottom: 0">
<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>
</el-form> </el-form>
<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">
...@@ -52,6 +74,13 @@ ...@@ -52,6 +74,13 @@
<span class="table-inf0-h3">{{scope.row.job_name}}</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="refreshTime" show-overflow-tooltip label="推荐类型">
<template slot-scope="scope">
<span class="table-inf0-h3" v-if="scope.row.apply_type == 1">用户投递</span>
<span class="table-inf0-h3" v-if="scope.row.apply_type == 2">人工推荐</span>
<span class="table-inf0-h3" v-if="scope.row.apply_type == 3">系统推荐</span>
</template>
</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.updated_at}}</span> <span class="table-inf0-h3">{{scope.row.updated_at}}</span>
...@@ -60,7 +89,7 @@ ...@@ -60,7 +89,7 @@
<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(scope.row.cv_token_apply, scope.row.utoken)">查看简历</el-button> <el-button size="small" type="text" @click="checkPosition(scope.row.cv_token_apply, scope.row.id)">查看简历</el-button>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
...@@ -82,28 +111,24 @@ ...@@ -82,28 +111,24 @@
<script> <script>
import {resumeList, resumePass, resumeRefuse} from "@/api/resume" import {resumeList, resumePass, resumeRefuse} from "@/api/resume"
import {CodeToText} from 'element-china-area-data'; import {CodeToText} from 'element-china-area-data';
import {applyRefuseReasons,getAcademicQualifications, getWorkExperience,getSalaryExpectation} from "@/api/common";
export default { export default {
data() { data() {
return { return {
queryForm:{ queryForm:{
searchContent:'', searchContent:'',
status:'', status:'',
work_level: '',
edu_level: '',
salary_level: ''
}, },
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条记录
education: [],
experience: [],
salaryLevels: [],
} }
}, },
methods: { methods: {
...@@ -115,17 +140,20 @@ ...@@ -115,17 +140,20 @@
reset() { reset() {
this.queryForm.searchContent = ''; this.queryForm.searchContent = '';
this.queryForm.status = ''; this.queryForm.status = '';
this.queryForm.edu_level = '';
this.queryForm.work_level = '';
this.queryForm.salary_level = '';
this.getRcommendList(); this.getRcommendList();
}, },
headerName() { headerName() {
return 'header-class-title' return 'header-class-title'
}, },
checkPosition(id,utoken) { checkPosition(utoken,id) {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/detail/", path: this.$route.path + "/detail/",
query: { query: {
utoken: utoken, cv_token_apply: utoken,
cv_token: id apply_id: id
} }
}); });
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
...@@ -138,11 +166,20 @@ ...@@ -138,11 +166,20 @@
let data = { let data = {
page: this.currentPage, page: this.currentPage,
page_size: this.page_size, page_size: this.page_size,
apply_type: 'self' apply_type: 'recommend',
} }
if(this.queryForm.status) { if(this.queryForm.status) {
data.status = this.queryForm.status; data.status = this.queryForm.status;
} }
if(this.queryForm.edu_level) {
data.edu_level = String(this.queryForm.edu_level);
}
if(this.queryForm.work_level) {
data.work_level = this.queryForm.work_level;
}
if(this.queryForm.salary_level) {
data.salary_level = this.queryForm.salary_level;
}
resumeList(data).then(res => { resumeList(data).then(res => {
if(res.error == 0 && res.data && res.data.info) { if(res.error == 0 && res.data && res.data.info) {
this.list = res.data.info; this.list = res.data.info;
...@@ -168,9 +205,53 @@ ...@@ -168,9 +205,53 @@
this.page_size = e; this.page_size = e;
this.currentPage = 1; this.currentPage = 1;
this.getRcommendList(); this.getRcommendList();
},
//获取学历
getEduLevels() {
return new Promise(resolve => {
getAcademicQualifications().then(res => {
if(res.error == 0) {
this.education = res.data;
resolve();
}
})
}).catch(error => {
})
},
//获取工作经验
getWorkAges() {
return new Promise(resolve => {
getWorkExperience().then(res => {
if (res.error == 0) {
this.experience = res.data;
resolve();
}
})
}).catch(error => {
})
},
//获取薪资列表
getSalaryLevels() {
return new Promise(resolve => {
getSalaryExpectation().then(res => {
if(res.error == 0) {
this.salaryLevels = res.data;
resolve();
}
})
}).catch(error =>{
})
} }
}, },
mounted() { async mounted() {
await this.getEduLevels();
await this.getWorkAges();
await this.getSalaryLevels();
this.getRcommendList(); this.getRcommendList();
} }
} }
......
...@@ -53,7 +53,8 @@ ...@@ -53,7 +53,8 @@
</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'>{{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> <span class="txt_adjust">{{detailInfo.intention_salary_level_txt}}</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>
...@@ -124,8 +125,8 @@ ...@@ -124,8 +125,8 @@
</template> </template>
<script> <script>
import {resumeDetail,resumePass,resumeRefuse} from '@/api/resume' import {resumeDetail,resumePass,resumeRefuse,checkResumeDetail} from '@/api/resume'
import {getJobClassify,applyRefuseReasons} from '@/api/common' import {getJobClassify,applyRefuseReasons,getSalaryExpectation} from '@/api/common'
import { CodeToText, TextToCode,} from 'element-china-area-data'; import { CodeToText, TextToCode,} from 'element-china-area-data';
import {Loading} from 'element-ui'; import {Loading} from 'element-ui';
...@@ -141,7 +142,8 @@ ...@@ -141,7 +142,8 @@
isShowRefuseResume: false, isShowRefuseResume: false,
isShowPassResume: false, isShowPassResume: false,
refuse_reason: '', refuse_reason: '',
reasonList: [] reasonList: [],
salaryLevels: []
}; };
}, },
methods: { methods: {
...@@ -239,11 +241,13 @@ ...@@ -239,11 +241,13 @@
}); });
// this.$route.query.cv_token // this.$route.query.cv_token
let data={ let data={
utoken:this.$route.query.utoken, // utoken:this.$route.query.utoken,
cv_token:"CV1577948246894fzJFS", // cv_token:"CV1577948246894fzJFS",
mode:0 // mode:0,
apply_id: this.$route.query.apply_id,
cv_token_apply: this.$route.query.cv_token_apply
} }
resumeDetail(data).then(res=>{ checkResumeDetail(data).then(res=>{
loading.close(); loading.close();
if(res.error==0){ if(res.error==0){
let obj={ let obj={
...@@ -253,6 +257,11 @@ ...@@ -253,6 +257,11 @@
work_area:CodeToText[res.data.intention_area_id], work_area:CodeToText[res.data.intention_area_id],
job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job] job_name:this.jobList[res.data.intention_job.slice(0,6)+'00'][res.data.intention_job]
} }
this.salaryLevels.forEach(v=>{
if(v.level == obj.intention_salary_level) {
obj.intention_salary_level_txt = v.level_name;
}
})
let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000'] let a1=this.jobList[res.data.intention_job.slice(0,4)+'0000']
this.detailInfo=obj; this.detailInfo=obj;
} }
...@@ -273,10 +282,25 @@ ...@@ -273,10 +282,25 @@
}) })
}, },
//获取薪资列表
getSalaryLevels() {
return new Promise(resolve => {
getSalaryExpectation().then(res => {
if(res.error == 0) {
this.salaryLevels = res.data;
resolve();
}
})
}).catch(error =>{
})
}
}, },
async created() { async created() {
await this.getJobList(); await this.getJobList();
this.getResonList(); await this.getResonList();
await this.getResonList();
this.getDetail(); this.getDetail();
}, },
mounted() { mounted() {
......
...@@ -2,10 +2,7 @@ ...@@ -2,10 +2,7 @@
<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"> <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-form-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=""></el-option> <el-option label="全部" value=""></el-option>
<el-option label="刚投递" value="1"></el-option> <el-option label="刚投递" value="1"></el-option>
...@@ -14,11 +11,34 @@ ...@@ -14,11 +11,34 @@
<el-option label="已拒绝" value="4"></el-option> <el-option label="已拒绝" value="4"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="" prop="searchContent" class="order-item"> <el-form-item label="工作经验:" prop="searchContent" class="order-item">
<el-button type="primary" size="small" style="" @click="search">搜索</el-button> <el-select v-model="queryForm.work_level" placeholder="请选择" class="input-style" size="small">
<el-option v-for="item in experience" :key="item.level" :label="item.level_name" :value="item.level">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="fiter-col">
<el-form-item label="教育经历:" prop="searchContent" class="order-item">
<el-select v-model="queryForm.edu_level" placeholder="请选择" class="input-style" size="small">
<el-option v-for="item in education" :key="item.level" :label="item.level_name" :value="item.level">
</el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="薪资范围:" prop="searchContent" class="order-item">
<el-select v-model="queryForm.salary_level" placeholder="请选择" class="input-style" size="small">
<el-option v-for="item in salaryLevels" :key="item.level" :label="item.level_name" :value="item.level">
</el-option>
</el-select>
</el-form-item>
</div>
<div class="fiter-col" style="margin-bottom: 0">
<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">
<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">
...@@ -63,7 +83,7 @@ ...@@ -63,7 +83,7 @@
<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.cv_token_apply, scope.row.utoken)">查看简历</el-button> <el-button size="small" type="text" @click="checkResume(scope.row.cv_token_apply, scope.row.id)">查看简历</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>
...@@ -110,7 +130,7 @@ ...@@ -110,7 +130,7 @@
</template> </template>
<script> <script>
import {resumeList, resumePass, resumeRefuse} from "@/api/resume" import {resumeList, resumePass, resumeRefuse} from "@/api/resume"
import {applyRefuseReasons} from "@/api/common"; import {applyRefuseReasons,getAcademicQualifications, getWorkExperience,getSalaryExpectation} from "@/api/common";
import {CodeToText} from 'element-china-area-data'; import {CodeToText} from 'element-china-area-data';
export default { export default {
data() { data() {
...@@ -118,6 +138,9 @@ ...@@ -118,6 +138,9 @@
queryForm:{ queryForm:{
searchContent:'', searchContent:'',
status:'', status:'',
work_level: '',
edu_level: '',
salary_level: ''
}, },
list: [],//合伙人列表 list: [],//合伙人列表
currentPage: 1,//当前页 currentPage: 1,//当前页
...@@ -127,7 +150,10 @@ ...@@ -127,7 +150,10 @@
isShowRefuseResume: false, isShowRefuseResume: false,
refuse_reason: '', refuse_reason: '',
checked_id: '', checked_id: '',
reasonList: [] reasonList: [],
education: [],
experience: [],
salaryLevels: [],
} }
}, },
methods: { methods: {
...@@ -148,6 +174,9 @@ ...@@ -148,6 +174,9 @@
reset() { reset() {
this.queryForm.searchContent = ''; this.queryForm.searchContent = '';
this.queryForm.status = ''; this.queryForm.status = '';
this.queryForm.edu_level = '';
this.queryForm.work_level = '';
this.queryForm.salary_level = '';
this.getResumeList(); this.getResumeList();
}, },
//检索 //检索
...@@ -158,12 +187,12 @@ ...@@ -158,12 +187,12 @@
return 'header-class-title' return 'header-class-title'
}, },
checkResume(id,utoken) { checkResume(utoken,id) {
let routeUrl = this.$router.resolve({ let routeUrl = this.$router.resolve({
path: this.$route.path + "/detail/", path: this.$route.path + "/detail/",
query: { query: {
utoken: utoken, cv_token_apply: utoken,
cv_token: id apply_id: id
} }
}); });
window.open(routeUrl.href, '_blank'); window.open(routeUrl.href, '_blank');
...@@ -177,6 +206,7 @@ ...@@ -177,6 +206,7 @@
if(res.error == 0) { if(res.error == 0) {
this.$message.success('已通过成功!'); this.$message.success('已通过成功!');
this.isShowPassResume = false; this.isShowPassResume = false;
this.getResumeList();
} }
}) })
}, },
...@@ -198,6 +228,7 @@ ...@@ -198,6 +228,7 @@
if(res.error == 0) { if(res.error == 0) {
this.$message.success('已拒绝成功!'); this.$message.success('已拒绝成功!');
this.isShowRefuseResume = false; this.isShowRefuseResume = false;
this.getResumeList();
} }
}) })
}, },
...@@ -206,11 +237,20 @@ ...@@ -206,11 +237,20 @@
let data = { let data = {
page: this.currentPage, page: this.currentPage,
page_size: this.page_size, page_size: this.page_size,
apply_type: 'self' apply_type: 'self',
} }
if(this.queryForm.status) { if(this.queryForm.status) {
data.status = this.queryForm.status; data.status = this.queryForm.status;
} }
if(this.queryForm.edu_level) {
data.edu_level = this.queryForm.edu_level;
}
if(this.queryForm.work_level) {
data.work_level = this.queryForm.work_level;
}
if(this.queryForm.salary_level) {
data.salary_level = this.queryForm.salary_level;
}
resumeList(data).then(res => { resumeList(data).then(res => {
if(res.error == 0 && res.data && res.data.info) { if(res.error == 0 && res.data && res.data.info) {
this.list = res.data.info; this.list = res.data.info;
...@@ -236,9 +276,53 @@ ...@@ -236,9 +276,53 @@
this.page_size = e; this.page_size = e;
this.currentPage = 1; this.currentPage = 1;
this.getResumeList(); this.getResumeList();
},
//获取学历
getEduLevels() {
return new Promise(resolve => {
getAcademicQualifications().then(res => {
if(res.error == 0) {
this.education = res.data;
resolve();
}
})
}).catch(error => {
})
},
//获取工作经验
getWorkAges() {
return new Promise(resolve => {
getWorkExperience().then(res => {
if (res.error == 0) {
this.experience = res.data;
resolve();
}
})
}).catch(error => {
})
},
//获取薪资列表
getSalaryLevels() {
return new Promise(resolve => {
getSalaryExpectation().then(res => {
if(res.error == 0) {
this.salaryLevels = res.data;
resolve();
}
})
}).catch(error =>{
})
} }
}, },
mounted() { async mounted() {
await this.getEduLevels();
await this.getWorkAges();
await this.getSalaryLevels();
this.getResonList(); 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!