Commit a3ec3285 authored by FE-安焕焕's avatar FE-安焕焕 👣

Merge branch 'copytest' into 'master'

Copytest

See merge request !7
parents 9ec6bf64 8107b053
......@@ -309,7 +309,6 @@
"version": "1.0.10",
"resolved": "http://npmprivate.quantgroups.com/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
......@@ -3248,6 +3247,21 @@
"domelementtype": "1"
}
},
"duck": {
"version": "0.1.11",
"resolved": "http://npmprivate.quantgroups.com/duck/-/duck-0.1.11.tgz",
"integrity": "sha1-OtwaPS+91Yef/TvaBc4PaTVekJM=",
"requires": {
"underscore": "~1.4.4"
},
"dependencies": {
"underscore": {
"version": "1.4.4",
"resolved": "http://npmprivate.quantgroups.com/underscore/-/underscore-1.4.4.tgz",
"integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
}
}
},
"duplexer": {
"version": "0.1.1",
"resolved": "http://npmprivate.quantgroups.com/duplexer/-/duplexer-0.1.1.tgz",
......@@ -6055,6 +6069,21 @@
"verror": "1.10.0"
}
},
"jszip": {
"version": "2.5.0",
"resolved": "http://npmprivate.quantgroups.com/jszip/-/jszip-2.5.0.tgz",
"integrity": "sha1-dET9hVHd8+XacZj+oMkbyDCMwnQ=",
"requires": {
"pako": "~0.2.5"
},
"dependencies": {
"pako": {
"version": "0.2.9",
"resolved": "http://npmprivate.quantgroups.com/pako/-/pako-0.2.9.tgz",
"integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU="
}
}
},
"killable": {
"version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/killable/-/killable-1.0.1.tgz",
......@@ -6352,6 +6381,23 @@
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
"lop": {
"version": "0.4.0",
"resolved": "http://npmprivate.quantgroups.com/lop/-/lop-0.4.0.tgz",
"integrity": "sha1-Tw5DhNXE9FXQuG0lT9UqnQVZPCw=",
"requires": {
"duck": "~0.1.11",
"option": "~0.2.1",
"underscore": "~1.4.4"
},
"dependencies": {
"underscore": {
"version": "1.4.4",
"resolved": "http://npmprivate.quantgroups.com/underscore/-/underscore-1.4.4.tgz",
"integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
}
}
},
"loud-rejection": {
"version": "1.6.0",
"resolved": "http://npmprivate.quantgroups.com/loud-rejection/-/loud-rejection-1.6.0.tgz",
......@@ -6387,6 +6433,33 @@
"pify": "^3.0.0"
}
},
"mammoth": {
"version": "1.4.8",
"resolved": "http://npmprivate.quantgroups.com/mammoth/-/mammoth-1.4.8.tgz",
"integrity": "sha512-NacMivDBGIDyMOUdh4M3faInP8qXg+NhlZDGf3k3X3oo2IJGizQ4pwqYuWGbRk7YGpTIyz9ushl45a0GePqYSw==",
"requires": {
"argparse": "~1.0.3",
"bluebird": "~3.4.0",
"jszip": "~2.5.0",
"lop": "~0.4.0",
"path-is-absolute": "^1.0.0",
"sax": "~1.1.1",
"underscore": "~1.8.3",
"xmlbuilder": "^10.0.0"
},
"dependencies": {
"bluebird": {
"version": "3.4.7",
"resolved": "http://npmprivate.quantgroups.com/bluebird/-/bluebird-3.4.7.tgz",
"integrity": "sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM="
},
"sax": {
"version": "1.1.6",
"resolved": "http://npmprivate.quantgroups.com/sax/-/sax-1.1.6.tgz",
"integrity": "sha1-XWFr6KXmB9VOEUr65Vt+ry/MMkA="
}
}
},
"map-cache": {
"version": "0.2.2",
"resolved": "http://npmprivate.quantgroups.com/map-cache/-/map-cache-0.2.2.tgz",
......@@ -7452,6 +7525,11 @@
}
}
},
"option": {
"version": "0.2.4",
"resolved": "http://npmprivate.quantgroups.com/option/-/option-0.2.4.tgz",
"integrity": "sha1-/Udc35jcq7PLOXo7pShP60Xtv+Q="
},
"optionator": {
"version": "0.8.2",
"resolved": "http://npmprivate.quantgroups.com/optionator/-/optionator-0.8.2.tgz",
......@@ -7634,8 +7712,7 @@
"path-is-absolute": {
"version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
"dev": true
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-is-inside": {
"version": "1.0.2",
......@@ -9555,8 +9632,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "http://npmprivate.quantgroups.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"sshpk": {
"version": "1.16.1",
......@@ -10060,6 +10136,11 @@
"integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
"dev": true
},
"underscore": {
"version": "1.8.3",
"resolved": "http://npmprivate.quantgroups.com/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
},
"union-value": {
"version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/union-value/-/union-value-1.0.1.tgz",
......@@ -11032,6 +11113,11 @@
"safe-buffer": "~5.1.0"
}
},
"xmlbuilder": {
"version": "10.1.1",
"resolved": "http://npmprivate.quantgroups.com/xmlbuilder/-/xmlbuilder-10.1.1.tgz",
"integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg=="
},
"xtend": {
"version": "4.0.1",
"resolved": "http://npmprivate.quantgroups.com/xtend/-/xtend-4.0.1.tgz",
......
......@@ -17,6 +17,7 @@
"js-cookie": "^2.2.0",
"less": "^3.9.0",
"less-loader": "^5.0.0",
"mammoth": "^1.4.8",
"moment": "^2.24.0",
"qs": "^6.7.0",
"vue": "^2.5.2",
......
......@@ -47,6 +47,8 @@ export default {
-moz-user-select: text !important; /*火狐*/
-ms-user-select: text !important; /*IE10*/
user-select: text !important;
}
.pc {
height: 100%;
......@@ -57,7 +59,29 @@ export default {
min-width: unset;
min-height: unset;
}
.ivu-btn-primary{
background: #0092FF!important
::-webkit-scrollbar
{
width: 8px;
height: 8px;
background-color: #F5F5F5;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
border-radius: 10px;
background-color: #Eff4f6;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb
{
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #BDBDBD;
}
/* .ivu-btn-primary{
background: #0092FF!important
} */
</style>
......@@ -131,4 +131,18 @@ export function forwardResume(params) {
'Content-Type':'application/json'
}})
}
// export function getPdf(parmars) {
// return axios.get(`${sapi}/api/resume/getResumePdfByResumeId/${parmars.uid}`,{
// responseType: 'arraybuffer',
// headers: {
// 'Content-Type':'application/json'
// }
// })
// }
// // 是否展示原件的PDF
// export function isShowPDF(parmars) {
// return axios.get(`${sapi}/api/resume//isShowOriPdf/${parmars.uid}`, {headers: {
// 'Content-Type':'application/json'
// }})
// }
......@@ -28,7 +28,7 @@
<span style="display:inline-block;line-height:6%;margin-left:30%;">{{massage}}</span>
</Col>
<Col span="1" class="sign-out" >
<a @click="loginOut" style="margin-left:38%">退出</a>
<a @click="loginOut" style="float:right">退出</a>
</Col>
</Row>
<Row style="height:94%">
......
......@@ -12,15 +12,15 @@
<div class="leftcontentContent" v-for="(item,index) in Essentialinformation " :key='index'>
<div class="contentMassage">
<p style="margin-top:7px">
<span style="margin-left:10px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer" @click="Seedetail(item.id, item.uid)">{{item.ownerName}} |</span>
<span @click="Seedetail(item.id, item.uid)" style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer">{{item.ownerMobile}} |</span>
<span @click="Seedetail(item.id, item.uid)" style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;width:20%;cursor:pointer">{{item.ownerExpectTitles}}</span>
<span style="color:#2d8cf0;float:right;margin-right:35px;cursor:pointer" @click="updateInterview(item.id,item.interviewerName,item.seeTime,item.inviterName)">更改约面信息</span>
<span style="margin-left:10px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer" @click="Seedetail(item.id, item.uid,item.flowStatus)">{{item.ownerName}} |</span>
<span @click="Seedetail(item.id, item.uid ,item.flowStatus)" style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer">{{item.ownerMobile}} |</span>
<span @click="Seedetail(item.id, item.uid,item.flowStatus)" style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;width:20%;cursor:pointer">{{item.ownerExpectTitles}}</span>
<span style="color:#2d8cf0;float:right;margin-right:5%;cursor:pointer" @click="updateInterview(item.id,item.interviewerName,item.seeTime,item.inviterName)">更改约面信息</span>
</p>
<p style="margin-top:8px;color:Grey">
<span style="margin-left:10px;display:inline-block;width:22%;">邀约人: {{item.inviterName}} </span>
<span style="margin-left:7%;display:inline-block;width:22%;">面试官: {{item.interviewerName}}</span>
<span style="float:right;margin-right:35px">面试时间:{{ item.seeTime}}</span>
<span style="float:right;margin-right:5%">面试时间:{{ item.seeTime}}</span>
</p>
</div>
<div class="contentState">
......@@ -260,6 +260,7 @@ export default {
modal3:false,
modal4:false,
modal5:false,
interdeTailSta:"",
changestatuss:'',
spinShow:true,
Ishow:[],
......@@ -547,55 +548,55 @@ export default {
if(e.target.value==1){
this.changestatusSTATUS='HAS_SEE'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==2){
this.changestatusSTATUS='HAS_SEE'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==3){
this.changestatusSTATUS='SEE_FAIL'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==4){
this.changestatusSTATUS='INTERVIEW_FAIL'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==5){
this.changestatusSTATUS='TO_SENT_OFFER'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==6){
this.changestatusSTATUS='HAS_SENT_OFFER'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==7){
this.changestatusSTATUS='TO_ENTRY'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==8){
this.changestatusSTATUS='NO_ENTRY'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
if(e.target.value==9){
this.changestatusSTATUS='HAS_ENTRY'
changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT)
this.serchListInterview(this.pageT,'init')
})
}
this.statusValue = '0'
......@@ -638,13 +639,14 @@ export default {
this.searchInfo.STA.remove(tItem)
}
},
Seedetail(Tid,Uid){
Seedetail(Tid,Uid,sta){
this.DOWNID=Uid
this.detailID=Tid
this.interdeTailSta=sta
let newpage = this.$router.resolve({
name: 'resumeDetail',
params:{},
query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID}
query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID,status:this.interdeTailSta}
})
window.open(newpage.href, '_blank');
},
......@@ -766,6 +768,7 @@ font-size: 14px;
width:100%;
background:#EDEDED;
overflow: hidden;
min-width: 1200px;
}
.interview-left{
height:100%;
......
......@@ -39,9 +39,9 @@
<div style="width:47%;height:100%;float:left;background:rgb(61,169,247);margin-left:1%;line-height:80px;text-align:center;color:white;font-size:20px">数据展示</div>
<div style="width:48%;height:100%;float:left;background:rgb(253,85,83);margin-left:3%;line-height:80px;text-align:center;color:white;font-size:20px">提示语</div>
</div> -->
<div style="background:WhiteSmoke;width:100%;height:40px;" class='bar'>
<div style="background:#D9D9D9;width:100%;height:40px;" class='bar'>
<input type='checkbox' class='selectAll' v-model='checked' @click='checkedAll' style="margin-left:10px;cursor:pointer;">
<span style="margin-left:5px;position:relative;">选择<Badge :count="interviewee.length" size='small' :class='["badge",{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'></Badge></span>
<span style="margin-left:5px;position:relative;font-size:14px">选择<Badge :count="interviewee.length" size='small' :class='["badge",{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'></Badge></span>
<Button type="primary" size="small" style="margin-left:4%;width:50px" @click="downloadAll">下载</Button>
<Button type="primary" size="small" style="margin-left:2%;width:50px" @click="delateAll">删除</Button>
<Button type="primary" size="small" style="margin-left:2%;" @click="transpond">
......@@ -55,18 +55,18 @@
<!-- <div style="float:left;margin-left:1%;width:99%;overflow-y: auto;height:600px;margin-bottom:40px"> -->
<div class="Resumecontent" v-for='(item,i) in ajaxData' :key="i" >
<div class="detailResume" id="a" style="" @mousemove="ahove(i,item.isShow)" @mouseleave="movleave(i,item.isShow)" :class="{red:item.isShow, grey: i%2!=0}">
<p style='margin-left: 10px;'>
<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">
<p style='margin-left: 10px;padding-top:10px'>
<span style="display:inline-block;height:100%;margin-top:8px;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;height:13px">
</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%;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.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.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%;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%;font-size: 12px;width:25%;float:right;text-align:right;margin-right:10px;margin-top:5px">
<span class="allResumeBassage" style="display:inline-block;height:100%;font-size: 14px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)" >{{item.ownerName}} <span v-show="item.ownerMobile !==''">|</span></span>
<span class="allResumeBassage" style="display:inline-block;height:100%;font-size: 14px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerMobile}} <span v-show="item.ownerAge !==''">|</span></span>
<span class="allResumeBassage" style="display:inline-block;height:100%;font-size: 14px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerAge}}<span v-show="item.ownerSex !==''">|</span></span>
<span class="allResumeBassage" style="display:inline-block;height:100%;font-size: 14px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerSex}} <span v-show="item.ownerWorkYears !==''">|</span> </span>
<span class="allResumeBassage" style="display:inline-block;height:100%;font-size: 14px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerWorkYears}}<span v-show="item.ownerExpectTitles !==''">|</span></span>
<span class="allResumeBassage" style="display:inline-block;height:100%;font-size: 14px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerHighestDegree}} <span v-show="item.ownerExpectTitles !==''">|</span></span>
<span class="allResumeBassage" style="display:inline-block;height:100%;margin-top:5px;font-size:14px;width:25%;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerExpectTitles}}</span>
<span class="allResumeBassage" style="display:inline-block;height:100%;font-size: 14px;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-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=='TO_RESULT'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试结果待定</span></span>
......@@ -74,74 +74,46 @@
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='SEE_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=='NO_ENTRY'" 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=='ARRIVED'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">已到达</span></span>
<span style="margin-right:10px;margin-top:5px" v-else-if="item.flowStatus=='TO_SEE'">
<span style="cursor:pointer" >
<select name="3" id="3" @change="selectFn2($event,item.id,item.flowStatus)" >
<option value="1">邀请面试</option>
<option value="2">备选</option>
<option value="3">PASS</option>
<option value="4">待处理</option>
</select>
</span>
</span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='HAS_SEE'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px;" >已邀约</span></span>
<span style="margin-right:10px;margin-top:5px" v-else-if="item.flowStatus=='OPTION'">
<span style="cursor:pointer">
<select name="4" id="4" @change="selectFn3($event,item.id,item.flowStatus)" class='status' >
<option value="1">备选</option>
<option value="2">邀请面试</option>
<option value="3">PASS</option>
<option value="4">待处理</option>
</select>
</span>
</span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='TO_SENT_OFFER'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80;" /><span style="margin-left:10px" >待Offer</span></span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='HAS_SENT_OFFER'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">已发Offer</span></span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='TO_ENTRY'" 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=='HAS_ENTRY'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">已入职</span></span>
<span style="margin-right:10px;margin-top:5px" v-else-if="item.flowStatus=='PASS'">
<span style="cursor:pointer" >
<select name="2" id="2" @change="selectFn4($event,item.id,item.flowStatus)" class='status' >
<option value="1">PASS</option>
<option value="2">邀请面试</option>
<option value="3">备选</option>
<option value="4">待处理</option>
<span style="margin-right:0px;margin-top:5px" v-else-if="item.flowStatus=='PASS'||item.flowStatus=='TO_DO'||item.flowStatus=='TO_SEE'||item.flowStatus=='OPTION'" >
<select name="1" id="a" style="margin-right:0px;cursor:pointer" v-model="item.flowStatus" @change="changeFlowstatus($event,item.id,item.flowStatus,item.originValue)">
<option value="TO_DO">待处理</option>
<option value="PASS">PASS</option>
<option value="TO_SEE">邀请面试</option>
<option value="OPTION">备选</option>
</select>
</span>
</span>
<select name="1" id="a" @change="selectFn1($event,item.id,item.flowStatus)" v-else-if="item.flowStatus=='TO_DO'" style="margin-right:10px;cursor:pointer" class='status' >
<option value="1">待处理</option>
<option value="2">pass</option>
<option value="3">邀请面试</option>
<option value="4">备选</option>
</select>
<span class='record'><Icon type="md-download" @click="downloadONE(item.id)" style="font-size:15px;cursor:pointer;color:#0092FF"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SEE'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SEE'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='SEE_FAIL'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='INTERVIEW_FAIL'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='ARRIVED'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='NO_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='END'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='PASS'" @click="delateR(item.id)" style="font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='OPTION'" @click="delateR(item.id)" style="font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_DO'" @click="delateR(item.id)" style="font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"/></span>
<span class='record'><Icon type="md-download" @click="downloadONE(item.id)" style="font-size:17px;cursor:pointer;color:#0092FF"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SEE'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SEE'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='SEE_FAIL'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='INTERVIEW_FAIL'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='ARRIVED'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='NO_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='END'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='PASS'" @click="delateR(item.id)" style="font-size:17px;cursor:pointer;color:rgb(242, 93, 87);"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='OPTION'" @click="delateR(item.id)" style="font-size:17px;cursor:pointer;color:rgb(242, 93, 87);"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_DO'" @click="delateR(item.id)" style="font-size:17px;cursor:pointer;color:rgb(242, 93, 87);"/></span>
<span class='recordtext' @click="RecordSEE(item.id,item.ownerName)" style="color:#0092FF;cursor:pointer">记录</span>
</span>
</p>
<p style="margin-top:5px;color:Greys;padding-left:10px;">
<span style="display:inline-block;font-size: 12px;color:orange" v-show="item.hasForward=='1'" class='transmit' >已转</span>
<span style="display:inline-block;font-size: 12px;margin-left:20px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 12px;color:Grey;margin-left:20px" v-if="item.srcSite==''" v-show="item.hasForward==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 12px;margin-left:-2px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward!==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 12px;color:Grey;margin-left:-2px" v-if="item.srcSite==''" v-show="item.hasForward!==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 12px;margin-left:3px;color:Grey">{{item.optSource}}<span v-show="item.srcSite!==''"> |</span></span>
<span style="display:inline-block;font-size: 12px;margin-left:3px;color:Grey">{{item.srcSite}}</span>
<span style="display:inline-block;font-size: 12px;float:right;text-align:right;margin-right:10px;color:Grey">
<span style="display:inline-block;font-size: 14px;color:orange" v-show="item.hasForward=='1'" class='transmit' >已转</span>
<span style="display:inline-block;font-size: 14px;margin-left:20px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 14px;color:Grey;margin-left:20px" v-if="item.srcSite==''" v-show="item.hasForward==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 14px;margin-left:-2px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward!==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 14px;color:Grey;margin-left:-2px" v-if="item.srcSite==''" v-show="item.hasForward!==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 14px;margin-left:3px;color:Grey">{{item.optSource}}<span v-show="item.srcSite!==''"> |</span></span>
<span style="display:inline-block;font-size: 14px;margin-left:3px;color:Grey">{{item.srcSite}}</span>
<span style="display:inline-block;font-size: 14px;float:right;text-align:right;margin-right:10px;color:Grey">
<span>{{item.modifyTime}}</span>
<span >最后操作人:{{item.d}}</span>
</span>
......@@ -208,35 +180,6 @@
<Button type="primary" size='small' @click="modal1=false">关闭</Button>
</div>
</Modal>
<!-- 准备约面弹出框 -->
<Modal
v-model="modal2"
width='380px'
:closable='false'>
<div >
<h2 style="text-align: center;color:black">提示</h2>
<p style="margin-top:20px;line-height:25px">
<span>更改为<span style="color:blue">“邀请约面”</span>的状态后,你需要从<span style="color:blue">”面试管理“</span>中对该候选人进行后续的操作。</span>
</p>
<p style="margin-top:20px;line-height:25px">
<Form :label-width="80" ref="formInline" :rules="ruleInline" :model="formInline">
<FormItem label="邀约人" style="margin-top:20px" prop="UpdateOWER">
<Input v-model="formInline.UpdateOWER" style="width:180px" :maxlength="5"/>
</FormItem>
<FormItem label="面试时间" style="margin-top:20px" prop="UpdateTIME">
<DatePicker type="datetime" style="width:180px" v-model="formInline.UpdateTIME" format="yyyy-MM-dd HH:mm" @on-change="changeTime" :options="options3" :editable='false'></DatePicker>
</FormItem>
<FormItem label="面试官" style="margin-top:20px" prop='UpdateVIEW'>
<Input v-model="formInline.UpdateVIEW" style="width:180px" :maxlength="5"/>
</FormItem>
</Form>
</p>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='pushlist'>取消</Button>
<Button type='primary' @click="nextStep" >下一步</Button>
</div>
</Modal>
<!-- 可删除状态下,删除提示框 -->
<Modal
v-model="modal3"
......@@ -370,7 +313,7 @@
<Button type='primary' @click='emailModalPush'>取消</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==false">发送</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==true">添加并发送</Button>
<Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox>
<!-- <Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox> -->
</div>
</Modal>
<Modal
......@@ -484,6 +427,7 @@ import {mapState} from 'vuex'
tipInfo: '输入多个邮箱地址以英文”;“分隔',
sad:'',
loading1: false,
selectElementValue:'',
options: [],
editorObject: {type: '', value: ''},
ruleInline: {
......@@ -508,6 +452,7 @@ import {mapState} from 'vuex'
UpdateVIEW:'',
sendWeixin: true
},
resumeDetailSta:'',
emailInline:{
moo:'',
modalArr:[],
......@@ -526,6 +471,7 @@ import {mapState} from 'vuex'
selectFn3STA:'',
selectFn4STA:'',
limentName:0,
errorMassage:'',
errorCode:'',
emailMassage:false,
allEmailVilitor:false,
......@@ -548,6 +494,7 @@ import {mapState} from 'vuex'
attachFileList:[],
flowStatusTT:'',
emailCode:'',
resumePushId:'',
modal1:false,
modal2:false,
modal3:false,
......@@ -651,18 +598,9 @@ import {mapState} from 'vuex'
watch: {
checkboxList: {
handler: function (val, oldVal) {
if(this.delateARRALL.length==30 || (this.ajaxData.length!=0&&this.checkboxList.length === this.ajaxData.length)){
this.checked=true
}
// if(this.delateARRALL.length!==30){
// this.checked=false
// return
// }
// if(this.ajaxData.length==0){
// this.checked=false
// return
// }
else {
this.checked=false;
}
......@@ -715,41 +653,48 @@ import {mapState} from 'vuex'
})
},
//操作处理面试状态
selectFn1(e,SID,itemsta) {
changeFlowstatus(e,SID,itemsta,orsta){
this.toseeid=SID
this.emailId=SID
this.emailIdArr=[]
this.emailIdArr.push(SID)
this.isShowTwo=true
this.ITEMSTA=itemsta
// this.selectFn1STA=e.target.value
// 准备约面
if(e.target.value==3){
if(e.target.value=='TO_SEE'){
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
this.sendEmail('',orsta,SID)
}
// 简历PASS
if(e.target.value==2){
if(e.target.value=='PASS'){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
this.SouSuo(this.pageT,'init')
}
})
}
// 简历备选
if(e.target.value==4){
if(e.target.value=='OPTION'){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
this.SouSuo(this.pageT,'init')
}
})
}
if(e.target.value=='TO_DO'){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT,'init')
}
})
}
......@@ -782,200 +727,6 @@ import {mapState} from 'vuex'
}
})
},
nextStep(){
this.beforeBtu=true
this.modal2=false
this.sendEmail()
},
selectFn2(e,SID,itemsta) {
this.ITEMSTA=itemsta
this.emailId=SID
this.toseeid=SID
// this.selectFn2STA=e.target.value
// 准备约面
if(e.target.value==1){
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
// this.selectFn2STA=e.target.value
}
// 简历PASS
if(e.target.value==3){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
// 简历备选
if(e.target.value==2){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
if(e.target.value==2){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
},
selectFn3(e,SID,itemsta) {
this.ITEMSTA=itemsta
this.emailId=SID
this.toseeid=SID
// this.selectFn3STA=e.target.value
// 准备约面
if(e.target.value==2){
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
}
// 简历PASS
if(e.target.value==3){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
// 简历备选
if(e.target.value==1){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
if(e.target.value==4){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
},
selectFn4(e,SID,itemsta) {
this.ITEMSTA=itemsta
this.toseeid=SID
this.emailId=SID
// this.selectFn4STA=e.target.value
// 准备约面
if(e.target.value==2){
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
}
// 简历PASS
if(e.target.value==1){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
// 简历备选
if(e.target.value==3){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
if(e.target.value==4){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
},
//查询简历列表
SearchList(page){
page = typeof(page)=='number'?page:1
this.searchInfo.pageIndex = page
this.pageIndex = page
let parmars={
pageSize:this.searchInfo.pageSize,
pageIndex:this.searchInfo.pageIndex
}
this.ajaxData=[]
this.interviewee = []
serchList(parmars).then(res=>{
if(res.data.success==true){
// this.ajaxData=[]
this.checkboxList=[]
this.spinShow=false
this.totalSize=res.data.body.totalNumber
this.quanxuan.push(res.data.body.items.id)
this.ajaxData=res.data.body.items.map((item,index)=>{
item.id=item.id
item.ownerName=item.ownerName
item.ownerSex=item.ownerSex
item.deliveryTime=item.deliveryTime
item.belongs=item.belongs
item.emailSendtime=item.emailSendtime
item.ownerMobile=item.ownerMobile
item.ownerHighestDegree=item.ownerHighestDegree
item.ownerExpectTitles=item.ownerExpectTitles
item.flowStatus=item.flowStatus
item.ownerAge=item.ownerAge
item.ownerWorkYears=item.ownerWorkYears
item.modifyTime=item.modifyTime
item.srcSite=item.srcSite
item.optSource=item.optSource
item.modifier=item.modifier
item.STATES=false
item.hasForward=item.hasForward
item.isShow=false
item.c=item.modifier==''?item.modifier:item.modifier.split('_')
item.d=item.c[0]
return item
})
}
})
},
//选择搜索元素
selectElement1(tItem,Tindex){
this.searchInfo.SEX=Tindex==0?'':tItem;
......@@ -1075,6 +826,8 @@ import {mapState} from 'vuex'
item.isShow=false
item.modifier=item.modifier
item.uid=item.uid
item.originValue=item.flowStatus
item.hasRead=item.hasRead
item.c=item.modifier==''?item.modifier:item.modifier.split('_')
item.d=item.c[0]
return item
......@@ -1151,16 +904,19 @@ import {mapState} from 'vuex'
}
},
//查看简历详情
Seedetail(Tid,Uid){
Seedetail(Tid,Uid,STATUS){
this.SouSuo(this.pageT)
this.DOWNID=Uid
this.detailID=Tid
this.resumeDetailSta=STATUS
let newpage = this.$router.resolve({
name: 'resumeDetail',
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');
},
//下载单条简历
downloadONE(downID){
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${downID}`
......@@ -1365,7 +1121,10 @@ import {mapState} from 'vuex'
this.ajaxData[index].isShow=false
},
// 发送邮件
sendEmail(type){
sendEmail(type,status,SID){
this.selectElementValue=status
this.resumePushId=SID
console.log(status,44444444)
if(this.checkboxList.length == 0&&type) {
this.$Notice.error({
title: '提示',
......@@ -1507,8 +1266,12 @@ import {mapState} from 'vuex'
this.isShowTwo=false
this.isLimitSize=false
this.uploadFileList=[]
this.clearInterviewee()
this.SouSuo(this.pageT,'init')
// this.clearInterviewee()
this.ajaxData.map(item=>{
if(item.id==this.resumePushId){
item.flowStatus=item.originValue
}
})
},
getEditorValue(value){ // 调编辑器组件方法获取数据
return this.$refs.editor.getValue()
......@@ -1518,7 +1281,7 @@ import {mapState} from 'vuex'
this.uploadFileList.splice(index,1)
},
// 确认发送邮件
confireSendEmail(){
confireSendEmail:_debounce(function(){
this.sad = this.getEditorValue()
if(this.sad==''){
this.$Notice.error({
......@@ -1694,7 +1457,7 @@ import {mapState} from 'vuex'
}
})
}
},
},800),
removeInterviewee (value) {
this.interviewee.map((item, index) => {
if (value&&item.id == value.id) {
......@@ -1750,7 +1513,7 @@ import {mapState} from 'vuex'
}
})
},
sendNotice() {
sendNotice:_debounce(function() {
this.$refs.transpondFrom.validate(valid => {
if(!this.transpondFrom.interviewerName){
return
......@@ -1777,8 +1540,10 @@ import {mapState} from 'vuex'
desc: '发送成功'
})
}, 300)
this.SouSuo(this.pageT)
} else{
this.errorCode=res.data.body.code
this.errorMassage=res.data.body.message
this.modal8=false
this.clearInterviewee()
if(this.errorCode=='40001'){
......@@ -1787,6 +1552,12 @@ import {mapState} from 'vuex'
if(this.errorCode=='40002'){
this.modal13=true
}
if(this.errorCode=='0'){
this.$Notice.error({
title: '提示',
desc: this.errorMassage
})
}
// setTimeout(() => {
// this.$Notice.error({
// title: '提示',
......@@ -1798,7 +1569,7 @@ import {mapState} from 'vuex'
}
})
})
},
},800),
remoteMethod: async function(query){
if (query !== '') {
this.loading1 = true;
......@@ -1950,13 +1721,23 @@ import {mapState} from 'vuex'
},
mounted(){
this.SouSuo(null, 'init')
document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden;
if(isHidden){
document.title = '思坦途'
} else {
document.title = '思坦途'
this.SouSuo(this.pageT, 'init')
}
})
}
}
</script>
<style scoped lang='less'>
.allResume{
width: 100%;
height:100%
height:100%;
font-family: "\5FAE\8F6F\96C5\9ED1";
}
.bar{
display:flex;
......@@ -1981,10 +1762,11 @@ import {mapState} from 'vuex'
overflow: hidden;
width: 70.5%;
float: left;
// margin-left: 4px;
position:relative;
}
.red{
background: LightGray
background: LightGray!important
}
.resumeRightContentTop{
width: 100%;
......@@ -2001,6 +1783,20 @@ import {mapState} from 'vuex'
.Recode span{
margin-left:20px
}
.allResumeBassage{
// display:inline-block;
// height:100%;
// margin-top:5px;
// overflow:hidden;
// text-overflow:ellipsis;
// white-space: nowrap;
// cursor:pointer;
// font-size: 14px;
color: #2d8cf0;
}
.massagecolor{
color: grey
}
select::-ms-expand{display:none;}
select{
appearance:none;
......@@ -2062,10 +1858,11 @@ import {mapState} from 'vuex'
}
.detailResume{
width:100%;
height:60px;
height:80px;
}
.grey{
background:rgba(241,241,241,1);
background: #f9f9f9;
margin-left:3px
}
.emailModal-title{
height: 280px;
......
......@@ -38,9 +38,9 @@
<div style="width:47%;height:100%;float:left;background:rgb(61,169,247);margin-left:1%;line-height:80px;text-align:center;color:white;font-size:20px">数据展示</div>
<div style="width:48%;height:100%;float:left;background:rgb(253,85,83);margin-left:3%;line-height:80px;text-align:center;color:white;font-size:20px">提示语</div>
</div>
<div style="background:WhiteSmoke;width:100%;height:40px;" class='bar'>
<div style="background:#d9d9d9;width:100%;height:40px;" class='bar'>
<input type='checkbox' class='selectAll' v-model='checked' @click='checkedAll' style="margin-left:10px;cursor:pointer;">
<span style="margin-left:5px;position:relative;">选择<Badge :count="interviewee.length" size='small' :class='["badge",{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'></Badge></span>
<span style="margin-left:5px;position:relative;font-size:14px">选择<Badge :count="interviewee.length" size='small' :class='["badge",{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'></Badge></span>
<Button type="primary" size="small" style="margin-left:4%;width:50px" @click="downloadAll">下载</Button>
<Button type="primary" size="small" style="margin-left:2%;width:50px" @click="delateAll">删除</Button>
<Button type="primary" size="small" style="margin-left:2%;" @click="transpond">
......@@ -53,17 +53,17 @@
<div style="margin:50px auto;width:300px;height:200px;line-height:200px;text-align:center;font-size:20px;color:LightGray" v-show="ajaxData.length==0">暂无数据</div>
<div class="Resumecontent" v-for='(item,i) in ajaxData' :key="i">
<div class="detailResume" id="a" @mousemove="ahove(i,item.isShow)" @mouseleave="movleave(i,item.isShow)" :class="{red:item.isShow, grey: i%2!=0}" >
<p class="massage" style="margin-left:10px;">
<p class="massage" style="margin-left:10px;padding-top:10px">
<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>
<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.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.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;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;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;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: 14px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" class="allResumeBassage" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)">{{item.ownerName}} |</span>
<span style="display:inline-block;height:100%;font-size: 14px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" class="allResumeBassage" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerMobile}} |</span>
<span style="display:inline-block;height:100%;font-size: 14px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" class="allResumeBassage" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerAge}}岁 |</span>
<span style="display:inline-block;height:100%;font-size: 14px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" class="allResumeBassage" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerSex||'&nbsp;'}} |</span>
<span style="display:inline-block;height:100%;font-size: 14px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" class="allResumeBassage" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerWorkYears}}年 |</span>
<span style="display:inline-block;height:100%;font-size: 14px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" class="allResumeBassage" :class="{massagecolor:item.hasRead==1}" @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: 14px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;width:25%;cursor:pointer" class="allResumeBassage" :class="{massagecolor:item.hasRead==1}" @click="Seedetail(item.id,item.uid,item.flowStatus)"> {{item.ownerExpectTitles}}</span>
<span style="display:inline-block;height:100%;font-size: 14px;float:right;text-align:right;margin-right:10px;width:25%;line-height:100%;margin-top:5px;" class="allResumeBassage">
<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=='TO_RESULT'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试结果待定</span></span>
......@@ -71,76 +71,48 @@
<span style="margin-right:30px;margin-top:5px" v-else-if="item.flowStatus=='SEE_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=='ARRIVED'" 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=='NO_ENTRY'" 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=='TO_SEE'" class='status'>
<span style="text-align:left;cursor:pointer" >
<select name="3" id="3" @change="selectFn2($event,item.id)" style="height:18px;text-align:center;margin-top:5px">
<option value="1">邀请面试</option>
<option value="2">备选</option>
<option value="3">PASS</option>
<option value="4">待处理</option>
<span style="margin-right:0px;margin-top:5px" v-else-if="item.flowStatus=='PASS'||item.flowStatus=='TO_DO'||item.flowStatus=='TO_SEE'||item.flowStatus=='OPTION'" >
<select name="1" id="a" style="margin-right:10px;cursor:pointer" v-model="item.flowStatus" @change="changeFlowstatus($event,item.id,item.flowStatus,item.originValue)">
<option value="TO_DO">待处理</option>
<option value="PASS">PASS</option>
<option value="TO_SEE">邀请面试</option>
<option value="OPTION">备选</option>
</select>
</span>
</span>
<span style="margin-right:30px;margin-top:5px" v-else-if="item.flowStatus=='HAS_SEE'" 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=='OPTION'" class='status'>
<span>
<select name="4" id="4" @change="selectFn3($event,item.id)" style="height:18px;text-align:center;margin-top:5px;cursor:pointer">
<option value="1">备选</option>
<option value="2">邀请面试</option>
<option value="3">PASS</option>
<option value="4">待处理</option>
</select>
</span>
</span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='TO_SENT_OFFER'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px" >待Offer</span></span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='HAS_SENT_OFFER'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">已发Offer</span></span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='TO_ENTRY'" 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=='HAS_ENTRY'" 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=='PASS'" class='status'>
<span class='status'>
<select name="2" id="2" @change="selectFn4($event,item.id)" style="height:18px;text-align:center;margin-top:5px;cursor:pointer">
<option value="1">PASS</option>
<option value="2">邀请面试</option>
<option value="3">备选</option>
<option value="4">待处理</option>
</select>
</span>
</span>
<select name="1" id="a" @change="selectFn1($event,item.id)" v-else-if="item.flowStatus=='TO_DO'" style="height:20px;margin-top:5px;margin-right:20px;text-align:center;cursor:pointer" class='status'>
<option value="1">待处理</option>
<option value="2">pass</option>
<option value="3">邀请面试</option>
<option value="4">备选</option>
</select>
<span class='record'><Icon type="md-download" @click="downloadONE(item.id)" style="font-size:15px;cursor:pointer;color:#0092FF"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SEE'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SEE'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='SEE_FAIL'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='INTERVIEW_FAIL'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_ENTRY'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_ENTRY'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='NO_ENTRY'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='END'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='ARRIVED'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:15px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='PASS'" @click="delateR(item.id)" style=";cursor:pointer;color:rgb(242, 93, 87);;font-size:15px;"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='OPTION'" @click="delateR(item.id)" style="color:rgb(242, 93, 87);;font-size:15px;;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_DO'" @click="delateR(item.id)" style="color:rgb(242, 93, 87);;font-size:15px;;cursor:pointer"/></span>
<span class='record'><Icon type="md-download" @click="downloadONE(item.id)" style="font-size:17px;cursor:pointer;color:#0092FF"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SEE'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SEE'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='SEE_FAIL'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='INTERVIEW_FAIL'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_ENTRY'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_ENTRY'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='NO_ENTRY'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='END'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SENT_OFFER'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='ARRIVED'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='PASS'" @click="delateR(item.id)" style=";cursor:pointer;color:rgb(242, 93, 87);;font-size:17px;"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='OPTION'" @click="delateR(item.id)" style="color:rgb(242, 93, 87);;font-size:17px;;cursor:pointer"/></span>
<span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_DO'" @click="delateR(item.id)" style="color:rgb(242, 93, 87);;font-size:17px;;cursor:pointer"/></span>
<span @click="RecordSEE(item.id,item.ownerName)" style=";cursor:pointer;color:#2d8cf0;" class='recordtext'>记录</span>
</span>
</p>
<p style="margin-top:10px;color:Grey;padding-left:10px;" class='info'>
<span style="display:inline-block;font-size: 12px;color:orange" v-show="item.hasForward=='1'" class='transmit' >已转</span>
<span style="display:inline-block;font-size: 12px;margin-left:20px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 12px;margin-left:20px;color:Grey" v-if="item.srcSite==''" v-show="item.hasForward==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 12px;margin-left:-2px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward!==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 12px;color:Grey;margin-left:-2px" v-if="item.srcSite==''" v-show="item.hasForward!==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 12px;margin-left:3px;color:Grey">{{item.optSource}}<span v-show="item.srcSite!==''"> |</span></span>
<span style="display:inline-block;font-size: 12px;margin-left:3px;color:Grey">{{item.srcSite}}</span>
<span style="display:inline-block;font-size: 12px;float:right;text-align:right;margin-right:10px;color:Grey;">
<p style="margin-top:0px;color:Greys;padding-left:10px;" class="info">
<span style="display:inline-block;font-size: 14px;color:orange" v-show="item.hasForward=='1'" class='transmit' >已转</span>
<span style="display:inline-block;font-size: 14px;margin-left:20px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 14px;color:Grey;margin-left:20px" v-if="item.srcSite==''" v-show="item.hasForward==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 14px;margin-left:-2px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward!==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 14px;color:Grey;margin-left:-2px" v-if="item.srcSite==''" v-show="item.hasForward!==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
<span style="display:inline-block;font-size: 14px;margin-left:3px;color:Grey">{{item.optSource}}<span v-show="item.srcSite!==''"> |</span></span>
<span style="display:inline-block;font-size: 14px;margin-left:3px;color:Grey">{{item.srcSite}}</span>
<span style="display:inline-block;font-size: 14px;float:right;text-align:right;margin-right:10px;color:Grey">
<span>{{item.modifyTime}}</span>
<span>最后操作人:{{item.d}}</span>
<span >最后操作人:{{item.d}}</span>
</span>
</p>
</div>
......@@ -205,35 +177,6 @@
<Button type="primary" size='small' @click="modal1=false">关闭</Button>
</div>
</Modal>
<!-- 准备约面弹出框 -->
<Modal
v-model="modal2"
width='380px'
:closable='false'>
<div >
<h2 style="text-align: center;color:black">提示</h2>
<p style="margin-top:20px;line-height:25px">
<span>更改为<span style="color:blue">“邀请约面”</span>的状态后,你需要从<span style="color:blue">”面试管理“</span>中对该候选人进行后续的操作。</span>
</p>
<p style="margin-top:20px;line-height:25px">
<Form :label-width="80" ref="formInline" :rules="ruleInline" :model="formInline">
<FormItem label="邀约人" style="margin-top:20px" prop="UpdateOWER">
<Input v-model="formInline.UpdateOWER" style="width:180px" :maxlength="5"/>
</FormItem>
<FormItem label="面试时间" style="margin-top:20px" prop="UpdateTIME">
<DatePicker type="datetime" style="width:180px" v-model="formInline.UpdateTIME" format="yyyy-MM-dd HH:mm" @on-change="changeTime" :editable='false' :options="options3"></DatePicker>
</FormItem>
<FormItem label="面试官" style="margin-top:20px" prop="UpdateVIEW">
<Input v-model="formInline.UpdateVIEW" style="width:180px" :maxlength="5"/>
</FormItem>
</Form>
</p>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='pushlist'>取消</Button>
<Button type='primary' @click="addINTERVIEW" >确定</Button>
</div>
</Modal>
<!-- 可删除状态下,删除提示框 -->
<Modal
v-model="modal3"
......@@ -390,7 +333,7 @@
<Button type='primary' @click='emailModalPush'>取消</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==false">发送</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==true">添加并发送</Button>
<Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox>
<!-- <Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox> -->
</div>
</Modal>
<Modal
......@@ -534,6 +477,7 @@ export default {
disabledSingle:true,
emailId:'',
RescopyArr:[],
errorMassage:'',
interelement:'1',
emailIdArr:[],
attachFileList:[],
......@@ -564,6 +508,7 @@ export default {
a:'',
id:'',
pageT:'',
resumeDetailSta:'',
modal1:false,
modal2:false,
modal3:false,
......@@ -574,6 +519,7 @@ export default {
modal10:false,
modal12:false,
modal13:false,
resumePushId:'',
optcode:'',
toseename:'',
// UpdateOWER:'',
......@@ -666,44 +612,48 @@ export default {
},
//操作处理面试状态
selectFn1(e,SID,itemsta) {
changeFlowstatus(e,SID,itemsta,orsta){
this.toseeid=SID
this.emailId=SID
this.emailIdArr=[]
this.emailIdArr.push(SID)
this.isShowTwo=true
this.ITEMSTA=itemsta
// 准备约面
if(e.target.value==3){
getEmailMoo().then(res=>{
this.emailInline.modalArr.push(res.data.body[0])
})
this.emailMOdal=true
if(e.target.value=='TO_SEE'){
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
this.sendEmail('',orsta,SID)
}
// 简历PASS
if(e.target.value==2){
if(e.target.value=='PASS'){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
this.SouSuo(this.pageT,'init')
}
})
}
// 简历备选
if(e.target.value==4){
if(e.target.value=='OPTION'){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
this.SouSuo(this.pageT,'init')
}
})
}
if(e.target.value=='TO_DO'){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT,'init')
}
})
}
......@@ -732,165 +682,9 @@ export default {
this.SouSuo(this.pageT)
}
if(res.data.body.code==0){
this.SouSuo(this.pageT)
}
})
},
nextStep(){
this.beforeBtu=true
this.modal2=false
this.emailMOdal=true
this.sendEmail()
},
selectFn2(e,SID,itemsta) {
this.ITEMSTA=itemsta
this.emailId=SID
this.toseeid=SID
// 准备约面
if(e.target.value==1){
getEmailMoo().then(res=>{
this.emailInline.modalArr.push(res.data.body[0])
})
this.emailMOdal=true
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
}
// 简历PASS
if(e.target.value==3){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
// 简历备选
if(e.target.value==2){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
if(e.target.value==2){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
},
selectFn3(e,SID,itemsta) {
this.ITEMSTA=itemsta
this.emailId=SID
this.toseeid=SID
// 准备约面
if(e.target.value==2){
getEmailMoo().then(res=>{
this.emailInline.modalArr.push(res.data.body[0])
})
this.emailMOdal=true
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
}
// 简历PASS
if(e.target.value==3){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
// 简历备选
if(e.target.value==1){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
if(e.target.value==4){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
},
selectFn4(e,SID,itemsta) {
this.ITEMSTA=itemsta
this.toseeid=SID
this.emailId=SID
// 准备约面
if(e.target.value==2){
getEmailMoo().then(res=>{
this.emailInline.modalArr.push(res.data.body[0])
})
this.emailMOdal=true
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true
this.sendEmail()
}
// 简历PASS
if(e.target.value==1){
let parmars={
status:"PASS",
id:SID,
}
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
// 简历备选
if(e.target.value==3){
let parmars={
status:"OPTION",
id:SID,
}
OPTION(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
}
})
}
if(e.target.value==4){
let parmars={
status:"TO_DO",
id:SID,
}
TODORes(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT)
this.SouSuo(this.pageT,'init')
}
})
}
},
changeTime(b){
this.UpdateTIME=b
......@@ -914,13 +708,14 @@ export default {
}
},
// 查看简历详情
Seedetail(Tid,Uid){
Seedetail(Tid,Uid,STATUS){
this.detailID=Tid
this.DOWNID=Uid
this.resumeDetailSta=STATUS
let newpage = this.$router.resolve({
name: 'resumeDetail',
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');
},
......@@ -1269,7 +1064,9 @@ export default {
item.isShow=false
item.optSource=item.optSource
item.modifier=item.modifier
item.originValue=item.flowStatus
item.uid=item.uid
item.hasRead=item.hasRead
item.c=item.modifier==''?item.modifier:item.modifier.split('_')
item.d=item.c[0]
if (item.STATES) { //以选中
......@@ -1299,7 +1096,9 @@ export default {
this.ajaxData[index].isShow=false
},
// 发送邮件
sendEmail(type){
sendEmail(type,status,SID){
this.selectElementValue=status
this.resumePushId=SID
if(this.checkboxList.length == 0&&type) {
this.$Notice.error({
title: '提示',
......@@ -1439,8 +1238,13 @@ export default {
this.isShowTwo=false
this.isLimitSize=false
this.uploadFileList=[]
this.SouSuo(this.pageT,'init')
this.clearInterviewee()
// this.SouSuo(this.pageT,'init')
// this.clearInterviewee()
this.ajaxData.map(item=>{
if(item.id==this.resumePushId){
item.flowStatus=item.originValue
}
})
},
getEditorValue(){ // 调编辑器组件方法获取数据
return this.$refs.editor.getValue()
......@@ -1451,7 +1255,7 @@ export default {
// this.isLimitSize=false
},
// 确认发送邮件
confireSendEmail(){
confireSendEmail:_debounce(function(){
this.sad=this.getEditorValue()
if(this.sad==''){
this.$Notice.error({
......@@ -1631,7 +1435,7 @@ export default {
}
})
}
},
},800),
changenotice(a){
},
receiveEmail(){
......@@ -1705,7 +1509,7 @@ export default {
this.$refs.transpondFrom.resetFields()
this.modal8= true
},
sendNotice() {
sendNotice:_debounce( function() {
this.$refs.transpondFrom.validate(valid => {
if(!this.transpondFrom.interviewerName){
return
......@@ -1732,8 +1536,10 @@ export default {
desc: '发送成功'
})
}, 500)
this.SouSuo(this.pageT)
} else{
this.errorCode=res.data.body.code
this.errorMassage=res.data.body.message
this.clearInterviewee()
this.modal8 = false
if(this.errorCode=='40001'){
......@@ -1742,18 +1548,16 @@ export default {
if(this.errorCode=='40002'){
this.modal13=true
}
// setTimeout(() => {
// this.$Notice.success({
// title: '提示',
// desc: '发送失败'
// })
// }, 500)
// this.clearInterviewee()
// this.modal8 = false
if(this.errorCode=='0'){
this.$Notice.error({
title: '提示',
desc:this.errorMassage
})
}
}
})
})
},
},800),
remoteMethod: function(query){
if (query !== '') {
this.loading1 = true;
......@@ -1928,7 +1732,9 @@ export default {
item.srcSite=item.srcSite
item.STATES=false
item.isShow=false
item.hasRead=item.hasRead
item.optSource=item.optSource
item.originValue=item.flowStatus
item.modifier=item.modifier
item.uid=item.uid
item.c=item.modifier==''?item.modifier:item.modifier.split('_')
......@@ -1965,6 +1771,15 @@ export default {
},
mounted(){
this.SouSuo(null, 'init')
document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden;
if(isHidden){
document.title = '思坦途'
} else {
document.title = '思坦途'
this.SouSuo(this.pageT, 'init')
}
})
}
}
</script>
......@@ -2017,13 +1832,13 @@ export default {
margin-bottom:0px;
}
.red{
background: LightGray
}
.massage{
height:25px;
font-size: 8px;
line-height: 25px;
background: LightGray !important
}
// .massage{
// // height:25px;
// font-size: 8px;
// // line-height: 25px;
// }
.Recode span{
margin-left:20px
}
......@@ -2046,6 +1861,12 @@ select{
.Education{
width: 100%;
}
.massagecolor{
color: grey !important
}
.allResumeBassage{
color: #2d8cf0;
}
.Education span{
margin-right: 20px;
display:inline-block;
......@@ -2081,7 +1902,7 @@ select{
}
.detailResume{
width:100%;
height:60px;
height:80px;
}
.emailModal-title{
height: 280px;
......@@ -2160,7 +1981,8 @@ select{
}
}
.grey{
background:rgba(241,241,241,1);
background:#f9f9f9;
margin-left: 3px
}
</style>
......
<template>
<div class="resumeDetail">
<div class="personalInformation" v-show="JSON.stringify(resume)!=='{}'">
<p class="detailTitel">
<span>
<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 style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span>
</p>
<div class="massageTitle">
<p>
<span class="bassMassage">姓名:{{resume&&resume.ownerName}}</span>
<span class="bassMassageRight">年龄:{{resume&&resume.ownerAge}}</span>
</p>
<p>
<span class="bassMassage">联系电话:{{resume&&resume.ownerMobile}}</span>
<span class="bassMassageRight">职位:{{resume&&resume.ownerExpectTitles}}</span>
</p>
<p>
<span class="bassMassage">电子邮箱:{{resume&&resume.email}}</span>
<span class="bassMassageRight">学历:{{resume&&resume.ownerHighestDegree}}</span>
</p>
<p>
<span class="bassMassage">所在地:{{resume&&resume.locationCity}}</span>
<span class="bassMassageRight">经验:{{resume&&resume.workYearsOriginal}}</span>
</p>
<p>
<span class="bassMassage">求职状态:{{resume&&resume.statusMessage}}</span>
<span class="bassMassageRight"></span>
</p>
<p>
<span class="bassMassage">期望行业:{{resume&&resume.industries}}</span>
<span class="bassMassageRight">期望薪资:{{resume&&resume.expectSalary}}</span>
</p>
<p >
<span class="bassMassage">期望职位:{{resume&&resume.expectTitles}}</span>
<span class="bassMassageRight">期望地区:{{resume&&resume.city}}</span>
</p>
</div>
</div>
<div class="workExperience" v-show="roList.length !==0 ">
<p class="detailTitel">
<span>
<img src="https://o7oe0d6qz.qnssl.com/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png" style="height:16px;width:23px;vertical-align: middle;margin-top:-4px">
</span>
<span style="margin-left:7px;font-size:16px;color:#0092FF;">工作经历</span>
</p>
<div class="workExperience-detail" v-for="(item,index) in roList" :key="index">
<div class="workExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startTime}}-{{item.endTime}}</span>
<span style="margin-left:18px"><span>{{item.company}}<span>({{item.workTime}})</span></span></span>
<span style="float:right;margin-right:30px">
<span>{{item.industry}}</span>
<span>{{item.companyType}}</span>
</span>
</p>
<p style="height:28px;line-height:28px;font-size:14px;">
<span style="float:right;margin-right:30px">{{item.department}}</span>
</p>
</div>
<div class="workExperience-bottom">{{item.desc}}</div>
</div>
</div>
<div class="projectExperience" v-show="rpList.length !==0 ">
<p class="detailTitel">
<span>
<img src="https://o7oe0d6qz.qnssl.com/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png" style="height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF">项目经历</span>
</p>
<div class="projectExperience-detail" v-for="(item,index) in rpList" :key="index">
<div class="projectExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startYear}}/{{item.startMonth}}-{{item.endYear}}/{{item.endMonth}}</span>
<span style="margin-left:18px"><span>{{item.name}}<span></span></span></span>
<span style="float:right;margin-right:30px">
<span>{{item.post}}</span>
</span>
</p>
</div>
<div class="projectExperience-bottom">{{item.desc}}</div>
</div>
</div>
<div class="internshipExperience" v-show="riList.length !==0 ">
<p class="detailTitel">
<span>
<img src="https://o7oe0d6qz.qnssl.com/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF">实习经历</span>
</p>
<div class="internshipExperience-detail" v-for="(item,index) in riList" :key="index">
<div class="internshipExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startYear}}/{{item.startMonth}}-{{item.endYear}}/{{item.endMonth}}</span>
<span style="margin-left:18px"><span>{{item.company}}<span></span></span></span>
<span style="float:right;margin-right:30px">
<span>{{item.industry}}</span>
<!-- <span>{{item.title}}</span> -->
</span>
</p>
<p style="height:28px;line-height:28px;font-size:14px;">
<span style="float:right;margin-right:30px">{{item.title}}</span>
</p>
</div>
<div class="internshipExperience-bottom">{{item.desc}}</div>
</div>
</div>
<div class="educationalExperience" v-show="reList.length !==0">
<p class="detailTitel">
<span>
<img src="https://o7oe0d6qz.qnssl.com/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF">教育经历</span>
</p>
<div class="educationalExperience-detail" v-for="(item,index) in reList" :key="index">
<div class="educationalExperience-content">
<div class="educationalExperience-left">
<p style="line-height:25px;margin-top:20px">{{item.school}}(({{item.startYear}}.{{item.startMonth}}-{{item.endYear}}.{{item.endMonth}}))</p>
<p style="margin-top:20px;">专业:{{item.major}}</p>
</div>
<div class="educationalExperience-right">
<p style="margin-top:65px">学历:{{item.degree}}</p>
</div>
</div>
</div>
</div>
<div class="Self-evaluation" v-show="JSON.stringify(resume)!=='{}'">
<p class="detailTitel">
<span>
<img src="https://o7oe0d6qz.qnssl.com/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF">自我评价</span>
</p>
<div class="evaluation-content">
{{resume&&resume.selfEvaluate}}
</div>
</div>
</div>
</template>
<script>
import {seedetail} from '../../api/resume.server'
import localStorage from '../../service/localstorage.service.js'
import {
sapi
}from '../../config'
export default {
data(){
return {
resume:{},
riList:[],
roList:[],
rpList:[],
reList:[],
downresume:'',
detialID:'',
showBtn:'',
}
},
methods: {
getDETAIL(){
this.detialID=this.$route.query.ID
this.showBtn=this.$route.query.noShowBtn
let token = this.$route.query.token || ''
let parmars={
uid:this.$route.query.id
// uid:"0646215721cc43ccb51ff3e979959e35"
}
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
})
},
},
mounted(){
this.getDETAIL()
}
}
</script>
<style scoped>
.resumeDetail{
width: 860px;
margin: 30px auto;
color: #000000;
font-family: "\5FAE\8F6F\96C5\9ED1"
}
.personalInformation{
width:860px;
/* height: 600px; */
float: left;
/* border: 1px solid black */
}
.bassMassage{
display: inline-block;
width: 400px;
float: left;
margin-left:30px;
font-size: 14px;
margin-top:20px
}
.bassMassageRight{
display: inline-block;
width: 400px;
float: left;
font-size: 14px;
margin-top:20px;
margin-left:20px
}
.massageTitle{
/* height: 300px; */
float: left;
}
.personalInformation-left{
width: 400px;
height:260px;
margin-left: 30px;
float: left;
font-size: 14px;
}
.personalInformation-left p{
line-height: 37px
}
.personalInformation-right{
width: 400px;
height:260px;
font-size: 14px;
float: left;
}
.personalInformation-right p{
line-height: 37px
}
.workExperience{
width: 860px;
float: left;
margin-top: 10px
}
.workExperience-detail{
width: 860px;
float: left;
margin-top: 20px;
}
.workExperience-top{
width: 860px;
height: 56px;
background: rgba(246,246,246,1);
}
.workExperience-bottom{
width:640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px;
}
.projectExperience{
width: 860px;
margin-top: 30px;
float: left;
}
.projectExperience-detail{
width: 860px;
float: left;
margin-top: 20px;
}
.projectExperience-top{
width: 860px;
height: 34px;
line-height: 34px;
background: rgba(246,246,246,1);
}
.projectExperience-bottom{
width:640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px
}
.internshipExperience{
width: 860px;
margin-top: 30px;
float: left;
}
.internshipExperience-detail{
width: 860px;
float: left;
margin-top: 20px;
}
.internshipExperience-top{
width: 860px;
height: 56px;
line-height: 34px;
background: rgba(246,246,246,1);
}
.internshipExperience-bottom{
width:640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px
}
.educationalExperience{
width: 860px;
float: left;
}
.educationalExperience-left{
width: 430px;
float: left;
margin-left: 30px;
font-size: 14px
}
.educationalExperience-right{
width: 380px;
float: left;
font-size: 14px
}
.Self-evaluation{
width: 860px;
float: left;
}
.evaluation-content{
width: 690px;
margin-left:30px;
float: left;
margin-top: 20px;
line-height: 30px;
margin-bottom: 40px
}
.detailTitel{
width: 860px;
height: 24px;
float: left;
margin-top: 20px;
/* border: 1px solid red */
}
</style>
<template>
<div class="resumeDetail">
<!-- <a href="http://172.21.10.43/group1/M00/00/08/oYYBAF1M9B6ACO58AADoAJ5PfGw173.doc">dsds</a> -->
<!-- <div class="pdfShow" v-show="isShowPdf==true">
<div id="container" style="width:100%;height:100%;" v-if="isShowPdf==true"></div>
</div> -->
<div class="resumeDetail-left" v-if="isShowPdf==false">
<div class="personalInformation" v-show="JSON.stringify(resume)!=='{}'">
<p class="detailTitel">
<span>
<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 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>
<div class="massageTitle">
<p>
......@@ -134,13 +139,198 @@
</div>
</div>
</div>
<div class="resumeDetail-right" v-show="this.showBtn!=1">
<div class="testResume">
<Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px;font-size:14px" :disabled="showOriginalDisabled" @click="showOriginal" v-if="resumeBTn==true" >原始简历</Button><br>
<Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 20px 15px;font-size:14px" :disabled="showStandardDisabled" @click="showStandard" v-if="resumeBTn==true">标准简历</Button><br>
<Button type="primary" size='small' style="width:150px;height:34px;margin:0 0 0 15px;font-size:14px" @click="downloadONE(detialID)" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</Button><br>
<Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px;font-size:14px" @click="transpond" >转发给面试官</Button><br>
<p style="margin-top:40px;font-size:16px">当前简历状态:<span style="color:#0092FF" >{{detailStatus[detailSta]}}</span></p>
<Button type="primary" size='small' style="width:150px;height:34px;margin:20px 0 0 15px;font-size:14px" @click="sendEmail" v-show="hasINterview==false">邀请面试</Button><br>
<Button type="primary" :disabled="todoDisabled" size='small' style="width:150px;height:34px;margin:20px 0 0 15px;font-size:14px" @click="todo" v-show="hasINterview==false">&nbsp;&nbsp;</Button><br>
<Button type="primary" :disabled="passDisabled" size='small' style="width:150px;height:34px;margin:20px 0 0 15px;font-size:14px" @click="pass" v-show="hasINterview==false">PASS</Button><br>
<Button type="primary" :disabled="optionDisabled" size='small' style="width:150px;height:34px;margin:20px 0 0 15px;font-size:14px" @click="option" v-show="hasINterview==false">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</Button><br>
</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 style="text-align:center">转发给面试官</h2>
<p class='hint' style="margin-top:10px;text-align:center">该通知将以微信形式发送给面试官,面试官可通过微信筛选简历</p>
</div>
<Form ref="transpondFrom" :model="transpondFrom" :rules="transpondRule" style="margin-top:10px">
<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'>
<img src='https://o7oe0d6qz.qnssl.com/resume.png'></img>
</div>
<span style='' class="name">{{contentName}}</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>
<!-- 发送失败再次发送 -->
<Modal
v-model="modal11"
width='350px'
:closable='false'>
<div >
<h2 style="text-align: center;color:black">提示</h2>
<p style="text-align:center;margin-top:10px;font-size: 14px;text-align:left;">{{errorInfo}}</p>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='cancelSubmit'>取消</Button>
<Button type='primary' @click="sendFail">确定</Button>
</div>
</Modal>
<Modal
v-model="modal12"
width='450px'
:closable='false'
:footer-hide='true'
:mask-closable='false'>
<div style="text-align:center">
<h2 style="text-align: center;color:black;font-size:16px">发送失败</h2>
<p style="text-align: center;color:black;margin-top:15px;font-size:15px">该面试官没有通过微信端绑定账号,请提醒他关注并绑定。</p>
<p style="text-align: center;color:#0092FF;margin-top:30px;font-size:15px;cursor:pointer;font-weight: 900" @click="modal12=false">我已知晓</p>
</div>
</Modal>
<Modal
v-model="modal13"
width='480px'
:closable='false'
:footer-hide='true'
:mask-closable='false'>
<div style="text-align:center">
<h2 style="text-align: center;color:black;font-size:16px">发送失败</h2>
<p style="text-align: center;color:black;margin-top:15px;font-size:15px">该面试官没有关注微信,无法接收通知,请提醒他关注并绑定。</p>
<p style="text-align: center;color:#0092FF;margin-top:30px;font-size:15px;cursor:pointer;font-weight: 900" @click="modal13=false">我已知晓</p>
</div>
</Modal>
</div>
</template>
<script>
import {seedetail} from '../../api/resume.server'
import moment from 'moment'
// import moment from '../../../static/1.pdf'
require('../../../static/pdf/pdf.js')
let mammoth = require("mammoth");
import {seedetail,updatastatus,TODORes,sendEmail,getEmailMoo,getEmailContent,uploadimage, findCompanyEmailByKey,forwardResume} from '../../api/resume.server'
import localStorage from '../../service/localstorage.service.js'
import {
sapi
}from '../../config'
import ckeditor from '../../components/ckeditor'
import{_debounce,_throttle,emailValidata, emailRule, vidte, validator} from '../../service/util.js'
export default {
data(){
return {
......@@ -149,14 +339,108 @@ export default {
roList:[],
rpList:[],
reList:[],
name:'',
detailSta:'',
emailMOdal:false,
tip: false,
loading1: false,
modal8:false,
modal10:false,
modal11:false,
modal12:false,
modal13:false,
boxIsShow:false,
resumeBTn:false,
isShowPdf:false,
showOriginalDisabled:true,
OriginalContent:'',
StandardContent:'',
showStandardDisabled:false,
errorMassage:'',
interviewee: [],
contentName:'',
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: [],
todoDisabled:false,
passDisabled:false,
optionDisabled:false,
editorObject: {type: '', value: ''},
tipInfo: '输入多个邮箱地址以英文”;“分隔',
fileList:[],
UpdateTIMETwo:'',
uploadFileList:[],
temp:'',
uploadurl:`${sapi}/api/ckeditor/uploadImage?token=${localStorage.get('token')}&&backUrl=/getimage`,
downresume:'',
detialID:'',
showBtn:'',
errorInfo:'',
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: {
getDETAIL(){
this.detialID=this.$route.query.ID
this.resumeIdList.push(this.$route.query.ID)
this.emailId=this.$route.query.ID
this.detailSta=this.$route.query.status
this.showBtn=this.$route.query.noShowBtn
let token = this.$route.query.token || ''
let parmars={
......@@ -168,50 +452,644 @@ export default {
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
})
},
// clearPDF: function (OriginalContent) {
// if(this.OriginalContent!==''){
// document.getElementById("container").innerHTML = "";
// }
// },
// // 渲染合同
// renderPDF: function (pdf, pageNumber,OriginalContent) {
// if(this.OriginalContent!==''){}
// pdf.getPage(pageNumber).then(function (page) {
// var scale = 1.5; //随意设置的
// var viewport = page.getViewport(scale);
// // Prepare canvas using PDF page dimensions
// // var canvas = document.getElementById('the-canvas');
// var canvas = document.createElement('canvas');
// canvas.setAttribute("id", "the-canvas-" + pageNumber);
// var element = document.getElementById("container");
// element.appendChild(canvas);
// var context = canvas.getContext('2d');
// canvas.height = viewport.height;
// canvas.width = viewport.width;
// // Render PDF page into canvas context
// var renderContext = {
// canvasContext: context,
// viewport: viewport
// };
// var renderTask = page.render(renderContext);
// renderTask.then(function () {
// });
// });
// },
// // 展示合同
// showPDF : function ( OriginalContent) {
// let vm = this
// if ( this.OriginalContent) {
// var obj = {
// // url: '../../static/test.pdf', // 得到的是数据时使用data属性
// data: this.OriginalContent,
// cMapUrl: 'https://cdn.jsdelivr.net/npm/pdfjs-dist@2.0.943/cmaps/',
// cMapPacked: true
// };
// PDFJS.workerSrc = '../../static/pdf/pdf.worker.js'
// var loadingTask = PDFJS.getDocument(obj);
// loadingTask.promise.then(function(pdf) {
// var total = pdf.numPages;
// for (var i = 0; i < total; i++) {
// var pageNumber = i + 1;
// // 如果你有node(vue ag...)环境,那么请用async/await替换掉
// setTimeout(vm.renderPDF(pdf, pageNumber), 10);
// }
// }, function (reason) {
// // PDF loading error
// console.error(reason);
// });
// }
// },
// getData(){
// let params = {
// uid:this.$route.query.id
// }
// getPdf(params).then(data => { // 调接口获取数据(二进制流数据)
// this.clearPDF();
// let vm =this
// var array = new Uint8Array(data.data);// 将二进制流数据转换成 Uint8Array (pdf支持的数据格式)
// this.OriginalContent=new Uint8Array(data.data);
// vm.showPDF(this.OriginalContent)
// })
// },
// 下载简历
downloadONE(doid){
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${doid}`
},
a(){
// 发送邮件
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=''
}
})
},
getfocus(form, name, e){
let vm = this;
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(){
this.limentName=0
},
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
}
},
clearInterviewee (value) {
this.interviewee = []
this.checkboxList = []
this.delateARRALL = []
this.flowStatusarr = []
},
sendNotice: _debounce( function() {
this.$refs.transpondFrom.validate(valid => {
if(!this.transpondFrom.interviewerName){
return
}
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.errorMassage=res.data.body.message
this.modal8=false
this.clearInterviewee()
if(this.errorCode=='40001'){
this.modal12=true
}
if(this.errorCode=='40002'){
this.modal13=true
}
if(this.errorCode=='0'){
this.$Notice.error({
title: '提示',
desc: this.errorMassage
})
}
}
})
})
},800),
transpond() { //打开转发简历的modal
this.$refs.transpondFrom.resetFields()
this.modal8= true
this.contentName=this.name
},
delInterviewee(name){
this.contentName=''
},
// showOriginal(){
// // this.addCss()
// // this.remove()
// // document.querySelector('#app').style['overflow-x']='hidden'
// this.showPDF()
// this.isShowPdf=true
// this.showOriginalDisabled=true
// this.showStandardDisabled=false
// },
// showStandard(){
// this.isShowPdf=false
// // this.addCss()
// // document.querySelector('#app').style['overflow-x']='hidden'
// this.clearPDF()
// this.showStandardDisabled=true
// this.showOriginalDisabled=false
// },
// judeShowPdf(){
// let parmars={
// uid:this.$route.query.id
// }
// isShowPDF(parmars).then(res=>{
// if(res.data.body==true){
// this.isShowPdf=true
// this.resumeBTn=true
// }else{
// this.isShowPdf=false
// this.resumeBTn=false
// }
// })
// },
// 确认发送邮件
confireSendEmail: _debounce(function(){
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.detailSta='HAS_SEE'
this.hasINterview=true
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
}
})
}
},800),
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
}
if(this.detailSta == 'TO_DO'){
this.todoDisabled=true
}
if(this.detailSta == 'PASS'){
this.passDisabled=true
}
if(this.detailSta == 'OPTION'){
this.optionDisabled=true
}
},
cancelSubmit(){
this.emailMOdal=false
this.modal11=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()
},
sendFail(){
this.modal11 = false
},
// 待处理
todo(){
let parmars={
id: this.detialID,
status:'TO_DO'
}
updatastatus(parmars).then(res=>{
this.detailSta='TO_DO'
this.todoDisabled=true
this.passDisabled=false
this.optionDisabled=false
})
},
// 备选
option(){
let parmars={
id: this.detialID,
status:'OPTION'
}
updatastatus(parmars).then(res=>{
this.detailSta='OPTION'
this.todoDisabled=false
this.passDisabled=false
this.optionDisabled=true
})
},
// PASS
pass(){
let parmars={
id: this.detialID,
status:'PASS'
}
updatastatus(parmars).then(res=>{
this.detailSta='PASS'
this.todoDisabled=false
this.passDisabled=true
this.optionDisabled=false
})
},
addCss(){
document.querySelector('#app').style['overflow-x']='hidden'
},
remove(){
document.querySelector('#app').style.removeProperty('overflow-x')
},
},
mounted(){
this.getDETAIL()
this.boxIsShow=true
this.judeBtn()
this.addCss()
// await this.getData()
// this.clearPDF()
// await this.judeShowPdf()
},
beforeDestroy(){
this.remove()
}
}
</script>
<style scoped>
.resumeDetail{
width: 860px;
width: 1150px;
margin: 30px auto;
color: #000000;
font-family: "\5FAE\8F6F\96C5\9ED1"
font-family: "\5FAE\8F6F\96C5\9ED1";
}
.resumeDetail-left{
float: left;
width:860px;
min-height: 200px;
/* border: 1px solid #999 */
}
.pdfShow{
float: left;
width:900px;
min-height: 1200px;
}
.pic img{
width: 60px;
height: 60px
}
.pic .icon{
position: relative;
left:100px;
top:-90px
}
.interviewee .name{
position: relative;
left: 13px;
top:-20px;
display: inline-block;
/* margin-left: 200px */
}
.resumeDetail-right{
float: right;
width: 230px;
}
.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{
width:860px;
/* height: 600px; */
float: left;
/* border: 1px solid black */
}
.bassMassage{
display: inline-block;
width: 322px;
width: 360px;
float: left;
margin-left:30px;
font-size: 14px;
margin-top:20px
margin-top:20px;
/* border:1px solid black; */
}
.bassMassageRight{
display: inline-block;
width: 322px;
width: 360px;
float: left;
font-size: 14px;
margin-top:20px;
margin-left:20px
margin-left:20px;
/* border:1px solid black; */
}
.testResume{
position: fixed;
/* float: left; */
top: 20%;
width: 200px;
/* border: 1px solid black; */
margin-left: 20px
}
/* .test{
position: relative;
left:900px;
top: 0
} */
.massageTitle{
/* height: 300px; */
float: left;
......
......@@ -6,6 +6,13 @@
<img :src="url" style="width:100%;height:100%">
</div>
<p class="xiazai" @click="downPic">下载</p>
<!-- <p style="margin-top:40px"><span>请点击&nbsp;</span>
<a href="http://192.168.28.10:7086/acceptInterview?isResufe=false"
style="text-decoration:none;width:100px;height:30px;background:#0092ff;color:white;display:inline-block; text-align: center;line-height:30px;border-radius:5px!important">接受面试安排</a>&nbsp;
<a href="http://192.168.28.10:7086/acceptInterview?isResufe=true"
style="text-decoration:none;width:100px;height:30px;display:inline-block; text-align: center;line-height:30px;border-radius:5px!important;border:1px solid #0092ff;">拒绝面试安排</a>&nbsp;
<span>将您的反馈告知我们。</span>
</p> -->
</div>
</template>
<script>
......
......@@ -11,12 +11,12 @@
:class="['prefixCls' + '-input']"
@change="handleChange"
:multiple="true"
:format="['html','doc','pdf','txt','docx']"
:format="['pdf','doc','docx']"
:accept="accept"
>
<Button @click='selFiles' style='width:20%;margin-top:40px;margin-left:-4px;color:black'>选择文件</Button>
<div class='contentTips'>
<p style="font-size:12px;margin-left:3.5%;text-align:center;height:40px;line-height:40px;width:90%;display:inline-block;margin-top:30px">单个文件不能大于2MB,支持html,doc,docx,txt,pdf等格式,暂时不支持压缩格式</p>
<p style="font-size:12px;margin-left:5%;text-align:center;height:40px;line-height:40px;width:90%;display:inline-block;margin-top:30px">单个文件不能大于2MB,仅支持word,pdf格式,暂时不支持压缩格式</p>
<p style="font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%">支持最多二十份简历批量上传</p>
</div>
<Button @click='uploadBtn' style='width:20%;margin-left:38%;margin-top:30px' type='primary'>上传</Button>
......@@ -52,7 +52,7 @@
</Modal>
</div>
<div class="leftcontrentFotter">
<h5 style="width:100%;height:7%;background:rgb(0,176,160);text-align:center;line-height:40px;color:white;font-size:15px;font-weight:bold">上传记录</h5>
<h5 style="width:100%;height:40px;background:rgb(0,176,160);text-align:center;line-height:40px;color:white;font-size:15px;font-weight:bold">上传记录</h5>
<div style="width:100%;background:rgb(0,176,160); opacity: 0.7;overflow-y:auto;height:93%;">
<!-- <div style="width:100%;height:10px;background:rgb(0,176,160)"></div> -->
<div class="contentMASSAGE" v-for="(item,index) in ajaxData" :key="index">
......@@ -227,7 +227,7 @@ import {uploadFile} from '../../service/ajax'
filetile:'上传中请稍后...',
totalSize:null,
uploadModal: false,
accept: '.html,.doc,.docx,.txt,.pdf',
accept: '.doc,.docx,.pdf',
fileSize:2048,
progressStatus: {
'0': 'active',
......@@ -399,8 +399,8 @@ import {uploadFile} from '../../service/ajax'
},
// 获取上传批次号
getnumber(){
getuploadNumber().then(res=>{
this.batchNum=res.data.body
return getuploadNumber().then(res=>{
this.batchNum= res.data.body
})
},
//改变页码
......@@ -479,9 +479,9 @@ import {uploadFile} from '../../service/ajax'
})
},
},
mounted(){
this.getnumber()
this. serchlist()
async mounted(){
await this.getnumber()
this.serchlist()
}
}
</script>
......
......@@ -6,6 +6,7 @@ const home = r => require.ensure([], () => r(require('@/components/home.vue')),
const login = r => require.ensure([], () => r(require('@/page/login/login.vue')), 'login');
const update = r => require.ensure([], () => r(require('@/page/login/update.vue')), 'update');
const resumeDetail = r =>require.ensure([], () => r(require('@/page/resume/resumeDetail.vue')),'resumeDetail')
const pdfdetail = r =>require.ensure([], () => r(require('@/page/resume/pdfdetail.vue')),'pdfdetail')
const interview = r => require.ensure([], () => r(require('@/page/interview/interview.vue')), 'interview');
const allResume = r => require.ensure([], () => r(require('@/page/resume/allResume.vue')), 'allResume');
const channel = r => require.ensure([], () => r(require('@/page/resume/channel.vue')), 'channel');
......@@ -16,7 +17,6 @@ const upload = r => require.ensure([], () => r(require('@/page/upload/upload.vue
const sweepCode = r => require.ensure([], () => r(require('@/page/sweepCode/sweepCode.vue')), 'sweepCode');
const editor = r => require.ensure([], () => r(require('@/components/editor.vue')), 'editor');
const getimage = r => require.ensure([], () => r(require('@/components/getimage.vue')), 'getimage');
//z注释
Vue.use(Router);
......@@ -54,6 +54,10 @@ export default new Router({
path: '/resumeDetail',
name: 'resumeDetail',
component: resumeDetail
},{
path: '/pdfdetail',
name: 'pdfdetail',
component: pdfdetail
},
{
path: '/editor',
......
......@@ -6,7 +6,7 @@ export default{
if (to.meta && !to.meta.allowBack && window.history && window.history.pushState) { //登录页面不能后退
history.pushState(null, null, document.URL)
}
if (to.name =='login' || to.name =='update' || to.name =='sweepCode'|| to.name== 'resumeDetail'){
if (to.name =='login' || to.name =='update' || to.name =='sweepCode'|| to.name== 'resumeDetail'|| to.name== 'pdfdetail'){
next()
return
}
......
......@@ -20,7 +20,6 @@ export function _throttle (fn, interval) {
let last = null
let timer = null
interval = interval || 200
return function () {
let self = this
let args = arguments
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
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