Commit 5e441533 authored by zhangderong's avatar zhangderong Committed by FE-安焕焕

简历详情页加发送邮件的等功能

parent 598f739e
...@@ -59,13 +59,13 @@ ...@@ -59,13 +59,13 @@
<span style="display:inline-block;height:100%;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px;" class='inputcheck'> <span style="display:inline-block;height:100%;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px;" class='inputcheck'>
<input type='checkbox' name='checkboxinput' class='input-checkbox' v-model='checkboxList' :value="item.id" @click="selectInputElement(i,item.id,item.flowStatus,item.STATES, item)" style="cursor:pointer"> <input type='checkbox' name='checkboxinput' class='input-checkbox' v-model='checkboxList' :value="item.id" @click="selectInputElement(i,item.id,item.flowStatus,item.STATES, item)" style="cursor:pointer">
</span> </span>
<span style="display:inline-block;height:100%;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)" >{{item.ownerName}} <span v-show="item.ownerMobile !==''">|</span></span> <span style="display:inline-block;height:100%;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)" >{{item.ownerName}} <span v-show="item.ownerMobile !==''">|</span></span>
<span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerMobile}} <span v-show="item.ownerAge !==''">|</span></span> <span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerMobile}} <span v-show="item.ownerAge !==''">|</span></span>
<span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerAge}}<span v-show="item.ownerSex !==''">|</span></span> <span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerAge}}<span v-show="item.ownerSex !==''">|</span></span>
<span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerSex}} <span v-show="item.ownerWorkYears !==''">|</span> </span> <span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerSex}} <span v-show="item.ownerWorkYears !==''">|</span> </span>
<span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerWorkYears}}<span v-show="item.ownerExpectTitles !==''">|</span></span> <span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerWorkYears}}<span v-show="item.ownerExpectTitles !==''">|</span></span>
<span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerHighestDegree}} <span v-show="item.ownerExpectTitles !==''">|</span></span> <span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerHighestDegree}} <span v-show="item.ownerExpectTitles !==''">|</span></span>
<span style="display:inline-block;height:100%;margin-top:5px;font-size:12px;width:25%;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerExpectTitles}}</span> <span style="display:inline-block;height:100%;margin-top:5px;font-size:12px;width:25%;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerExpectTitles}}</span>
<span style="display:inline-block;height:100%;font-size: 12px;width:25%;float:right;text-align:right;margin-right:10px;margin-top:5px"> <span style="display:inline-block;height:100%;font-size: 12px;width:25%;float:right;text-align:right;margin-right:10px;margin-top:5px">
<span style="margin-right:20px;margin-top:5px" v-if="item.flowStatus=='INTERVIEW_OK'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">面试合适</span></span> <span style="margin-right:20px;margin-top:5px" v-if="item.flowStatus=='INTERVIEW_OK'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">面试合适</span></span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span> <span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span>
...@@ -508,6 +508,7 @@ import {mapState} from 'vuex' ...@@ -508,6 +508,7 @@ import {mapState} from 'vuex'
UpdateVIEW:'', UpdateVIEW:'',
sendWeixin: true sendWeixin: true
}, },
resumeDetailSta:'',
emailInline:{ emailInline:{
moo:'', moo:'',
modalArr:[], modalArr:[],
...@@ -1151,13 +1152,15 @@ import {mapState} from 'vuex' ...@@ -1151,13 +1152,15 @@ import {mapState} from 'vuex'
} }
}, },
//查看简历详情 //查看简历详情
Seedetail(Tid,Uid){ Seedetail(Tid,Uid,STATUS){
console.log(STATUS,4444444)
this.DOWNID=Uid this.DOWNID=Uid
this.detailID=Tid this.detailID=Tid
this.resumeDetailSta=STATUS
let newpage = this.$router.resolve({ let newpage = this.$router.resolve({
name: 'resumeDetail', name: 'resumeDetail',
params:{}, params:{},
query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID} query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID,status:this.resumeDetailSta}
}) })
window.open(newpage.href, '_blank'); window.open(newpage.href, '_blank');
}, },
......
...@@ -56,13 +56,13 @@ ...@@ -56,13 +56,13 @@
<p class="massage" style="margin-left:10px;"> <p class="massage" style="margin-left:10px;">
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px" class='inputcheck'> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px" class='inputcheck'>
<input type='checkbox' name='checkboxinput' style="cursor:pointer" class='input-checkbox' v-model='checkboxList' :value="item.id" @click="selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"></span> <input type='checkbox' name='checkboxinput' style="cursor:pointer" class='input-checkbox' v-model='checkboxList' :value="item.id" @click="selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"></span>
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)">{{item.ownerName}} |</span> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)">{{item.ownerName}} |</span>
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerMobile}} |</span> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerMobile}} |</span>
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerAge}}岁 |</span> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerAge}}岁 |</span>
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerSex||'&nbsp;'}} |</span> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerSex||'&nbsp;'}} |</span>
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerWorkYears}}年 |</span> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerWorkYears}}年 |</span>
<span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerHighestDegree||'&nbsp;'}} <span v-show="item.ownerExpectTitles !==''">|</span></span> <span style="display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerHighestDegree||'&nbsp;'}} <span v-show="item.ownerExpectTitles !==''">|</span></span>
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;width:25%;cursor:pointer" @click="Seedetail(item.id,item.uid)"> {{item.ownerExpectTitles}}</span> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;width:25%;cursor:pointer" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerExpectTitles}}</span>
<span style="display:inline-block;height:100%;font-size: 12px;float:right;text-align:right;margin-right:10px;width:25%;line-height:100%;margin-top:5px;"> <span style="display:inline-block;height:100%;font-size: 12px;float:right;text-align:right;margin-right:10px;width:25%;line-height:100%;margin-top:5px;">
<span style="margin-right:30px;margin-top:5px;" v-if="item.flowStatus=='INTERVIEW_OK'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">面试合适</span></span> <span style="margin-right:30px;margin-top:5px;" v-if="item.flowStatus=='INTERVIEW_OK'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">面试合适</span></span>
<span style="margin-right:30px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span> <span style="margin-right:30px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span>
...@@ -564,6 +564,7 @@ export default { ...@@ -564,6 +564,7 @@ export default {
a:'', a:'',
id:'', id:'',
pageT:'', pageT:'',
resumeDetailSta:'',
modal1:false, modal1:false,
modal2:false, modal2:false,
modal3:false, modal3:false,
...@@ -914,13 +915,14 @@ export default { ...@@ -914,13 +915,14 @@ export default {
} }
}, },
// 查看简历详情 // 查看简历详情
Seedetail(Tid,Uid){ Seedetail(Tid,Uid,STATUS){
this.detailID=Tid this.detailID=Tid
this.DOWNID=Uid this.DOWNID=Uid
this.resumeDetailSta=STATUS
let newpage = this.$router.resolve({ let newpage = this.$router.resolve({
name: 'resumeDetail', name: 'resumeDetail',
params:{}, params:{},
query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID} query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID,status:this.resumeDetailSta}
}) })
window.open(newpage.href, '_blank'); window.open(newpage.href, '_blank');
}, },
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<img src="https://o7oe0d6qz.qnssl.com/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"> <img src="https://o7oe0d6qz.qnssl.com/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px">
</span> </span>
<span style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span> <span style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span>
<span style="float:right;width:50px;height:24px;margin-right:5px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <!-- <span style="float:right;width:50px;height:24px;margin-right:5px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> -->
</p> </p>
<div class="massageTitle"> <div class="massageTitle">
<p> <p>
...@@ -135,22 +135,155 @@ ...@@ -135,22 +135,155 @@
</div> </div>
</div> </div>
</div> </div>
<div class="resumeDetail-right"> <div class="resumeDetail-right" v-show="boxIsShow">
<span style="float:right;width:50px;height:24px;margin-right:25px;margin-top:30px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <div class="testResume">
<span style="float:right;width:50px;height:24px;margin-right:25px;margin-top:30px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <Button type="primary" size='small' style="width:150px;height:34px;margin:0 0 0 15px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</Button><br>
<span style="float:right;width:50px;height:24px;margin-right:25px;margin-top:30px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px" @click="transpond" v-show="this.showBtn!=1">转发给面试官</Button><br>
<span style="float:right;width:50px;height:24px;margin-right:25px;margin-top:30px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <p style="margin-top:40px;font-size:16px">当前简历状态:<span style="color:#0092FF" >{{detailStatus[detailSta]}}</span></p>
<span style="float:right;width:50px;height:24px;margin-right:25px;margin-top:30px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px" @click="sendEmail" v-show="hasINterview==false">邀请面试</Button><br>
<span style="float:right;width:50px;height:24px;margin-right:25px;margin-top:30px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">&nbsp;&nbsp;</Button><br>
<Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">PASS</Button><br>
<Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</Button><br>
</div>
</div> </div>
<Modal
v-model="emailMOdal"
width='1000px'
:mask-closable='false'
:closable='false'
:styles="{top:'50px'}">
<div >
<!-- <h2 style="text-align:center;color:black" v-show="this.isShowAll==false">发送邮件</h2> -->
<h2 style="text-align:center;color:black" >新建面试</h2>
<h3 style="text-align:center;color:black" > <span>新建面试后,你需要从<span style="color:#0092ff">“面试管理”</span>中对该候选人进行后续的操作。</span></h3>
</div>
<div class="emailModal-title">
<div class="emailModalTitle-left">
<p>
<Form :label-width="70" :model="emailInline" label-position="left" style="margin-left:5%" ref="emailInline" :rules="emailruleInline" class="emailForm">
<FormItem label="选择模板" style="margin-top:20px" prop='moo'>
<Select style="width:95%" @on-change='getEmailContentValue' v-model="emailInline.moo" >
<Option v-for="(item,index) in emailInline.modalArr" :key="index" :value="item.templateCode">{{item.templateName}}</Option>
</Select><br>
<!-- <span v-show="emailMassage==true">你尚未选择简历,请先选择简历</span> -->
</FormItem>
<FormItem label="收件人" style="margin-top:20px" prop='receiveEmail'>
<Input style="width:95%" v-model="emailInline.receiveEmail" @on-focus='getfocus("emailInline","receiveEmail")'/>
<span style="position: absolute;left:0;top:30px;color:gray;font-size:12px;" v-show='!tip'>{{tipInfo}}</span>
</FormItem>
<FormItem label="抄送" style="margin-top:20px" prop='copyname'>
<Input style="width:95%" v-model="emailInline.copyname" @on-focus='getfocus("emailInline","copyname")'/>
</FormItem>
<FormItem label="主题" style="margin-top:20px" prop='theme'>
<Input style="width:95%" v-model="emailInline.theme" @on-focus='getfocus("emailInline","theme")'/>
</FormItem>
</Form>
</p>
</div>
<div class="emailModalTitle-right">
<h3 style="text-align:center;margin-top:20px">请输入约面信息</h3>
<Form :label-width="80" ref="formInline" :rules="ruleInline" :model="formInline" style="margin-top:35px" label-position="left" class="emailForm">
<FormItem label="邀约人" style="margin-top:20px" prop="UpdateOWER">
<Input v-model="formInline.UpdateOWER" style="width:100%" :maxlength="5" @on-focus='getfocus("formInline", "UpdateOWER")'/>
</FormItem>
<FormItem label="面试时间" style="margin-top:20px" prop="UpdateTIME">
<DatePicker type="datetime" style="width:100%" v-model="formInline.UpdateTIME" format="yyyy-MM-dd HH:mm" @on-change="changeTime" :options="options3" :editable='false' @on-open-change='getfocus("formInline", "UpdateTIME", $event)'></DatePicker>
</FormItem>
<FormItem label="面试官" style="margin-top:20px" prop='UpdateVIEW'>
<Select v-model ='formInline.UpdateVIEW' filterable style='width:100%;' remote
:remote-method="remoteMethod"
:loading="loading1" placeholder='请输入面试官全名' clearable @on-open-change='getfocus("formInline", "UpdateVIEW", $event)' ref='setQuery' :label='formInline.UpdateVIEW'>
<Option v-for='(item, index) in options' :key='index' :value='item.name'>{{item.name}}({{item.email}})</Option>
</Select>
</FormItem>
</Form>
</div>
</div>
<div class="ckeditor">
<ckeditor :value='editorObject' ref='editor' :uploadUrl='uploadurl' height='300px' width='100%' style="margin-left:3%"></ckeditor>
</div>
<div class="uploadEnclosure">
<p style="height:50px;">
<span style="font-size:16px;display:inline-block;margin:20px 0 0 3%">添加附件</span>
<span style="margin-left:500px">
<Upload
multiple
:before-upload='beforUpload'
action="//jsonplaceholder.typicode.com/posts/">
<Button size='small' style="margin:-40px 0 0 95px" type="primary" @click="uploadFile">选择文件</Button>
</Upload>
</span>
</p>
<p v-for="(item,index) in fileList" :key="index" style="height:30px;line-height:30px">
<span style="margin-left:60px">{{item}}</span>
<span><Icon type="md-close" @click="delateFile(index)" style="font-size:16px;float:right;margin-right:80px" /></span>
</p>
</div>
<div slot='footer' style="text-align:center;position:relative;" class="Ubt">
<Button type='primary' @click='emailModalPush'>取消</Button>
<Button type='primary' @click='submit'>发送</Button>
<!-- <Button type='primary' @click='submit' v-show="this.isShowAll==true">添加并发送</Button> -->
<Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox>
</div>
</Modal>
<Modal
v-model="modal8"
width='400'
:closable='false'>
<div style='min-height:300px;'>
<div class='title'>
<h2>转发给面试官</h2>
<p class='hint'>该通知将以微信形式发送给面试官,面试官可通过微信筛选简历</p>
</div>
<Form ref="transpondFrom" :model="transpondFrom" :rules="transpondRule">
<FormItem label='面试官' prop='interviewerName'>
<Select v-model ='transpondFrom.interviewerName' filterable style='width:250px;' remote
:remote-method="remoteMethod"
:loading="loading1" placeholder='请输入面试官全名' clearable>
<Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option>
</Select>
</FormItem>
<FormItem label='' prop='interviewee'>
<div class='interviewee'>
<div class='pic'>
<Icon type="ios-close" size='25' style='color:red' @click='delInterviewee(name)' class="icon"/>
<img src='https://o7oe0d6qz.qnssl.com/resume.png'></img>
</div>
<span style='' class="name">{{name}}</span>
</div>
</FormItem>
</Form>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal8=false'>取消</Button>
<Button type='primary' @click="sendNotice" >发送</Button>
</div>
</Modal>
<Modal
v-model="modal10"
width='280px'
:closable='false'>
<div >
<h2 style="text-align: center;color:black">提示</h2>
<p style="text-align:center">确定要发送邮件吗?</p>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal10=false'>取消</Button>
<Button type='primary' @click="confireSendEmail">确定</Button>
</div>
</Modal>
</div> </div>
</template> </template>
<script> <script>
import {seedetail} from '../../api/resume.server' import moment from 'moment'
import {seedetail,updatastatus,TODORes,sendEmail,getEmailMoo,getEmailContent,uploadimage, findCompanyEmailByKey,forwardResume} from '../../api/resume.server'
import localStorage from '../../service/localstorage.service.js' import localStorage from '../../service/localstorage.service.js'
import { import {
sapi sapi
}from '../../config' }from '../../config'
import ckeditor from '../../components/ckeditor'
import{_debounce,_throttle,emailValidata, emailRule, vidte, validator} from '../../service/util.js'
export default { export default {
data(){ data(){
return { return {
...@@ -159,56 +292,517 @@ export default { ...@@ -159,56 +292,517 @@ export default {
roList:[], roList:[],
rpList:[], rpList:[],
reList:[], reList:[],
name:'',
detailSta:'',
emailMOdal:false,
tip: false,
loading1: false,
modal8:false,
modal10:false,
boxIsShow:false,
interviewee: [],
a:{'a_b':'hjbjhbjbh','b':'4'},
detailStatus:{'TO_DO':'待处理','INTERVIEW_OK':'面试合适','INTERVIEW_FAIL':'面试淘汰','END':'终止面试','SEE_FAIL':'约面失败','NO_ENTRY':'未入职',
'TO_SEE':'准备约面','END':'终止面试','SEE_FAIL':'约面失败','NO_ENTRY':'未入职','HAS_SEE':'已邀约','OPTION':'备选','TO_SENT_OFFER':'待Offer','HAS_SENT_OFFER':'已发offer',
'TO_ENTRY':'待入职', 'HAS_ENTRY':'已入职', 'PASS':'PASS', 'RESET':'重启面试','ARRIVED':'已到达'},
// detailStatus:[{sta:'TO_DO',detailSta:'待处理'},{sta:'INTERVIEW_OK',detailSta:'面试合适'},{sta:'INTERVIEW_FAIL',detailSta:'面试淘汰'},
// {sta:'END',detailSta:'终止面试'},{sta:'SEE_FAIL',detailSta:'约面失败'},{sta:'NO_ENTRY',detailSta:'未入职'},{sta:'TO_SEE',detailSta:'准备约面'},
// {sta:'HAS_SEE',detailSta:'已邀约'},{sta:'OPTION',detailSta:'备选'},{sta:'TO_SENT_OFFER',detailSta:'待Offer'},{sta:'HAS_SENT_OFFER',detailSta:'已发offer'},{sta:'TO_ENTRY',detailSta:'待入职'},
// {sta:'HAS_ENTRY',detailSta:'已入职'},{sta:'PASS',detailSta:'PASS'},{sta:'RESET',detailSta:'重启面试'},{sta:'ARRIVED',detailSta:'已到达'}],
emailId:'',
transpondFrom: {
interviewerName: ''
},
transpondRule: {
interviewerName: [{required: true, trigger: 'blur', validator: validator.bind(this)}]
},
options: [],
editorObject: {type: '', value: ''},
tipInfo: '输入多个邮箱地址以英文”;“分隔',
fileList:[],
UpdateTIMETwo:'',
uploadFileList:[],
temp:'',
uploadurl:`${sapi}/api/ckeditor/uploadImage?token=${localStorage.get('token')}&&backUrl=/getimage`,
downresume:'', downresume:'',
detialID:'', detialID:'',
showBtn:'', showBtn:'',
isShowAll:false,
isShowTwo:false,
interviewIsShow:false,
hasINterview:false,
resumeIdList:[],
options3: {
disabledDate (date) {
return date && date.valueOf() <Date.now()-3600*24*1000;
}
},
ruleInline: {
UpdateOWER: [
{ required: true, message: '邀约人不能为空', trigger: 'blur',validator: emailValidata.bind(this)}
],
UpdateTIME: [
{ required: true, message: '面试时间不能为空', trigger: 'change', type:'date', validator: emailValidata.bind(this)}
],
UpdateVIEW: [
{ required: true,message: '面试官不能为空', trigger: 'change', validator: emailValidata.bind(this), type: String}
]
},
emailruleInline: {
receiveEmail: [{required: true, trigger: 'blur', pattern: emailRule, validator: emailValidata.bind(this)}],
theme: [{required: true, trigger: 'blur',message: '主题不能为空', validator: emailValidata.bind(this)}],
copyname: [{required: false, trigger: 'blur', pattern: emailRule, validator: emailValidata.bind(this), empty: true}]
},
formInline:{
UpdateOWER:'',
UpdateTIME:'',
UpdateVIEW:'',
sendWeixin: true
},
emailInline:{
moo:'',
modalArr:[],
copyname:'',
receiveEmail:'',//收件人
theme:'',//主题
Enclosure:[],//附件
templateContent:'',//模板内容
},
} }
},
components:{
ckeditor
}, },
methods: { methods: {
getDETAIL(){ getDETAIL(){
this.detialID=this.$route.query.ID this.detialID=this.$route.query.ID
this.showBtn=this.$route.query.noShowBtn this.resumeIdList.push(this.$route.query.ID)
let token = this.$route.query.token || '' this.emailId=this.$route.query.ID
let parmars={ this.detailSta=this.$route.query.status
uid:this.$route.query.id this.showBtn=this.$route.query.noShowBtn
let token = this.$route.query.token || ''
let parmars={
uid:this.$route.query.id
}
seedetail(parmars).then(res=>{
this.resume=res.data.body.resume
this.riList=res.data.body.riList
this.roList=res.data.body.roList
this.rpList=res.data.body.rpList
this.reList=res.data.body.reList
this.name=res.data.body.resume.ownerName
})
},
// 下载简历
downloadONE(doid){
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${doid}`
},
// 发送邮件
sendEmail(type){
this.emailInline.modalArr=[]
this.$refs.emailInline.resetFields()
this.$refs.formInline.resetFields()
this.emailInline.moo = 'TEMP_0001'
this.options=[]
this.emailMOdal=true
getEmailMoo().then(res=>{
this.emailInline.modalArr=res.data.body
})
this.getEmailContentValue(this.emailInline.moo)
},
getEmailContentValue(value){
if (!value){
return
}
this.isDisable=true
this.temp=value
this.emailCode=value
let params={
resumeId:this.emailId==''?'':this.emailId,
templateCode:this.emailCode
}
getEmailContent(params).then(res=>{
this.emailInline.theme=res.data.body.templateSubject
this.emailInline.receiveEmail=res.data.body.receiveEmail
this.emailInline.templateContent=res.data.body.templateContent
this.editorObject = {
type: value,
value: this.emailInline.templateContent || ''
}
if(res.data.body&&res.data.body.resumeInterviewVO){
this.formInline.UpdateOWER=res.data.body.resumeInterviewVO.inviterName
this.formInline.UpdateVIEW=res.data.body.resumeInterviewVO.interviewerName
this.formInline.UpdateTIME=res.data.body.resumeInterviewVO.seeTime
this.changeTime(this.formInline.UpdateTIME)
}else{
this.formInline.UpdateOWER=''
this.formInline.UpdateVIEW=''
this.formInline.UpdateTIME=''
} }
seedetail(parmars).then(res=>{
this.resume=res.data.body.resume })
this.riList=res.data.body.riList },
this.roList=res.data.body.roList getfocus(form, name, e){
this.rpList=res.data.body.rpList let vm = this;
this.reList=res.data.body.reList let value = this[form][name]
if(name == 'receiveEmail') {
this.tip&&this.$refs[form].fields.forEach(function (e) {
if (e.prop == name) {
e.resetField()
vm[form][name] = value
vm.tip = false
}
})
} else {
if (name=='UpdateTIME'&&e==false){ // 时间选择器关闭弹框的时候
this.$refs.formInline.validateField('UpdateTIME', (e) => {})
return
}
if (name=='UpdateVIEW'&&e==false){ // 选择关闭弹框的时候
this.$refs.formInline.validateField('UpdateVIEW', (e) => {
})
return
}
this.$refs[form].fields.forEach(function (e) {
if (e.prop == name) {
e.resetField()
vm[form][name] = value
}
})
}
},
changeTime(b){
this.UpdateTIME=b
if (!b){
this.editorObject = {
type: this.temp,
value: this.emailInline.templateContent
}
this.isDisable = false
return
} else {
this.isDisable = true
}
var reg = /<span id="email_seeTime"><span>/g
var time = b.split('-')
var year = time[0]
var mon = time[1]
var day = time[2].split(' ')[0]
var time = time[2].split(' ')[1]
var content = `<span id="email_seeTime">${year}${mon}${day}${time}<span>`
this.editorObject = {
type: this.temp,
value: this.emailInline.templateContent.replace(reg, content)
}
},
remoteMethod: async function(query){
if (query !== '') {
this.loading1 = true;
setTimeout(async () => {
this.loading1 = false;
query = query.split('(')[0]
let list = await findCompanyEmailByKey(query)
this.options = list.data.body
}, 200);
} else {
this.options = [];
}
},
beforUpload(uploadFile){
let isLiment=false
if(uploadFile.size/1024 > 10240){
isLiment=true
this.limentName+=1
if(this.limentName==1){
this.$Notice.error({
title: '提示',
desc: '单个文件不能大于10M'
}) })
}
}else{
this.fileList.push(uploadFile.name)
this.uploadFileList.push(uploadFile)
}
return false
}, },
// 下载简历 uploadFile(){
downloadONE(doid){ this.limentName=0
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${doid}` },
emailModalPush(){
this.$refs.emailInline.resetFields()
this.$refs.formInline.resetFields()
this.emailInline.modalArr=[]
this.emailInline.theme=''
this.emailInline.receiveEmail=''
this.emailInline.templateContent=''
this.sad=''
this.fileList=[]
this.emailInline.moo=''
this.emailMOdal=false
this.emailMassage=false
this.emailIdArr=[]
this.emailFlowStatus=''
this.formInline.UpdateOWER=''
this.formInline.UpdateVIEW=''
this.formInline.UpdateTIME=''
this.formInline.sendWeixin=true
this.emailInline.copyname=''
this.isShowTwo=false
this.isLimitSize=false
this.uploadFileList=[]
// this.clearInterviewee()
// this.SouSuo(this.pageT,'init')
},
submit() {
let flag = false
this.$refs.emailInline.validate(val => {
if (!val) {
flag = true
return
}
})
this.$refs.formInline.validate(val => {
if (!val) {
flag = true
return
}
})
if (!flag){
this.modal10=true
}
}, },
a(){ clearInterviewee (value) {
this.interviewee = []
this.checkboxList = []
this.delateARRALL = []
this.flowStatusarr = []
// this.ajaxData.map(item => {
// item.STATES = false
// })
},
sendNotice() {
this.$refs.transpondFrom.validate(valid => {
if(!this.transpondFrom.interviewerName){
return
}
// if (this.interviewee.length < 1) {
// this.$Notice.warning({title: '提示',desc: '发送内容为空,请勾选您要发送的简历'})
// return
// }
// let resumeIdList = []
// this.interviewee.map(item => {
// resumeIdList.push(item.id)
// })
let params = {
resumeIdList:this.resumeIdList,
email: this.transpondFrom.interviewerName
}
forwardResume(params).then(res => {
if (res.data.success == true) {
this.clearInterviewee()
this.modal8 = false
setTimeout(() => {
this.$Notice.success({
title: '提示',
desc: '发送成功'
})
}, 300)
} else{
this.errorCode=res.data.body.code
this.modal8=false
this.clearInterviewee()
if(this.errorCode=='40001'){
this.modal12=true
}
if(this.errorCode=='40002'){
this.modal13=true
}
}
})
})
},
transpond() { //打开转发简历的modal
this.$refs.transpondFrom.resetFields()
this.modal8= true
},
delInterviewee(name){
this.name=''
},
// 确认发送邮件
confireSendEmail(){
this.sad = this.getEditorValue()
if(this.sad==''){
this.$Notice.error({
title: '提示',
desc: '请填写完整的信息'
});
return
}
if(this.emailInline.moo==''){
this.$Notice.error({
title: '提示',
desc: '请填写完整的信息'
});
return
}
if((this.temp=='TEMP_0001')&&(this.emailInline.moo==''||this.emailInline.receiveEmail==''||this.emailInline.theme==''||this.formInline.UpdateOWER==''||this.formInline.UpdateVIEW==''||this.formInline.UpdateTIME=='')){
this.$Notice.error({
title: '提示',
desc: '请填写完整的信息'
});
return
}
if(this.emailInline.copyname!==''&&!(/^((([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})))$/.test(this.emailInline.copyname))){
this.$Notice.error({
title: '提示',
desc: '请正确填写邮箱地址'
});
return
}
if(!(/^((([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})))$/.test(this.emailInline.receiveEmail))){
this.$Notice.error({
title: '提示',
desc: '请正确填写邮箱地址'
});
return
}
this.attachFileList=this.uploadFileList.length==0?'':this.uploadFileList
this.flowStatusTT=this.emailFlowStatus==''?'':'TO_SEE'
this.UpdateTIMETwo=this.formInline.UpdateTIME==''?'':this.formInline.UpdateTIME
if(this.temp=='TEMP_0001'){
var formData= new FormData()
if(this.attachFileList.length!==0){
this.attachFileList.map(item=>{
formData.append('attachFileList',item)
})
}else{
formData.append('attachFileList','')
}
formData.append('resumeId',this.emailId)
formData.append('templateCode',this.emailCode)
formData.append('subject',this.emailInline.theme)
formData.append('toEmail',this.emailInline.receiveEmail)
formData.append('ccEmail',this.emailInline.copyname)
formData.append('emailContent',this.sad)
formData.append('resumeInterviewVO.resumeId',this.emailId)
formData.append('resumeInterviewVO.inviterName',this.formInline.UpdateOWER==''?'':this.formInline.UpdateOWER)
formData.append('resumeInterviewVO.interviewerName',this.formInline.UpdateVIEW==''?'':this.formInline.UpdateVIEW)
let info = this.options.find(item => item.name == this.formInline.UpdateVIEW)
formData.append('resumeInterviewVO.email',(info&&info.email) || '')
formData.append('sendWeixin',this.formInline.sendWeixin==true ? 1 : 0)
formData.append('resumeInterviewVO.seeTime',moment( this.UpdateTIMETwo).format('YYYY/MM/DD HH:mm'))
formData.append(' flowStatus',this.flowStatusTT)
this.isDisable=false
sendEmail(formData).then(res=>{
this.isDisable=true
if(res.data.success==true){
setTimeout(() => {
this.$Notice.success({
title: '提示',
desc: '发送邮件成功'
})
}, 500)
this.emailMOdal=false
this.modal10=false
this.emailInline.modalArr=[]
this.emailInline.theme=''
this.emailInline.receiveEmail=''
this.emailInline.templateContent=''
this.sad=''
this.fileList=[]
this.emailInline.moo=''
this.emailMOdal=false
this.emailMassage=false
this.emailIdArr=[]
this.emailFlowStatus=''
this.formInline.UpdateOWER=''
this.formInline.UpdateVIEW=''
this.formInline.UpdateTIME=''
this.formInline.sendWeixin=true
this.emailInline.copyname=''
this.isShowTwo=false
this.uploadFileList=[]
this.clearInterviewee()
}
if(res.data.success==false){
this.modal10 = false
this.modal11 = true
this.errorInfo = res.data.body.message
}
})
}
},
getEditorValue(value){ // 调编辑器组件方法获取数据
return this.$refs.editor.getValue()
},
// 判断按钮的显示与隐藏
judeBtn(){
if(this.detailSta == 'TO_DO'|| this.detailSta == 'PASS' || this.detailSta == 'OPTION'){
this.hasINterview=false
}else{
this.hasINterview=true
}
} }
}, },
mounted(){ mounted(){
this.getDETAIL() this.getDETAIL()
this.boxIsShow=true
this.judeBtn()
} }
} }
</script> </script>
<style scoped> <style scoped>
.resumeDetail{ .resumeDetail{
width: 1000px; width: 1100px;
margin: 30px auto; margin: 30px auto;
color: #000000; color: #000000;
font-family: "\5FAE\8F6F\96C5\9ED1"; font-family: "\5FAE\8F6F\96C5\9ED1";
} }
.resumeDetail-left{ .resumeDetail-left{
float: left; float: left;
width:860px width:860px;
min-height: 1000px
/* border: 1px solid #999 */
}
.pic img{
width: 100px;
height: 100px
}
.pic .icon{
position: relative;
left:100px;
top:-90px
}
.interviewee .name{
position: relative;
left: 58px;
top:-25px;
display: inline-block;
/* margin-left: 200px */
} }
.resumeDetail-right{ .resumeDetail-right{
float: left; float: left;
width: 120px; width: 200px;
height: 8000px }
.wechat{
float: right;
margin-top: 10px
} }
.emailModal-title{
height: 280px;
width: 100%;
}
.emailModalTitle-left{
height: 100%;
width: 60%;
float: left;
}
.emailModalTitle-right{
height: 100%;
width: 40%;
float: left;
}
.personalInformation{ .personalInformation{
width:860px; width:860px;
/* height: 600px; */ /* height: 600px; */
...@@ -228,7 +822,15 @@ export default { ...@@ -228,7 +822,15 @@ export default {
float: left; float: left;
font-size: 14px; font-size: 14px;
margin-top:20px; margin-top:20px;
margin-left:20px margin-left:20px;
}
.testResume{
position: fixed;
/* float: left; */
top: 280px;
width: 180px;
/* border: 1px solid black; */
margin-left: 20px
} }
/* .test{ /* .test{
position: relative; position: relative;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment