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 @@ ...@@ -309,7 +309,6 @@
"version": "1.0.10", "version": "1.0.10",
"resolved": "http://npmprivate.quantgroups.com/argparse/-/argparse-1.0.10.tgz", "resolved": "http://npmprivate.quantgroups.com/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": { "requires": {
"sprintf-js": "~1.0.2" "sprintf-js": "~1.0.2"
} }
...@@ -3248,6 +3247,21 @@ ...@@ -3248,6 +3247,21 @@
"domelementtype": "1" "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": { "duplexer": {
"version": "0.1.1", "version": "0.1.1",
"resolved": "http://npmprivate.quantgroups.com/duplexer/-/duplexer-0.1.1.tgz", "resolved": "http://npmprivate.quantgroups.com/duplexer/-/duplexer-0.1.1.tgz",
...@@ -6055,6 +6069,21 @@ ...@@ -6055,6 +6069,21 @@
"verror": "1.10.0" "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": { "killable": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/killable/-/killable-1.0.1.tgz", "resolved": "http://npmprivate.quantgroups.com/killable/-/killable-1.0.1.tgz",
...@@ -6352,6 +6381,23 @@ ...@@ -6352,6 +6381,23 @@
"js-tokens": "^3.0.0 || ^4.0.0" "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": { "loud-rejection": {
"version": "1.6.0", "version": "1.6.0",
"resolved": "http://npmprivate.quantgroups.com/loud-rejection/-/loud-rejection-1.6.0.tgz", "resolved": "http://npmprivate.quantgroups.com/loud-rejection/-/loud-rejection-1.6.0.tgz",
...@@ -6387,6 +6433,33 @@ ...@@ -6387,6 +6433,33 @@
"pify": "^3.0.0" "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": { "map-cache": {
"version": "0.2.2", "version": "0.2.2",
"resolved": "http://npmprivate.quantgroups.com/map-cache/-/map-cache-0.2.2.tgz", "resolved": "http://npmprivate.quantgroups.com/map-cache/-/map-cache-0.2.2.tgz",
...@@ -7452,6 +7525,11 @@ ...@@ -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": { "optionator": {
"version": "0.8.2", "version": "0.8.2",
"resolved": "http://npmprivate.quantgroups.com/optionator/-/optionator-0.8.2.tgz", "resolved": "http://npmprivate.quantgroups.com/optionator/-/optionator-0.8.2.tgz",
...@@ -7634,8 +7712,7 @@ ...@@ -7634,8 +7712,7 @@
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "resolved": "http://npmprivate.quantgroups.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
"dev": true
}, },
"path-is-inside": { "path-is-inside": {
"version": "1.0.2", "version": "1.0.2",
...@@ -9555,8 +9632,7 @@ ...@@ -9555,8 +9632,7 @@
"sprintf-js": { "sprintf-js": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "http://npmprivate.quantgroups.com/sprintf-js/-/sprintf-js-1.0.3.tgz", "resolved": "http://npmprivate.quantgroups.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
"dev": true
}, },
"sshpk": { "sshpk": {
"version": "1.16.1", "version": "1.16.1",
...@@ -10060,6 +10136,11 @@ ...@@ -10060,6 +10136,11 @@
"integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
"dev": true "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": { "union-value": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "http://npmprivate.quantgroups.com/union-value/-/union-value-1.0.1.tgz", "resolved": "http://npmprivate.quantgroups.com/union-value/-/union-value-1.0.1.tgz",
...@@ -11032,6 +11113,11 @@ ...@@ -11032,6 +11113,11 @@
"safe-buffer": "~5.1.0" "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": { "xtend": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "http://npmprivate.quantgroups.com/xtend/-/xtend-4.0.1.tgz", "resolved": "http://npmprivate.quantgroups.com/xtend/-/xtend-4.0.1.tgz",
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
"js-cookie": "^2.2.0", "js-cookie": "^2.2.0",
"less": "^3.9.0", "less": "^3.9.0",
"less-loader": "^5.0.0", "less-loader": "^5.0.0",
"mammoth": "^1.4.8",
"moment": "^2.24.0", "moment": "^2.24.0",
"qs": "^6.7.0", "qs": "^6.7.0",
"vue": "^2.5.2", "vue": "^2.5.2",
......
...@@ -46,7 +46,9 @@ export default { ...@@ -46,7 +46,9 @@ export default {
-khtml-user-select: text !important; /*早期浏览器*/ -khtml-user-select: text !important; /*早期浏览器*/
-moz-user-select: text !important; /*火狐*/ -moz-user-select: text !important; /*火狐*/
-ms-user-select: text !important; /*IE10*/ -ms-user-select: text !important; /*IE10*/
user-select: text !important; user-select: text !important;
} }
.pc { .pc {
height: 100%; height: 100%;
...@@ -57,7 +59,29 @@ export default { ...@@ -57,7 +59,29 @@ export default {
min-width: unset; min-width: unset;
min-height: unset; min-height: unset;
} }
.ivu-btn-primary{ ::-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 background: #0092FF!important
} } */
</style> </style>
...@@ -131,4 +131,18 @@ export function forwardResume(params) { ...@@ -131,4 +131,18 @@ export function forwardResume(params) {
'Content-Type':'application/json' '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 @@ ...@@ -28,7 +28,7 @@
<span style="display:inline-block;line-height:6%;margin-left:30%;">{{massage}}</span> <span style="display:inline-block;line-height:6%;margin-left:30%;">{{massage}}</span>
</Col> </Col>
<Col span="1" class="sign-out" > <Col span="1" class="sign-out" >
<a @click="loginOut" style="margin-left:38%">退出</a> <a @click="loginOut" style="float:right">退出</a>
</Col> </Col>
</Row> </Row>
<Row style="height:94%"> <Row style="height:94%">
......
...@@ -12,15 +12,15 @@ ...@@ -12,15 +12,15 @@
<div class="leftcontentContent" v-for="(item,index) in Essentialinformation " :key='index'> <div class="leftcontentContent" v-for="(item,index) in Essentialinformation " :key='index'>
<div class="contentMassage"> <div class="contentMassage">
<p style="margin-top:7px"> <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 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)" 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;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 @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:35px;cursor:pointer" @click="updateInterview(item.id,item.interviewerName,item.seeTime,item.inviterName)">更改约面信息</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>
<p style="margin-top:8px;color:Grey"> <p style="margin-top:8px;color:Grey">
<span style="margin-left:10px;display:inline-block;width:22%;">邀约人: {{item.inviterName}} </span> <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="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> </p>
</div> </div>
<div class="contentState"> <div class="contentState">
...@@ -260,6 +260,7 @@ export default { ...@@ -260,6 +260,7 @@ export default {
modal3:false, modal3:false,
modal4:false, modal4:false,
modal5:false, modal5:false,
interdeTailSta:"",
changestatuss:'', changestatuss:'',
spinShow:true, spinShow:true,
Ishow:[], Ishow:[],
...@@ -547,55 +548,55 @@ export default { ...@@ -547,55 +548,55 @@ export default {
if(e.target.value==1){ if(e.target.value==1){
this.changestatusSTATUS='HAS_SEE' this.changestatusSTATUS='HAS_SEE'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==2){ if(e.target.value==2){
this.changestatusSTATUS='HAS_SEE' this.changestatusSTATUS='HAS_SEE'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==3){ if(e.target.value==3){
this.changestatusSTATUS='SEE_FAIL' this.changestatusSTATUS='SEE_FAIL'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==4){ if(e.target.value==4){
this.changestatusSTATUS='INTERVIEW_FAIL' this.changestatusSTATUS='INTERVIEW_FAIL'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==5){ if(e.target.value==5){
this.changestatusSTATUS='TO_SENT_OFFER' this.changestatusSTATUS='TO_SENT_OFFER'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==6){ if(e.target.value==6){
this.changestatusSTATUS='HAS_SENT_OFFER' this.changestatusSTATUS='HAS_SENT_OFFER'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==7){ if(e.target.value==7){
this.changestatusSTATUS='TO_ENTRY' this.changestatusSTATUS='TO_ENTRY'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==8){ if(e.target.value==8){
this.changestatusSTATUS='NO_ENTRY' this.changestatusSTATUS='NO_ENTRY'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
if(e.target.value==9){ if(e.target.value==9){
this.changestatusSTATUS='HAS_ENTRY' this.changestatusSTATUS='HAS_ENTRY'
changestatus(SID, this.changestatusSTATUS).then(res=>{ changestatus(SID, this.changestatusSTATUS).then(res=>{
this.Sousuo(this.pageT) this.serchListInterview(this.pageT,'init')
}) })
} }
this.statusValue = '0' this.statusValue = '0'
...@@ -638,13 +639,14 @@ export default { ...@@ -638,13 +639,14 @@ export default {
this.searchInfo.STA.remove(tItem) this.searchInfo.STA.remove(tItem)
} }
}, },
Seedetail(Tid,Uid){ Seedetail(Tid,Uid,sta){
this.DOWNID=Uid this.DOWNID=Uid
this.detailID=Tid this.detailID=Tid
this.interdeTailSta=sta
let newpage = this.$router.resolve({ let newpage = this.$router.resolve({
name: 'resumeDetail', name: 'resumeDetail',
params:{}, params:{},
query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID} query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID,status:this.interdeTailSta}
}) })
window.open(newpage.href, '_blank'); window.open(newpage.href, '_blank');
}, },
...@@ -766,6 +768,7 @@ font-size: 14px; ...@@ -766,6 +768,7 @@ font-size: 14px;
width:100%; width:100%;
background:#EDEDED; background:#EDEDED;
overflow: hidden; overflow: hidden;
min-width: 1200px;
} }
.interview-left{ .interview-left{
height:100%; height:100%;
......
...@@ -39,9 +39,9 @@ ...@@ -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: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 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> -->
<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;"> <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: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%;width:50px" @click="delateAll">删除</Button>
<Button type="primary" size="small" style="margin-left:2%;" @click="transpond"> <Button type="primary" size="small" style="margin-left:2%;" @click="transpond">
...@@ -55,18 +55,18 @@ ...@@ -55,18 +55,18 @@
<!-- <div style="float:left;margin-left:1%;width:99%;overflow-y: auto;height:600px;margin-bottom:40px"> --> <!-- <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="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}"> <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;'> <p style='margin-left: 10px;padding-top:10px'>
<span style="display:inline-block;height:100%;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px;" class='inputcheck'> <span style="display:inline-block;height:100%;margin-top: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"> <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>
<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 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 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 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 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 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 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 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 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 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 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 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 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 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 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;width:25%;float:right;text-align:right;margin-right:10px;margin-top:5px">
<span style="margin-right:20px;margin-top:5px" v-if="item.flowStatus=='INTERVIEW_OK'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">面试合适</span></span> <span style="margin-right:20px;margin-top:5px" v-if="item.flowStatus=='INTERVIEW_OK'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">面试合适</span></span>
<span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span> <span style="margin-right:20px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span>
<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> <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 @@ ...@@ -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=='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=='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: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: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=='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=='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=='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=='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="margin-right:0px;margin-top:5px" v-else-if="item.flowStatus=='PASS'||item.flowStatus=='TO_DO'||item.flowStatus=='TO_SEE'||item.flowStatus=='OPTION'" >
<span style="cursor:pointer" > <select name="1" id="a" style="margin-right:0px;cursor:pointer" v-model="item.flowStatus" @change="changeFlowstatus($event,item.id,item.flowStatus,item.originValue)">
<select name="2" id="2" @change="selectFn4($event,item.id,item.flowStatus)" class='status' > <option value="TO_DO">待处理</option>
<option value="1">PASS</option> <option value="PASS">PASS</option>
<option value="2">邀请面试</option> <option value="TO_SEE">邀请面试</option>
<option value="3">备选</option> <option value="OPTION">备选</option>
<option value="4">待处理</option> </select>
</select>
</span>
</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' > <span class='record'><Icon type="md-download" @click="downloadONE(item.id)" style="font-size:17px;cursor:pointer;color:#0092FF"/></span>
<option value="1">待处理</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SEE'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<option value="2">pass</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SEE'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<option value="3">邀请面试</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='SEE_FAIL'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
<option value="4">备选</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='INTERVIEW_FAIL'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></span>
</select> <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-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_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:17px;cursor:pointer"/></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_ENTRY'" @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:15px;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=='SEE_FAIL'" @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:17px;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=='END'" @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: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:17px;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=='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=='HAS_ENTRY'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></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=='ARRIVED'" @click="undelate" style="color:#b5b5b5;font-size:15px;cursor:pointer"/></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='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='recordtext' @click="RecordSEE(item.id,item.ownerName)" style="color:#0092FF;cursor:pointer">记录</span> <span class='recordtext' @click="RecordSEE(item.id,item.ownerName)" style="color:#0092FF;cursor:pointer">记录</span>
</span> </span>
</p> </p>
<p style="margin-top:5px;color:Greys;padding-left:10px;"> <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: 14px;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: 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: 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: 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: 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: 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: 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: 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: 12px;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.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: 14px;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;float:right;text-align:right;margin-right:10px;color:Grey">
<span>{{item.modifyTime}}</span> <span>{{item.modifyTime}}</span>
<span >最后操作人:{{item.d}}</span> <span >最后操作人:{{item.d}}</span>
</span> </span>
...@@ -208,35 +180,6 @@ ...@@ -208,35 +180,6 @@
<Button type="primary" size='small' @click="modal1=false">关闭</Button> <Button type="primary" size='small' @click="modal1=false">关闭</Button>
</div> </div>
</Modal> </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 <Modal
v-model="modal3" v-model="modal3"
...@@ -370,7 +313,7 @@ ...@@ -370,7 +313,7 @@
<Button type='primary' @click='emailModalPush'>取消</Button> <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==false">发送</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==true">添加并发送</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> </div>
</Modal> </Modal>
<Modal <Modal
...@@ -484,6 +427,7 @@ import {mapState} from 'vuex' ...@@ -484,6 +427,7 @@ import {mapState} from 'vuex'
tipInfo: '输入多个邮箱地址以英文”;“分隔', tipInfo: '输入多个邮箱地址以英文”;“分隔',
sad:'', sad:'',
loading1: false, loading1: false,
selectElementValue:'',
options: [], options: [],
editorObject: {type: '', value: ''}, editorObject: {type: '', value: ''},
ruleInline: { ruleInline: {
...@@ -508,6 +452,7 @@ import {mapState} from 'vuex' ...@@ -508,6 +452,7 @@ import {mapState} from 'vuex'
UpdateVIEW:'', UpdateVIEW:'',
sendWeixin: true sendWeixin: true
}, },
resumeDetailSta:'',
emailInline:{ emailInline:{
moo:'', moo:'',
modalArr:[], modalArr:[],
...@@ -526,6 +471,7 @@ import {mapState} from 'vuex' ...@@ -526,6 +471,7 @@ import {mapState} from 'vuex'
selectFn3STA:'', selectFn3STA:'',
selectFn4STA:'', selectFn4STA:'',
limentName:0, limentName:0,
errorMassage:'',
errorCode:'', errorCode:'',
emailMassage:false, emailMassage:false,
allEmailVilitor:false, allEmailVilitor:false,
...@@ -548,6 +494,7 @@ import {mapState} from 'vuex' ...@@ -548,6 +494,7 @@ import {mapState} from 'vuex'
attachFileList:[], attachFileList:[],
flowStatusTT:'', flowStatusTT:'',
emailCode:'', emailCode:'',
resumePushId:'',
modal1:false, modal1:false,
modal2:false, modal2:false,
modal3:false, modal3:false,
...@@ -651,18 +598,9 @@ import {mapState} from 'vuex' ...@@ -651,18 +598,9 @@ import {mapState} from 'vuex'
watch: { watch: {
checkboxList: { checkboxList: {
handler: function (val, oldVal) { handler: function (val, oldVal) {
if(this.delateARRALL.length==30 || (this.ajaxData.length!=0&&this.checkboxList.length === this.ajaxData.length)){ if(this.delateARRALL.length==30 || (this.ajaxData.length!=0&&this.checkboxList.length === this.ajaxData.length)){
this.checked=true this.checked=true
} }
// if(this.delateARRALL.length!==30){
// this.checked=false
// return
// }
// if(this.ajaxData.length==0){
// this.checked=false
// return
// }
else { else {
this.checked=false; this.checked=false;
} }
...@@ -715,44 +653,51 @@ import {mapState} from 'vuex' ...@@ -715,44 +653,51 @@ import {mapState} from 'vuex'
}) })
}, },
//操作处理面试状态 //操作处理面试状态
selectFn1(e,SID,itemsta) { changeFlowstatus(e,SID,itemsta,orsta){
this.toseeid=SID this.toseeid=SID
this.emailId=SID this.emailId=SID
this.emailIdArr=[] this.emailIdArr=[]
this.emailIdArr.push(SID) this.emailIdArr.push(SID)
this.isShowTwo=true this.isShowTwo=true
this.ITEMSTA=itemsta this.ITEMSTA=itemsta
// this.selectFn1STA=e.target.value if(e.target.value=='TO_SEE'){
// 准备约面 this.emailFlowStatus='TO_SEE'
if(e.target.value==3){
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true this.isShowTwo=true
this.sendEmail() this.sendEmail('',orsta,SID)
} }
// 简历PASS if(e.target.value=='PASS'){
if(e.target.value==2){ let parmars={
let parmars={ status:"PASS",
status:"PASS", id:SID,
id:SID, }
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT,'init')
} }
PASS(parmars).then(res=>{ })
if(res.data.success==true){ }
this.SouSuo(this.pageT) if(e.target.value=='OPTION'){
} let parmars={
}) status:"OPTION",
} id:SID,
// 简历备选 }
if(e.target.value==4){ OPTION(parmars).then(res=>{
let parmars={ if(res.data.success==true){
status:"OPTION", this.SouSuo(this.pageT,'init')
id:SID,
} }
OPTION(parmars).then(res=>{ })
if(res.data.success==true){ }
this.SouSuo(this.pageT) 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')
}
})
}
}, },
addINTERVIEW(){ addINTERVIEW(){
let parmars={ let parmars={
...@@ -782,200 +727,6 @@ import {mapState} from 'vuex' ...@@ -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){ selectElement1(tItem,Tindex){
this.searchInfo.SEX=Tindex==0?'':tItem; this.searchInfo.SEX=Tindex==0?'':tItem;
...@@ -1075,6 +826,8 @@ import {mapState} from 'vuex' ...@@ -1075,6 +826,8 @@ import {mapState} from 'vuex'
item.isShow=false item.isShow=false
item.modifier=item.modifier item.modifier=item.modifier
item.uid=item.uid item.uid=item.uid
item.originValue=item.flowStatus
item.hasRead=item.hasRead
item.c=item.modifier==''?item.modifier:item.modifier.split('_') item.c=item.modifier==''?item.modifier:item.modifier.split('_')
item.d=item.c[0] item.d=item.c[0]
return item return item
...@@ -1151,16 +904,19 @@ import {mapState} from 'vuex' ...@@ -1151,16 +904,19 @@ import {mapState} from 'vuex'
} }
}, },
//查看简历详情 //查看简历详情
Seedetail(Tid,Uid){ Seedetail(Tid,Uid,STATUS){
this.SouSuo(this.pageT)
this.DOWNID=Uid this.DOWNID=Uid
this.detailID=Tid this.detailID=Tid
this.resumeDetailSta=STATUS
let newpage = this.$router.resolve({ let newpage = this.$router.resolve({
name: 'resumeDetail', name: 'resumeDetail',
params:{}, params:{},
query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID} query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID,status:this.resumeDetailSta}
}) })
window.open(newpage.href, '_blank'); window.open(newpage.href, '_blank');
}, },
//下载单条简历 //下载单条简历
downloadONE(downID){ downloadONE(downID){
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${downID}` window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${downID}`
...@@ -1365,7 +1121,10 @@ import {mapState} from 'vuex' ...@@ -1365,7 +1121,10 @@ import {mapState} from 'vuex'
this.ajaxData[index].isShow=false 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) { if(this.checkboxList.length == 0&&type) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: '提示',
...@@ -1507,8 +1266,12 @@ import {mapState} from 'vuex' ...@@ -1507,8 +1266,12 @@ import {mapState} from 'vuex'
this.isShowTwo=false this.isShowTwo=false
this.isLimitSize=false this.isLimitSize=false
this.uploadFileList=[] this.uploadFileList=[]
this.clearInterviewee() // this.clearInterviewee()
this.SouSuo(this.pageT,'init') this.ajaxData.map(item=>{
if(item.id==this.resumePushId){
item.flowStatus=item.originValue
}
})
}, },
getEditorValue(value){ // 调编辑器组件方法获取数据 getEditorValue(value){ // 调编辑器组件方法获取数据
return this.$refs.editor.getValue() return this.$refs.editor.getValue()
...@@ -1518,7 +1281,7 @@ import {mapState} from 'vuex' ...@@ -1518,7 +1281,7 @@ import {mapState} from 'vuex'
this.uploadFileList.splice(index,1) this.uploadFileList.splice(index,1)
}, },
// 确认发送邮件 // 确认发送邮件
confireSendEmail(){ confireSendEmail:_debounce(function(){
this.sad = this.getEditorValue() this.sad = this.getEditorValue()
if(this.sad==''){ if(this.sad==''){
this.$Notice.error({ this.$Notice.error({
...@@ -1694,7 +1457,7 @@ import {mapState} from 'vuex' ...@@ -1694,7 +1457,7 @@ import {mapState} from 'vuex'
} }
}) })
} }
}, },800),
removeInterviewee (value) { removeInterviewee (value) {
this.interviewee.map((item, index) => { this.interviewee.map((item, index) => {
if (value&&item.id == value.id) { if (value&&item.id == value.id) {
...@@ -1750,7 +1513,7 @@ import {mapState} from 'vuex' ...@@ -1750,7 +1513,7 @@ import {mapState} from 'vuex'
} }
}) })
}, },
sendNotice() { sendNotice:_debounce(function() {
this.$refs.transpondFrom.validate(valid => { this.$refs.transpondFrom.validate(valid => {
if(!this.transpondFrom.interviewerName){ if(!this.transpondFrom.interviewerName){
return return
...@@ -1777,8 +1540,10 @@ import {mapState} from 'vuex' ...@@ -1777,8 +1540,10 @@ import {mapState} from 'vuex'
desc: '发送成功' desc: '发送成功'
}) })
}, 300) }, 300)
this.SouSuo(this.pageT)
} else{ } else{
this.errorCode=res.data.body.code this.errorCode=res.data.body.code
this.errorMassage=res.data.body.message
this.modal8=false this.modal8=false
this.clearInterviewee() this.clearInterviewee()
if(this.errorCode=='40001'){ if(this.errorCode=='40001'){
...@@ -1787,6 +1552,12 @@ import {mapState} from 'vuex' ...@@ -1787,6 +1552,12 @@ import {mapState} from 'vuex'
if(this.errorCode=='40002'){ if(this.errorCode=='40002'){
this.modal13=true this.modal13=true
} }
if(this.errorCode=='0'){
this.$Notice.error({
title: '提示',
desc: this.errorMassage
})
}
// setTimeout(() => { // setTimeout(() => {
// this.$Notice.error({ // this.$Notice.error({
// title: '提示', // title: '提示',
...@@ -1798,7 +1569,7 @@ import {mapState} from 'vuex' ...@@ -1798,7 +1569,7 @@ import {mapState} from 'vuex'
} }
}) })
}) })
}, },800),
remoteMethod: async function(query){ remoteMethod: async function(query){
if (query !== '') { if (query !== '') {
this.loading1 = true; this.loading1 = true;
...@@ -1949,14 +1720,24 @@ import {mapState} from 'vuex' ...@@ -1949,14 +1720,24 @@ import {mapState} from 'vuex'
} }
}, },
mounted(){ mounted(){
this.SouSuo(null, 'init') this.SouSuo(null, 'init')
document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden;
if(isHidden){
document.title = '思坦途'
} else {
document.title = '思坦途'
this.SouSuo(this.pageT, 'init')
}
})
} }
} }
</script> </script>
<style scoped lang='less'> <style scoped lang='less'>
.allResume{ .allResume{
width: 100%; width: 100%;
height:100% height:100%;
font-family: "\5FAE\8F6F\96C5\9ED1";
} }
.bar{ .bar{
display:flex; display:flex;
...@@ -1981,10 +1762,11 @@ import {mapState} from 'vuex' ...@@ -1981,10 +1762,11 @@ import {mapState} from 'vuex'
overflow: hidden; overflow: hidden;
width: 70.5%; width: 70.5%;
float: left; float: left;
// margin-left: 4px;
position:relative; position:relative;
} }
.red{ .red{
background: LightGray background: LightGray!important
} }
.resumeRightContentTop{ .resumeRightContentTop{
width: 100%; width: 100%;
...@@ -2001,6 +1783,20 @@ import {mapState} from 'vuex' ...@@ -2001,6 +1783,20 @@ import {mapState} from 'vuex'
.Recode span{ .Recode span{
margin-left:20px 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::-ms-expand{display:none;}
select{ select{
appearance:none; appearance:none;
...@@ -2062,10 +1858,11 @@ import {mapState} from 'vuex' ...@@ -2062,10 +1858,11 @@ import {mapState} from 'vuex'
} }
.detailResume{ .detailResume{
width:100%; width:100%;
height:60px; height:80px;
} }
.grey{ .grey{
background:rgba(241,241,241,1); background: #f9f9f9;
margin-left:3px
} }
.emailModal-title{ .emailModal-title{
height: 280px; height: 280px;
......
...@@ -38,9 +38,9 @@ ...@@ -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: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 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>
<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;"> <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: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%;width:50px" @click="delateAll">删除</Button>
<Button type="primary" size="small" style="margin-left:2%;" @click="transpond"> <Button type="primary" size="small" style="margin-left:2%;" @click="transpond">
...@@ -53,17 +53,17 @@ ...@@ -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 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="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}" > <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'> <span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px" class='inputcheck'>
<input type='checkbox' name='checkboxinput' style="cursor:pointer" class='input-checkbox' v-model='checkboxList' :value="item.id" @click="selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"></span> <input type='checkbox' name='checkboxinput' style="cursor:pointer" class='input-checkbox' v-model='checkboxList' :value="item.id" @click="selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"></span>
<span style="display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer" @click="Seedetail(item.id,item.uid)">{{item.ownerName}} |</span> <span style="display:inline-block;height:100%;font-size: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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;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-if="item.flowStatus=='INTERVIEW_OK'" class='status'><Icon type="ios-radio-button-on" style="color:#43CD80" /><span style="margin-left:10px">面试合适</span></span>
<span style="margin-right:30px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span> <span style="margin-right:30px;margin-top:5px" v-else-if="item.flowStatus=='INTERVIEW_FAIL'" class='status'><Icon type="ios-radio-button-on" style="color:red" /><span style="margin-left:10px" >面试淘汰</span></span>
<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> <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 @@ ...@@ -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=='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=='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=='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="margin-right:0px;margin-top:5px" v-else-if="item.flowStatus=='PASS'||item.flowStatus=='TO_DO'||item.flowStatus=='TO_SEE'||item.flowStatus=='OPTION'" >
<span style="text-align:left;cursor:pointer" > <select name="1" id="a" style="margin-right:10px;cursor:pointer" v-model="item.flowStatus" @change="changeFlowstatus($event,item.id,item.flowStatus,item.originValue)">
<select name="3" id="3" @change="selectFn2($event,item.id)" style="height:18px;text-align:center;margin-top:5px"> <option value="TO_DO">待处理</option>
<option value="1">邀请面试</option> <option value="PASS">PASS</option>
<option value="2">备选</option> <option value="TO_SEE">邀请面试</option>
<option value="3">PASS</option> <option value="OPTION">备选</option>
<option value="4">待处理</option> </select>
</select>
</span>
</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: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=='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=='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=='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=='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='record'><Icon type="md-download" @click="downloadONE(item.id)" style="font-size:17px;cursor:pointer;color:#0092FF"/></span>
<span class='status'> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_SEE'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<select name="2" id="2" @change="selectFn4($event,item.id)" style="height:18px;text-align:center;margin-top:5px;cursor:pointer"> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='HAS_SEE'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<option value="1">PASS</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='SEE_FAIL'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<option value="2">邀请面试</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='INTERVIEW_FAIL'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<option value="3">备选</option> <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>
<option value="4">待处理</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='TO_ENTRY'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
</select> <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> <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> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='END'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></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'> <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>
<option value="1">待处理</option> <span class='record'><Icon type="md-trash" v-if="item.flowStatus=='ARRIVED'" @click="undelate" style="color:#b5b5b5;cursor:pointer;font-size:17px"/></span>
<option value="2">pass</option> <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>
<option value="3">邀请面试</option> <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>
<option value="4">备选</option> <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>
</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 @click="RecordSEE(item.id,item.ownerName)" style=";cursor:pointer;color:#2d8cf0;" class='recordtext'>记录</span> <span @click="RecordSEE(item.id,item.ownerName)" style=";cursor:pointer;color:#2d8cf0;" class='recordtext'>记录</span>
</span> </span>
</p> </p>
<p style="margin-top:10px;color:Grey;padding-left:10px;" class='info'> <p style="margin-top:0px;color:Greys;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: 14px;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: 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: 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: 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: 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: 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: 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: 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: 12px;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.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: 14px;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;float:right;text-align:right;margin-right:10px;color:Grey">
<span>{{item.modifyTime}}</span> <span>{{item.modifyTime}}</span>
<span>最后操作人:{{item.d}}</span> <span >最后操作人:{{item.d}}</span>
</span> </span>
</p> </p>
</div> </div>
...@@ -205,35 +177,6 @@ ...@@ -205,35 +177,6 @@
<Button type="primary" size='small' @click="modal1=false">关闭</Button> <Button type="primary" size='small' @click="modal1=false">关闭</Button>
</div> </div>
</Modal> </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 <Modal
v-model="modal3" v-model="modal3"
...@@ -390,7 +333,7 @@ ...@@ -390,7 +333,7 @@
<Button type='primary' @click='emailModalPush'>取消</Button> <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==false">发送</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==true">添加并发送</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> </div>
</Modal> </Modal>
<Modal <Modal
...@@ -534,6 +477,7 @@ export default { ...@@ -534,6 +477,7 @@ export default {
disabledSingle:true, disabledSingle:true,
emailId:'', emailId:'',
RescopyArr:[], RescopyArr:[],
errorMassage:'',
interelement:'1', interelement:'1',
emailIdArr:[], emailIdArr:[],
attachFileList:[], attachFileList:[],
...@@ -564,6 +508,7 @@ export default { ...@@ -564,6 +508,7 @@ export default {
a:'', a:'',
id:'', id:'',
pageT:'', pageT:'',
resumeDetailSta:'',
modal1:false, modal1:false,
modal2:false, modal2:false,
modal3:false, modal3:false,
...@@ -574,6 +519,7 @@ export default { ...@@ -574,6 +519,7 @@ export default {
modal10:false, modal10:false,
modal12:false, modal12:false,
modal13:false, modal13:false,
resumePushId:'',
optcode:'', optcode:'',
toseename:'', toseename:'',
// UpdateOWER:'', // UpdateOWER:'',
...@@ -666,47 +612,51 @@ export default { ...@@ -666,47 +612,51 @@ export default {
}, },
//操作处理面试状态 //操作处理面试状态
selectFn1(e,SID,itemsta) { changeFlowstatus(e,SID,itemsta,orsta){
this.toseeid=SID this.toseeid=SID
this.emailId=SID this.emailId=SID
this.emailIdArr=[] this.emailIdArr=[]
this.emailIdArr.push(SID) this.emailIdArr.push(SID)
this.isShowTwo=true this.isShowTwo=true
this.ITEMSTA=itemsta this.ITEMSTA=itemsta
// 准备约面 if(e.target.value=='TO_SEE'){
if(e.target.value==3){ this.emailFlowStatus='TO_SEE'
getEmailMoo().then(res=>{
this.emailInline.modalArr.push(res.data.body[0])
})
this.emailMOdal=true
this.emailFlowStatus='TO_SEE'
this.isShowTwo=true this.isShowTwo=true
this.sendEmail() this.sendEmail('',orsta,SID)
} }
// 简历PASS if(e.target.value=='PASS'){
if(e.target.value==2){ let parmars={
let parmars={ status:"PASS",
status:"PASS", id:SID,
id:SID, }
PASS(parmars).then(res=>{
if(res.data.success==true){
this.SouSuo(this.pageT,'init')
} }
PASS(parmars).then(res=>{ })
if(res.data.success==true){ }
this.SouSuo(this.pageT) if(e.target.value=='OPTION'){
} let parmars={
}) status:"OPTION",
} id:SID,
// 简历备选 }
if(e.target.value==4){ OPTION(parmars).then(res=>{
let parmars={ if(res.data.success==true){
status:"OPTION", this.SouSuo(this.pageT,'init')
id:SID,
} }
OPTION(parmars).then(res=>{ })
if(res.data.success==true){ }
this.SouSuo(this.pageT) 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')
}
})
}
}, },
addINTERVIEW(){ addINTERVIEW(){
let parmars={ let parmars={
...@@ -732,195 +682,40 @@ export default { ...@@ -732,195 +682,40 @@ export default {
this.SouSuo(this.pageT) this.SouSuo(this.pageT)
} }
if(res.data.body.code==0){ if(res.data.body.code==0){
this.SouSuo(this.pageT) this.SouSuo(this.pageT,'init')
} }
}) })
}, },
nextStep(){ changeTime(b){
this.beforeBtu=true this.UpdateTIME=b
this.modal2=false if (!b){
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)
}
})
}
},
changeTime(b){
this.UpdateTIME=b
if (!b){
this.editorObject = {
type: this.temp,
value: this.emailInline.templateContent
}
return
}
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 = { this.editorObject = {
type: this.temp, type: this.temp,
value: this.emailInline.templateContent.replace(reg, content) value: this.emailInline.templateContent
} }
return
}
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)
}
}, },
// 查看简历详情 // 查看简历详情
Seedetail(Tid,Uid){ Seedetail(Tid,Uid,STATUS){
this.detailID=Tid this.detailID=Tid
this.DOWNID=Uid this.DOWNID=Uid
this.resumeDetailSta=STATUS
let newpage = this.$router.resolve({ let newpage = this.$router.resolve({
name: 'resumeDetail', name: 'resumeDetail',
params:{}, params:{},
query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID} query:{id:this.DOWNID,noShowBtn:'',ID:this.detailID,status:this.resumeDetailSta}
}) })
window.open(newpage.href, '_blank'); window.open(newpage.href, '_blank');
}, },
...@@ -1269,7 +1064,9 @@ export default { ...@@ -1269,7 +1064,9 @@ export default {
item.isShow=false item.isShow=false
item.optSource=item.optSource item.optSource=item.optSource
item.modifier=item.modifier item.modifier=item.modifier
item.originValue=item.flowStatus
item.uid=item.uid item.uid=item.uid
item.hasRead=item.hasRead
item.c=item.modifier==''?item.modifier:item.modifier.split('_') item.c=item.modifier==''?item.modifier:item.modifier.split('_')
item.d=item.c[0] item.d=item.c[0]
if (item.STATES) { //以选中 if (item.STATES) { //以选中
...@@ -1299,7 +1096,9 @@ export default { ...@@ -1299,7 +1096,9 @@ export default {
this.ajaxData[index].isShow=false this.ajaxData[index].isShow=false
}, },
// 发送邮件 // 发送邮件
sendEmail(type){ sendEmail(type,status,SID){
this.selectElementValue=status
this.resumePushId=SID
if(this.checkboxList.length == 0&&type) { if(this.checkboxList.length == 0&&type) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: '提示',
...@@ -1439,8 +1238,13 @@ export default { ...@@ -1439,8 +1238,13 @@ export default {
this.isShowTwo=false this.isShowTwo=false
this.isLimitSize=false this.isLimitSize=false
this.uploadFileList=[] this.uploadFileList=[]
this.SouSuo(this.pageT,'init') // this.SouSuo(this.pageT,'init')
this.clearInterviewee() // this.clearInterviewee()
this.ajaxData.map(item=>{
if(item.id==this.resumePushId){
item.flowStatus=item.originValue
}
})
}, },
getEditorValue(){ // 调编辑器组件方法获取数据 getEditorValue(){ // 调编辑器组件方法获取数据
return this.$refs.editor.getValue() return this.$refs.editor.getValue()
...@@ -1451,7 +1255,7 @@ export default { ...@@ -1451,7 +1255,7 @@ export default {
// this.isLimitSize=false // this.isLimitSize=false
}, },
// 确认发送邮件 // 确认发送邮件
confireSendEmail(){ confireSendEmail:_debounce(function(){
this.sad=this.getEditorValue() this.sad=this.getEditorValue()
if(this.sad==''){ if(this.sad==''){
this.$Notice.error({ this.$Notice.error({
...@@ -1631,7 +1435,7 @@ export default { ...@@ -1631,7 +1435,7 @@ export default {
} }
}) })
} }
}, },800),
changenotice(a){ changenotice(a){
}, },
receiveEmail(){ receiveEmail(){
...@@ -1705,7 +1509,7 @@ export default { ...@@ -1705,7 +1509,7 @@ export default {
this.$refs.transpondFrom.resetFields() this.$refs.transpondFrom.resetFields()
this.modal8= true this.modal8= true
}, },
sendNotice() { sendNotice:_debounce( function() {
this.$refs.transpondFrom.validate(valid => { this.$refs.transpondFrom.validate(valid => {
if(!this.transpondFrom.interviewerName){ if(!this.transpondFrom.interviewerName){
return return
...@@ -1732,8 +1536,10 @@ export default { ...@@ -1732,8 +1536,10 @@ export default {
desc: '发送成功' desc: '发送成功'
}) })
}, 500) }, 500)
this.SouSuo(this.pageT)
} else{ } else{
this.errorCode=res.data.body.code this.errorCode=res.data.body.code
this.errorMassage=res.data.body.message
this.clearInterviewee() this.clearInterviewee()
this.modal8 = false this.modal8 = false
if(this.errorCode=='40001'){ if(this.errorCode=='40001'){
...@@ -1742,18 +1548,16 @@ export default { ...@@ -1742,18 +1548,16 @@ export default {
if(this.errorCode=='40002'){ if(this.errorCode=='40002'){
this.modal13=true this.modal13=true
} }
// setTimeout(() => { if(this.errorCode=='0'){
// this.$Notice.success({ this.$Notice.error({
// title: '提示', title: '提示',
// desc: '发送失败' desc:this.errorMassage
// }) })
// }, 500) }
// this.clearInterviewee()
// this.modal8 = false
} }
}) })
}) })
}, },800),
remoteMethod: function(query){ remoteMethod: function(query){
if (query !== '') { if (query !== '') {
this.loading1 = true; this.loading1 = true;
...@@ -1928,7 +1732,9 @@ export default { ...@@ -1928,7 +1732,9 @@ export default {
item.srcSite=item.srcSite item.srcSite=item.srcSite
item.STATES=false item.STATES=false
item.isShow=false item.isShow=false
item.hasRead=item.hasRead
item.optSource=item.optSource item.optSource=item.optSource
item.originValue=item.flowStatus
item.modifier=item.modifier item.modifier=item.modifier
item.uid=item.uid item.uid=item.uid
item.c=item.modifier==''?item.modifier:item.modifier.split('_') item.c=item.modifier==''?item.modifier:item.modifier.split('_')
...@@ -1965,6 +1771,15 @@ export default { ...@@ -1965,6 +1771,15 @@ export default {
}, },
mounted(){ mounted(){
this.SouSuo(null, 'init') this.SouSuo(null, 'init')
document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden;
if(isHidden){
document.title = '思坦途'
} else {
document.title = '思坦途'
this.SouSuo(this.pageT, 'init')
}
})
} }
} }
</script> </script>
...@@ -2017,13 +1832,13 @@ export default { ...@@ -2017,13 +1832,13 @@ export default {
margin-bottom:0px; margin-bottom:0px;
} }
.red{ .red{
background: LightGray background: LightGray !important
}
.massage{
height:25px;
font-size: 8px;
line-height: 25px;
} }
// .massage{
// // height:25px;
// font-size: 8px;
// // line-height: 25px;
// }
.Recode span{ .Recode span{
margin-left:20px margin-left:20px
} }
...@@ -2046,6 +1861,12 @@ select{ ...@@ -2046,6 +1861,12 @@ select{
.Education{ .Education{
width: 100%; width: 100%;
} }
.massagecolor{
color: grey !important
}
.allResumeBassage{
color: #2d8cf0;
}
.Education span{ .Education span{
margin-right: 20px; margin-right: 20px;
display:inline-block; display:inline-block;
...@@ -2081,7 +1902,7 @@ select{ ...@@ -2081,7 +1902,7 @@ select{
} }
.detailResume{ .detailResume{
width:100%; width:100%;
height:60px; height:80px;
} }
.emailModal-title{ .emailModal-title{
height: 280px; height: 280px;
...@@ -2160,7 +1981,8 @@ select{ ...@@ -2160,7 +1981,8 @@ select{
} }
} }
.grey{ .grey{
background:rgba(241,241,241,1); background:#f9f9f9;
margin-left: 3px
} }
</style> </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> <template>
<div class="resumeDetail"> <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)!=='{}'"> <div class="personalInformation" v-show="JSON.stringify(resume)!=='{}'">
<p class="detailTitel"> <p class="detailTitel">
<span> <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"> <img src="https://o7oe0d6qz.qnssl.com/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px">
</span> </span>
<span style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span> <span style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span>
<span style="float:right;width:50px;height:24px;margin-right:5px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> <!-- <span style="float:right;width:50px;height:24px;margin-right:5px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> -->
</p> </p>
<div class="massageTitle"> <div class="massageTitle">
<p> <p>
...@@ -133,14 +138,199 @@ ...@@ -133,14 +138,199 @@
{{resume&&resume.selfEvaluate}} {{resume&&resume.selfEvaluate}}
</div> </div>
</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> </div>
</template> </template>
<script> <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 localStorage from '../../service/localstorage.service.js'
import { import {
sapi sapi
}from '../../config' }from '../../config'
import ckeditor from '../../components/ckeditor'
import{_debounce,_throttle,emailValidata, emailRule, vidte, validator} from '../../service/util.js'
export default { export default {
data(){ data(){
return { return {
...@@ -149,69 +339,757 @@ export default { ...@@ -149,69 +339,757 @@ export default {
roList:[], roList:[],
rpList:[], rpList:[],
reList:[], 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:'', downresume:'',
detialID:'', detialID:'',
showBtn:'', 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: { methods: {
getDETAIL(){ getDETAIL(){
this.detialID=this.$route.query.ID this.detialID=this.$route.query.ID
this.showBtn=this.$route.query.noShowBtn this.resumeIdList.push(this.$route.query.ID)
let token = this.$route.query.token || '' this.emailId=this.$route.query.ID
this.detailSta=this.$route.query.status
this.showBtn=this.$route.query.noShowBtn
let token = this.$route.query.token || ''
let parmars={
uid:this.$route.query.id
}
seedetail(parmars).then(res=>{
this.resume=res.data.body.resume
this.riList=res.data.body.riList
this.roList=res.data.body.roList
this.rpList=res.data.body.rpList
this.reList=res.data.body.reList
this.name=res.data.body.resume.ownerName
})
},
// 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}`
},
// 发送邮件
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={ let parmars={
uid:this.$route.query.id id: this.detialID,
status:'TO_DO'
} }
seedetail(parmars).then(res=>{ updatastatus(parmars).then(res=>{
this.resume=res.data.body.resume this.detailSta='TO_DO'
this.riList=res.data.body.riList this.todoDisabled=true
this.roList=res.data.body.roList this.passDisabled=false
this.rpList=res.data.body.rpList this.optionDisabled=false
this.reList=res.data.body.reList
}) })
}, },
// 下载简历 // 备选
downloadONE(doid){ option(){
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${doid}` 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')
}, },
a(){
}
}, },
mounted(){ mounted(){
this.getDETAIL() this.getDETAIL()
this.boxIsShow=true
this.judeBtn()
this.addCss()
// await this.getData()
// this.clearPDF()
// await this.judeShowPdf()
},
beforeDestroy(){
this.remove()
} }
} }
</script> </script>
<style scoped> <style scoped>
.resumeDetail{ .resumeDetail{
width: 860px; width: 1150px;
margin: 30px auto; margin: 30px auto;
color: #000000; 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{ .personalInformation{
width:860px; width:860px;
/* height: 600px; */ /* height: 600px; */
float: left; float: left;
/* border: 1px solid black */
} }
.bassMassage{ .bassMassage{
display: inline-block; display: inline-block;
width: 322px; width: 360px;
float: left; float: left;
margin-left:30px; margin-left:30px;
font-size: 14px; font-size: 14px;
margin-top:20px margin-top:20px;
/* border:1px solid black; */
} }
.bassMassageRight{ .bassMassageRight{
display: inline-block; display: inline-block;
width: 322px; width: 360px;
float: left; float: left;
font-size: 14px; font-size: 14px;
margin-top:20px; 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{ .massageTitle{
/* height: 300px; */ /* height: 300px; */
float: left; float: left;
......
...@@ -6,6 +6,13 @@ ...@@ -6,6 +6,13 @@
<img :src="url" style="width:100%;height:100%"> <img :src="url" style="width:100%;height:100%">
</div> </div>
<p class="xiazai" @click="downPic">下载</p> <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> </div>
</template> </template>
<script> <script>
...@@ -56,6 +63,6 @@ export default { ...@@ -56,6 +63,6 @@ export default {
border-radius: 5px ; border-radius: 5px ;
position: absolute; position: absolute;
left: 230px; left: 230px;
top:270px top:270px
} }
</style> </style>
...@@ -11,12 +11,12 @@ ...@@ -11,12 +11,12 @@
:class="['prefixCls' + '-input']" :class="['prefixCls' + '-input']"
@change="handleChange" @change="handleChange"
:multiple="true" :multiple="true"
:format="['html','doc','pdf','txt','docx']" :format="['pdf','doc','docx']"
:accept="accept" :accept="accept"
> >
<Button @click='selFiles' style='width:20%;margin-top:40px;margin-left:-4px;color:black'>选择文件</Button> <Button @click='selFiles' style='width:20%;margin-top:40px;margin-left:-4px;color:black'>选择文件</Button>
<div class='contentTips'> <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> <p style="font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%">支持最多二十份简历批量上传</p>
</div> </div>
<Button @click='uploadBtn' style='width:20%;margin-left:38%;margin-top:30px' type='primary'>上传</Button> <Button @click='uploadBtn' style='width:20%;margin-left:38%;margin-top:30px' type='primary'>上传</Button>
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
</Modal> </Modal>
</div> </div>
<div class="leftcontrentFotter"> <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%;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 style="width:100%;height:10px;background:rgb(0,176,160)"></div> -->
<div class="contentMASSAGE" v-for="(item,index) in ajaxData" :key="index"> <div class="contentMASSAGE" v-for="(item,index) in ajaxData" :key="index">
...@@ -227,7 +227,7 @@ import {uploadFile} from '../../service/ajax' ...@@ -227,7 +227,7 @@ import {uploadFile} from '../../service/ajax'
filetile:'上传中请稍后...', filetile:'上传中请稍后...',
totalSize:null, totalSize:null,
uploadModal: false, uploadModal: false,
accept: '.html,.doc,.docx,.txt,.pdf', accept: '.doc,.docx,.pdf',
fileSize:2048, fileSize:2048,
progressStatus: { progressStatus: {
'0': 'active', '0': 'active',
...@@ -398,9 +398,9 @@ import {uploadFile} from '../../service/ajax' ...@@ -398,9 +398,9 @@ import {uploadFile} from '../../service/ajax'
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${downID}` window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${downID}`
}, },
// 获取上传批次号 // 获取上传批次号
getnumber(){ getnumber(){
getuploadNumber().then(res=>{ return getuploadNumber().then(res=>{
this.batchNum=res.data.body this.batchNum= res.data.body
}) })
}, },
//改变页码 //改变页码
...@@ -479,9 +479,9 @@ import {uploadFile} from '../../service/ajax' ...@@ -479,9 +479,9 @@ import {uploadFile} from '../../service/ajax'
}) })
}, },
}, },
mounted(){ async mounted(){
this.getnumber() await this.getnumber()
this. serchlist() this.serchlist()
} }
} }
</script> </script>
......
...@@ -6,6 +6,7 @@ const home = r => require.ensure([], () => r(require('@/components/home.vue')), ...@@ -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 login = r => require.ensure([], () => r(require('@/page/login/login.vue')), 'login');
const update = r => require.ensure([], () => r(require('@/page/login/update.vue')), 'update'); 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 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 interview = r => require.ensure([], () => r(require('@/page/interview/interview.vue')), 'interview');
const allResume = r => require.ensure([], () => r(require('@/page/resume/allResume.vue')), 'allResume'); const allResume = r => require.ensure([], () => r(require('@/page/resume/allResume.vue')), 'allResume');
const channel = r => require.ensure([], () => r(require('@/page/resume/channel.vue')), 'channel'); 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 ...@@ -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 sweepCode = r => require.ensure([], () => r(require('@/page/sweepCode/sweepCode.vue')), 'sweepCode');
const editor = r => require.ensure([], () => r(require('@/components/editor.vue')), 'editor'); const editor = r => require.ensure([], () => r(require('@/components/editor.vue')), 'editor');
const getimage = r => require.ensure([], () => r(require('@/components/getimage.vue')), 'getimage'); const getimage = r => require.ensure([], () => r(require('@/components/getimage.vue')), 'getimage');
//z注释 //z注释
Vue.use(Router); Vue.use(Router);
...@@ -54,6 +54,10 @@ export default new Router({ ...@@ -54,6 +54,10 @@ export default new Router({
path: '/resumeDetail', path: '/resumeDetail',
name: 'resumeDetail', name: 'resumeDetail',
component: resumeDetail component: resumeDetail
},{
path: '/pdfdetail',
name: 'pdfdetail',
component: pdfdetail
}, },
{ {
path: '/editor', path: '/editor',
......
...@@ -6,7 +6,7 @@ export default{ ...@@ -6,7 +6,7 @@ export default{
if (to.meta && !to.meta.allowBack && window.history && window.history.pushState) { //登录页面不能后退 if (to.meta && !to.meta.allowBack && window.history && window.history.pushState) { //登录页面不能后退
history.pushState(null, null, document.URL) 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() next()
return return
} }
......
...@@ -20,7 +20,6 @@ export function _throttle (fn, interval) { ...@@ -20,7 +20,6 @@ export function _throttle (fn, interval) {
let last = null let last = null
let timer = null let timer = null
interval = interval || 200 interval = interval || 200
return function () { return function () {
let self = this let self = this
let args = arguments 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