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

Merge branch 'pdfOrigen' into 'master'

Pdf origen

See merge request !9
parents 6940892e b4987c33
......@@ -885,8 +885,7 @@
"babel-plugin-syntax-dynamic-import": {
"version": "6.18.0",
"resolved": "http://npmprivate.quantgroups.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
"integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=",
"dev": true
"integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo="
},
"babel-plugin-syntax-exponentiation-operator": {
"version": "6.13.0",
......@@ -6891,6 +6890,11 @@
"lower-case": "^1.1.1"
}
},
"node-ensure": {
"version": "0.0.0",
"resolved": "http://npmprivate.quantgroups.com/node-ensure/-/node-ensure-0.0.0.tgz",
"integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc="
},
"node-forge": {
"version": "0.7.5",
"resolved": "http://npmprivate.quantgroups.com/node-forge/-/node-forge-0.7.5.tgz",
......@@ -7760,6 +7764,15 @@
"sha.js": "^2.4.8"
}
},
"pdfjs-dist": {
"version": "2.0.943",
"resolved": "http://npmprivate.quantgroups.com/pdfjs-dist/-/pdfjs-dist-2.0.943.tgz",
"integrity": "sha512-iLhNcm4XceTHRaSU5o22ZGCm4YpuW5+rf4+BJFH/feBhMQLbCGBry+Jet8Q419QDI4qgARaIQzXuiNrsNWS8Yw==",
"requires": {
"node-ensure": "^0.0.0",
"worker-loader": "^2.0.0"
}
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
......@@ -8631,6 +8644,11 @@
"unpipe": "1.0.0"
}
},
"raw-loader": {
"version": "0.5.1",
"resolved": "http://npmprivate.quantgroups.com/raw-loader/-/raw-loader-0.5.1.tgz",
"integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao="
},
"read-cache": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/read-cache/-/read-cache-1.0.0.tgz",
......@@ -10506,6 +10524,23 @@
}
}
},
"vue-pdf": {
"version": "4.0.7",
"resolved": "http://npmprivate.quantgroups.com/vue-pdf/-/vue-pdf-4.0.7.tgz",
"integrity": "sha512-fId38x4WrD4NalJV4AFzr30iX+IyycI+ii8fFNcgikWBrhHEytZwfOFDwNv57SLgtgBMocYwm+gBIOTyvixXMg==",
"requires": {
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"loader-utils": "^1.2.3",
"pdfjs-dist": "2.0.943",
"raw-loader": "^0.5.1",
"vue-resize-sensor": "^2.0.0"
}
},
"vue-resize-sensor": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/vue-resize-sensor/-/vue-resize-sensor-2.0.0.tgz",
"integrity": "sha512-W+y2EAI/BxS4Vlcca9scQv8ifeBFck56DRtSwWJ2H4Cw1GLNUYxiZxUHHkuzuI5JPW/cYtL1bPO5xPyEXx4LmQ=="
},
"vue-router": {
"version": "3.0.6",
"resolved": "http://npmprivate.quantgroups.com/vue-router/-/vue-router-3.0.6.tgz",
......@@ -11056,6 +11091,52 @@
"errno": "~0.1.7"
}
},
"worker-loader": {
"version": "2.0.0",
"resolved": "http://npmprivate.quantgroups.com/worker-loader/-/worker-loader-2.0.0.tgz",
"integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==",
"requires": {
"loader-utils": "^1.0.0",
"schema-utils": "^0.4.0"
},
"dependencies": {
"ajv": {
"version": "6.10.2",
"resolved": "http://npmprivate.quantgroups.com/ajv/-/ajv-6.10.2.tgz",
"integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
"requires": {
"fast-deep-equal": "^2.0.1",
"fast-json-stable-stringify": "^2.0.0",
"json-schema-traverse": "^0.4.1",
"uri-js": "^4.2.2"
}
},
"ajv-keywords": {
"version": "3.4.1",
"resolved": "http://npmprivate.quantgroups.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
"integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ=="
},
"fast-deep-equal": {
"version": "2.0.1",
"resolved": "http://npmprivate.quantgroups.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "http://npmprivate.quantgroups.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
},
"schema-utils": {
"version": "0.4.7",
"resolved": "http://npmprivate.quantgroups.com/schema-utils/-/schema-utils-0.4.7.tgz",
"integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
"requires": {
"ajv": "^6.1.0",
"ajv-keywords": "^3.1.0"
}
}
}
},
"wrap-ansi": {
"version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
......
......@@ -131,18 +131,29 @@ export function forwardResume(params) {
'Content-Type':'application/json'
}})
}
// export function getPdf(parmars) {
// return axios.get(`${sapi}/api/resume/getResumePdfByResumeId/${parmars.uid}`,{
// responseType: 'arraybuffer',
// headers: {
// 'Content-Type':'application/json'
// }
// })
// }
// // 是否展示原件的PDF
// export function isShowPDF(parmars) {
// return axios.get(`${sapi}/api/resume//isShowOriPdf/${parmars.uid}`, {headers: {
// 'Content-Type':'application/json'
// }})
// }
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'
}})
}
export function getpdfUrl(parmars) {
return axios.get(`${sapi}/api/resume/getResumePdfUrl/${parmars.uid}`, {headers: {
'Content-Type':'application/json'
}})
}
//获取职位列表
export function getlist(parmars) {
return axios.get(`${sapi}/api/resume/findPositionList?optSourceCode=${parmars.optSourceCode}`, {headers: {
'Content-Type':'application/json'
}})
}
......@@ -69,9 +69,9 @@ export function getErcode(){
'Content-Type':'application/json',
}})
}
// //下载二维码
// export function downloadErcode(){
// return axios.get(`${sapi}/qrCode/downQrCode`,{headers: {
// 'Content-Type':'application/json',
// }})
// }
\ No newline at end of file
// //修改账户
export function updateAccount(parmars){
return axios.post(`${sapi}/api/user/modify/${parmars.id}`,parmars,{headers: {
'Content-Type':'application/json',
}})
}
\ No newline at end of file
......@@ -15,8 +15,8 @@
</template>
</Menu>
</Col>
<Col span="21" class="content" style="width:83%;height:100%">
<Row class="header" style="height:50px">
<Col span="21" class="content" style="width:83%;height:100%;">
<Row class="header" style="height:50px;">
<Col span="20">
<Menu mode="horizontal" :active-name="levelOneName" @on-select="selectMenu">
<MenuItem v-for="menu in menuList" :name="menu.name" :key="menu.name" >
......@@ -222,7 +222,7 @@ import {mapState} from 'vuex'
var obj = {
name: `${item.sourceName}`,
item: item.sourceName,
route: `/channel/${item.sourceCode}`
route: `/channel/${item.sourceCode}?handUpload=${item.handUpload==null?'':item.handUpload}`
}
this.menuList[0].child[1].child.push(obj)
})
......
......@@ -664,6 +664,7 @@ export default {
flowStatusList:this.searchInfo.STA,
interviewerName:this.interviewerName,
inviterName:this.inviterName,
handUpload:''
}
}
SerchList(parmars).then(res=>{
......
......@@ -14,7 +14,7 @@
<div class="login_content">
<Form ref="formInline" :model="formInline" :rules="ruleInline" style="height:161px">
<FormItem prop="user" style="height:60px">
<Input type="text" v-model="formInline.user" placeholder="请输入账号" class="wordStyle" size="large">
<Input type="text" v-model="formInline.user" placeholder="请输入企业邮箱账号" class="wordStyle" size="large">
<Icon type="ios-person-outline" slot="prepend" ></Icon>
</Input>
</FormItem>
......@@ -53,7 +53,7 @@ export default {
},
ruleInline: {
user: [
{ required: true, pattern:/^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机', trigger: 'blur' }
{ required: true, pattern:/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, message: '请输入正确的邮箱账', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' },
......
......@@ -3,33 +3,37 @@
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> -->
<div class="allResume-left">
<Form :label-width="90" style="width:88%;margin:0 auto;" class='emailForm'>
<FormItem label="关键词:" style="margin-top:20px">
<FormItem label="关键词:" style="margin-top:20px;margin-bottom:12px" class="keywords">
<Input placeholder="请输入关键词" style="width:98%" v-model="keywords" @keyup.enter.native="SouSuo()"/>
</FormItem>
<FormItem label="历任公司:">
<FormItem label="历任公司:" class="lrgs" style="margin-bottom:12px">
<Input placeholder="请输入历任公司" style="width:98%" v-model="lrgs" @keyup.enter.native="SouSuo()"/>
</FormItem>
<FormItem label="性别:" class="sex">
<FormItem label="性别:" class="sex" style="margin-bottom:0px">
<span v-for="(item,index) in sexs" :class="{'active1':index==clickIndex1}" @click="selectElement1(item.status1,index)" :key="index" style="cursor:pointer"> {{item.status1}}</span>
</FormItem>
<FormItem label="学历:" class="Education">
<FormItem label="学历:" class="Education" style="margin-bottom:10px">
<span v-for="(item,index) in Education" :class="{'active1':index==clickIndex2}" @click="selectElement2(item.Num2,index)" :key="index" style="cursor:pointer"> {{item.status2}}</span>
</FormItem>
<FormItem label="状态:" class="state">
<FormItem label="状态:" class="state" style="margin-bottom:18px">
<span v-for="(item,index) in state" :class="{'active1':item.sta==true}" @click="selectElement3(item.Num3,index,item.status3,item.sta)" :key="index" style="cursor:pointer"> {{item.status3}}</span>
</FormItem>
<FormItem label="工作年限:">
<FormItem label="工作年限:" class="keywords" style="margin-bottom:10px">
<span style="width:100px;">
<Select style="width:40%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears1" @on-change='judge1'>
<Select style="width:45%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears1" @on-change='judge1'>
<Option v-for="(item, index) in ownerWorkYears1" :value="item.value" :key="index">{{item.label}}</Option>
</Select>
<span>-</span>
<Select style="width:40%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears2" @on-change='judge2'>
<Select style="width:45%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears2" @on-change='judge2'>
<Option v-for="(item, index) in ownerWorkYears2" :value="item.value" :key="index">{{item.label}}</Option>
</Select>
</span><br>
</FormItem>
<FormItem label="职位:" style="margin:20px 0 40px 0px">
<Select v-model="position" filterable multiple style="width:96%" placeholder="不限">
<Option v-for="(item,index) in positionArr" :value="item" :key="index">{{ item}}</Option>
</Select>
</FormItem>
</Form>
<Button type="primary" style="width:30%;margin-left:34%;font-size:13px;background:#0092FF" @click="SouSuo(item.Num1,item.Num2,item.Num3)">搜索</Button>
</div>
......@@ -140,6 +144,9 @@
<span>{{item.approveUserName}}</span>
<span>{{item.dateTime}}</span>
<span style="color:blue" v-if=" item.previousState=='INTERVIEW_OK'">面试合适</span>
<span style="color:blue" v-if=" item.previousState=='SX_RIGHT_RESUME'">筛选通过</span>
<span style="color:blue" v-if=" item.previousState=='SX_PASS_RESUME'">筛选不通过</span>
<span style="color:blue" v-if=" item.previousState=='SX_TWO_CONFIRM'">二次确认</span>
<span style="color:blue" v-if=" item.previousState=='INTERVIEW_FAIL'">面试淘汰</span>
<span style="color:blue" v-if=" item.previousState=='END'">终止面试</span>
<span style="color:blue" v-if=" item.previousState=='SEE_FAIL'">约面失败</span>
......@@ -172,6 +179,9 @@
<span style="color:blue" v-if=" item.afterState=='TO_DO'">待处理</span>
<span style="color:blue" v-if=" item.afterState=='RESET'">重启面试</span>
<span style="color:blue" v-if=" item.afterState=='ARRIVED'">已到达</span>
<span style="color:blue" v-if=" item.afterState=='SX_RIGHT_RESUME'">筛选通过</span>
<span style="color:blue" v-if=" item.afterState=='SX_PASS_RESUME'">筛选不通过</span>
<span style="color:blue" v-if=" item.afterState=='SX_TWO_CONFIRM'">二次确认</span>
</p>
</div>
......@@ -313,7 +323,7 @@
<Button type='primary' @click='emailModalPush'>取消</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==false">发送</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==true">添加并发送</Button>
<!-- <Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox> -->
<Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox>
</div>
</Modal>
<Modal
......@@ -371,6 +381,9 @@
<Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option>
</Select>
</FormItem>
<FormItem>
<div v-show="isShowRep==true" style="color:red">重复推荐面试官,请删除重复再推荐,重复简历:{{this.reResumeName}}</div>
</FormItem>
<FormItem label='' prop='interviewee'>
<div v-for='(item, index) in interviewee' :key='index' class='interviewee'>
<div class='pic'>
......@@ -383,7 +396,7 @@
</Form>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal8=false'>取消</Button>
<Button type='primary' @click='pushSendNotice'>取消</Button>
<Button type='primary' @click="sendNotice" >发送</Button>
</div>
</Modal>
......@@ -405,7 +418,7 @@
</template>
<script>
import moment from 'moment'
import { serchList,downloadone,sousuoList,seedetail,PASS,OPTION,deleteREsume,downloadOne,exportLIST,recodeLIST,addinterview,updatastatus,TODORes,sendEmail,getEmailMoo,getEmailContent,uploadimage, findCompanyEmailByKey,forwardResume} from '../../api/resume.server'
import { serchList,downloadone,sousuoList,seedetail,PASS,OPTION,deleteREsume,downloadOne,exportLIST,recodeLIST,addinterview,updatastatus,getlist,TODORes,sendEmail,getEmailMoo,getEmailContent,uploadimage, findCompanyEmailByKey,forwardResume} from '../../api/resume.server'
import {Serchinterviewor} from '../../api/interview.server.js'
import qs from 'qs'
import {
......@@ -423,6 +436,10 @@ import {mapState} from 'vuex'
errorInfo: '',
interviewee: [],
interviewerNameList: [],
position:[],
handUploadCode:'',
positionArr:[
],
tip: false,
tipInfo: '输入多个邮箱地址以英文”;“分隔',
sad:'',
......@@ -473,6 +490,7 @@ import {mapState} from 'vuex'
limentName:0,
errorMassage:'',
errorCode:'',
isShowRep:false,
emailMassage:false,
allEmailVilitor:false,
emailContent:'',
......@@ -561,6 +579,7 @@ import {mapState} from 'vuex'
delateARRALL3:[],
flowStatusarr:[],
flowStatusarr2:[],
reResumeName:'',
DELATEARR:[],
quanxuan:[],
orignarr:['TO_SEE','HAS_SEE','SEE_FAIL','INTERVIEW_FAIL','TO_SENT_OFFER','TO_ENTRY','HAS_ENTRY','NO_ENTRY','END','ARRIVED'],
......@@ -727,6 +746,14 @@ import {mapState} from 'vuex'
}
})
},
getpositionList(){
let parmars={
optSourceCode:''
}
getlist(parmars).then(res=>{
this.positionArr=res.data.body
})
},
//选择搜索元素
selectElement1(tItem,Tindex){
this.searchInfo.SEX=Tindex==0?'':tItem;
......@@ -795,6 +822,8 @@ import {mapState} from 'vuex'
flowStatusList:this.searchInfo.STA,
ownerWorkYears1:this.searchInfo.ownerWorkYears1,
ownerWorkYears2:this.searchInfo.ownerWorkYears2,
ownerExpectTitlesList:this.position,
handUpload:''
}
}
this.ajaxData=[]
......@@ -916,7 +945,6 @@ import {mapState} from 'vuex'
})
window.open(newpage.href, '_blank');
},
//下载单条简历
downloadONE(downID){
window.location.href=`${sapi}/api/resume/download/formatted/one?resumeId=${downID}`
......@@ -951,7 +979,7 @@ import {mapState} from 'vuex'
this.removeInterviewee({id:item})
})
this.modal3=false
this.SouSuo(this.pageT)
this.SouSuo(this.pageT,'init')
}
})
},
......@@ -1124,7 +1152,6 @@ import {mapState} from 'vuex'
sendEmail(type,status,SID){
this.selectElementValue=status
this.resumePushId=SID
console.log(status,44444444)
if(this.checkboxList.length == 0&&type) {
this.$Notice.error({
title: '提示',
......@@ -1534,6 +1561,7 @@ import {mapState} from 'vuex'
if (res.data.success == true) {
this.clearInterviewee()
this.modal8 = false
this.isShowRep=false
setTimeout(() => {
this.$Notice.success({
title: '提示',
......@@ -1541,35 +1569,36 @@ import {mapState} from 'vuex'
})
}, 300)
this.SouSuo(this.pageT)
} else{
this.errorCode=res.data.body.code
this.errorMassage=res.data.body.message
}
if(res.data.body.code=='40009'){
this.reResumeName=res.data.body.message
this.isShowRep=true
}
if(res.data.body.code=='40001'){
this.modal8=false
this.clearInterviewee()
if(this.errorCode=='40001'){
this.modal12=true
this.isShowRep=false
}
if(this.errorCode=='40002'){
if(res.data.body.code=='40002'){
this.modal8=false
this.modal13=true
this.isShowRep=false
}
if(this.errorCode=='0'){
if(res.data.body.code=='0'){
this.modal8=false
this.isShowRep=false
this.$Notice.error({
title: '提示',
desc: this.errorMassage
desc: res.data.body.message
})
}
// setTimeout(() => {
// this.$Notice.error({
// title: '提示',
// desc: '发送失败'
// })
// }, 500)
// this.clearInterviewee()
// this.modal8 = false
}
})
})
},800),
pushSendNotice(){
this.modal8=false,
this.isShowRep=false
},
remoteMethod: async function(query){
if (query !== '') {
this.loading1 = true;
......@@ -1721,6 +1750,7 @@ import {mapState} from 'vuex'
},
mounted(){
this.SouSuo(null, 'init')
this.getpositionList()
document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden;
if(isHidden){
......@@ -1972,4 +2002,13 @@ font-size: 14px;
.allResume .ivu-form-item-error-tip{
font-size:12px;
}
.allResume .keywords .ivu-form-item{
margin-bottom: 15px !important
}
.allResume .lrgs .ivu-form-item{
margin-bottom: 15px
}
.allResume .ivu-form-item-content{
line-height: 28px
}
</style>
\ No newline at end of file
......@@ -3,32 +3,37 @@
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:20px">加载中...</Spin> -->
<div class="channel-left">
<Form :label-width="90" style="width:88%;margin:0 auto;" class='emailForm'>
<FormItem label="关键词:" style="margin-top:20px">
<FormItem label="关键词:" style="margin-top:20px;margin-bottom:12px">
<Input placeholder="请输入关键词" style="width:98%" v-model="keywords" @keyup.enter.native="SouSuo(item.Num1,item.Num2,item.Num3)"/>
</FormItem>
<FormItem label="历任公司:">
<FormItem label="历任公司:" style="margin-bottom:12px">
<Input placeholder="请输入历任公司" style="width:98%" v-model="lrgs" @keyup.enter.native="SouSuo(item.Num1,item.Num2,item.Num3)"/>
</FormItem>
<FormItem label="性别:" class="sex">
<FormItem label="性别:" class="sex" style="margin-bottom:0px">
<span v-for="(item,index) in sexs" :class="{'active3':index==clickIndex1}" @click="selectElement1(item.status1,index)" :key="index" style="cursor:pointer"> {{item.status1}}</span>
</FormItem>
<FormItem label="学历:" class="Education">
<FormItem label="学历:" class="Education" style="margin-bottom:10px">
<span v-for="(item,index) in Education" :class="{'active3':index==clickIndex2}" @click="selectElement2(item.Num2,index)" :key="index" style="cursor:pointer"> {{item.status2}}</span>
</FormItem>
<FormItem label="状态:" class="state">
<FormItem label="状态:" class="state" style="margin-bottom:18px">
<span v-for="(item,index) in state" :class="{'active3':item.sta==true}" @click="selectElement3(item.Num3,index,item.status3,item.sta)" :key="index" style="cursor:pointer"> {{item.status3}}</span>
</FormItem>
<FormItem label="工作年限:" style="">
<FormItem label="工作年限:" style="margin-bottom:10px">
<span style="width:100px">
<Select style="width:40%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears1" @on-change="judge1">
<Select style="width:45%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears1" @on-change="judge1">
<Option v-for="item in ownerWorkYears1" :value="item.value" :key="item.value">{{item.label}}</Option>
</Select>
<span>-</span>
<Select style="width:40%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears2" @on-change="judge2">
<Select style="width:45%" placeholder="不限" :label-in-value='true' v-model="searchInfo.ownerWorkYears2" @on-change="judge2">
<Option v-for="item in ownerWorkYears2" :value="item.value" :key="item.value">{{item.label}}</Option>
</Select>
</span><br>
</FormItem>
<FormItem label="职位:" style="margin:20px 0 40px 0px">
<Select v-model="position" filterable multiple style="width:96%" placeholder="不限">
<Option v-for="(item,index) in positionArr" :value="item" :key="index">{{ item }}</Option>
</Select>
</FormItem>
</Form>
<Button type="primary" style="width:30%;margin-left:34%;font-size:13px" @click="SouSuo(item.Num1,item.Num2,item.Num3)">搜索</Button>
</div>
......@@ -102,7 +107,7 @@
<span @click="RecordSEE(item.id,item.ownerName)" style=";cursor:pointer;color:#2d8cf0;" class='recordtext'>记录</span>
</span>
</p>
<p style="margin-top:0px;color:Greys;padding-left:10px;" class="info">
<p style="margin-top:5px;color:Greys;padding-left:10px;" class="info">
<span style="display:inline-block;font-size: 14px;color:orange" v-show="item.hasForward=='1'" class='transmit' >已转</span>
<span style="display:inline-block;font-size: 14px;margin-left:20px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 14px;color:Grey;margin-left:20px" v-if="item.srcSite==''" v-show="item.hasForward==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span>
......@@ -137,6 +142,9 @@
<span>{{item.approveUserName}}</span>
<span>{{item.dateTime}}</span>
<span style="color:blue" v-if=" item.previousState=='INTERVIEW_OK'">面试合适</span>
<span style="color:blue" v-if=" item.previousState=='SX_RIGHT_RESUME'">筛选通过</span>
<span style="color:blue" v-if=" item.previousState=='SX_PASS_RESUME'">筛选不通过</span>
<span style="color:blue" v-if=" item.previousState=='SX_TWO_CONFIRM'">二次确认</span>
<span style="color:blue" v-if=" item.previousState=='INTERVIEW_FAIL'">面试淘汰</span>
<span style="color:blue" v-if=" item.previousState=='END'">终止面试</span>
<span style="color:blue" v-if=" item.previousState=='SEE_FAIL'">约面失败</span>
......@@ -169,6 +177,9 @@
<span style="color:blue" v-if=" item.afterState=='TO_DO'">待处理</span>
<span style="color:blue" v-if=" item.afterState=='RESET'">重启面试</span>
<span style="color:blue" v-if=" item.afterState=='ARRIVED'">已到达</span>
<span style="color:blue" v-if=" item.afterState=='SX_RIGHT_RESUME'">筛选通过</span>
<span style="color:blue" v-if=" item.afterState=='SX_PASS_RESUME'">筛选不通过</span>
<span style="color:blue" v-if=" item.afterState=='SX_TWO_CONFIRM'">二次确认</span>
</p>
</div>
......@@ -333,7 +344,7 @@
<Button type='primary' @click='emailModalPush'>取消</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==false">发送</Button>
<Button type='primary' @click='submit' v-show="this.isShowAll==true">添加并发送</Button>
<!-- <Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox> -->
<Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox>
</div>
</Modal>
<Modal
......@@ -367,6 +378,9 @@
<Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option>
</Select>
</FormItem>
<FormItem>
<div v-show="isShowRep==true" style="color:red">重复推荐面试官,请删除重复再推荐,重复简历:{{this.reResumeName}}</div>
</FormItem>
<FormItem label='' prop='interviewee' >
<div v-for='(item, index) in interviewee' :key='index' class='interviewee'>
<div class='pic'>
......@@ -379,7 +393,7 @@
</Form>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal8=false'>取消</Button>
<Button type='primary' @click='pushSendNotice'>取消</Button>
<Button type='primary' @click="sendNotice" >发送</Button>
</div>
</Modal>
......@@ -401,7 +415,7 @@
</template>
<script>
import moment from 'moment'
import {adoptOneSeeResumeList, serchList,downloadone,sousuoList,seedetail,PASS,OPTION,deleteREsume,downloadOne,exportLIST,recodeLIST,addinterview,TODORes,getEmailMoo,getEmailContent, sendEmail,findCompanyEmailByKey,forwardResume } from '../../api/resume.server.js'
import {adoptOneSeeResumeList, serchList,downloadone,sousuoList,getlist,seedetail,PASS,OPTION,deleteREsume,downloadOne,exportLIST,recodeLIST,addinterview,TODORes,getEmailMoo,getEmailContent, sendEmail,findCompanyEmailByKey,forwardResume } from '../../api/resume.server.js'
import {Serchinterviewor} from '../../api/interview.server.js'
import {
sapi
......@@ -418,6 +432,10 @@ export default {
tip: false,
tipInfo: '输入多个邮箱地址以英文”;“分隔',
errorInfo: '',
position:[],
isShowRep:false,
positionArr:[
],
ruleInline: {
UpdateOWER: [
{ required: true, message: '邀约人不能为空', trigger: 'blur', validator: emailValidata.bind(this)}
......@@ -520,6 +538,7 @@ export default {
modal12:false,
modal13:false,
resumePushId:'',
reResumeName:'',
optcode:'',
toseename:'',
// UpdateOWER:'',
......@@ -769,6 +788,15 @@ export default {
}
})
},
getpositionList(){
let parmars={
optSourceCode:this.$route.params.channelname
}
getlist(parmars).then(res=>{
this.positionArr=[]
this.positionArr=res.data.body
})
},
// 选择input元素
selectInputElement(index,doID,doStatus,sss, item){
sss=!sss
......@@ -1027,6 +1055,8 @@ export default {
flowStatusList:this.clickIndex3=0?this.searchInfo.STA=[]:this.searchInfo.STA,
ownerWorkYears1:this.searchInfo.ownerWorkYears1,
ownerWorkYears2:this.searchInfo.ownerWorkYears2,
ownerExpectTitlesList:this.position,
handUpload:this.$route.query.handUpload==null?'':this.$route.query.handUpload
}
}
this.ajaxData=[]
......@@ -1530,6 +1560,7 @@ export default {
if (res.data.success == true) {
this.clearInterviewee()
this.modal8 = false
this.isShowRep=false
setTimeout(() => {
this.$Notice.success({
title: '提示',
......@@ -1537,27 +1568,36 @@ export default {
})
}, 500)
this.SouSuo(this.pageT)
} else{
this.errorCode=res.data.body.code
this.errorMassage=res.data.body.message
this.clearInterviewee()
this.modal8 = false
if(this.errorCode=='40001'){
}
if(res.data.body.code=='40009'){
this.reResumeName=res.data.body.message
this.isShowRep=true
}
if(res.data.body.code=='40001'){
this.modal8=false
this.modal12=true
this.isShowRep=false
}
if(this.errorCode=='40002'){
if(res.data.body.code=='40002'){
this.modal8=false
this.modal13=true
this.isShowRep=false
}
if(this.errorCode=='0'){
if(res.data.body.code=='0'){
this.modal8=false
this.isShowRep=false
this.$Notice.error({
title: '提示',
desc:this.errorMassage
desc: res.data.body.message
})
}
}
})
})
},800),
pushSendNotice(){
this.modal8=false,
this.isShowRep=false
},
remoteMethod: function(query){
if (query !== '') {
this.loading1 = true;
......@@ -1695,6 +1735,7 @@ export default {
this.lickIndex3 = 0
this.keywords=''
this.lrgs=''
this.position=[]
this.state.map(item => {
item.sta = item.status3=='不限' ?true:false
})
......@@ -1702,9 +1743,11 @@ export default {
pageSize:this.searchInfo.pageSize,
pageIndex:this.searchInfo.pageIndex,
parameter:{
optSourceCode:this.$route.params.channelname
sourceCode:this.$route.params.channelname,
handUpload:this.$route.query.handUpload==null?'':this.$route.query.handUpload
}
}
this.getpositionList()
this.ajaxData=[]
this.interviewee = []
adoptOneSeeResumeList(parmars).then(res=>{
......@@ -1771,6 +1814,7 @@ export default {
},
mounted(){
this.SouSuo(null, 'init')
this.getpositionList()
document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden;
if(isHidden){
......@@ -1996,4 +2040,7 @@ font-size: 14px;
.ivu-form-item-error-tip{
font-size:12px;
}
.channel .ivu-form-item-content{
line-height: 28px
}
</style>
<template>
<div class="resumeDetail">
<!-- <a href="http://172.21.10.43/group1/M00/00/08/oYYBAF1M9B6ACO58AADoAJ5PfGw173.doc">dsds</a> -->
<!-- <div class="pdfShow" v-show="isShowPdf==true">
<div id="container" style="width:100%;height:100%;" v-if="isShowPdf==true"></div>
</div> -->
<div style="width:900px;height:40px;line-height:40px;font-size:14px">
<span style="color:grey;width:75px" class="otherClass">投递时间:</span><span class="otherClass">{{resume&&resume.deliveryTime}}</span>
<span style="margin-left:30px;color:grey;width:80px" class="otherClass">面试岗位:</span ><span class="positionClass">{{resume&&resume.ownerExpectTitles}}</span>
<span style="margin-left:30px;color:grey;width:80px" class="otherClass">渠道来源:</span ><span class="positionClass">{{resume&&((resume.srcSite&&resume.srcSite) || (resume.optSource && resume.optSource+ '上传'))}}<span></span></span>
</div>
<div class="pdfShow" v-show="isShowPdf==true">
<!-- <div id="container" style="width:100%;height:100%;" v-if="isShowPdf==true"></div> -->
<embed :src="pdfUrl" type="application/pdf" width="900px" :height="px" v-if="isShowPdf==true">
</div>
<div class="resumeDetail-left" v-if="isShowPdf==false">
<div class="personalInformation" v-show="JSON.stringify(resume)!=='{}'">
<p class="detailTitel">
......@@ -11,7 +16,6 @@
<img src="https://o7oe0d6qz.qnssl.com/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px">
</span>
<span style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span>
<!-- <span style="float:right;width:50px;height:24px;margin-right:5px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(detialID)" v-show="this.showBtn!=1">下载</Button></span> -->
</p>
<div class="massageTitle">
<p>
......@@ -143,7 +147,7 @@
<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:0 0 0 15px;font-size:14px" @click="downloadONE(detialID)" >载标准简历</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>
......@@ -231,7 +235,7 @@
<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> -->
<Checkbox v-model="formInline.sendWeixin" class='wechat'><span>微信通知面试官</span></Checkbox>
</div>
</Modal>
<Modal
......@@ -251,6 +255,9 @@
<Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option>
</Select>
</FormItem>
<FormItem>
<div v-show="isShowRep==true" style="color:red">重复推荐面试官,请删除重复再推荐,重复简历:{{this.reResumeName}}</div>
</FormItem>
<FormItem label='' prop='interviewee'>
<div class='interviewee'>
<div class='pic'>
......@@ -262,7 +269,7 @@
</Form>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal8=false'>取消</Button>
<Button type='primary' @click='pushSendNotice'>取消</Button>
<Button type='primary' @click="sendNotice" >发送</Button>
</div>
</Modal>
......@@ -321,8 +328,11 @@
</template>
<script>
import moment from 'moment'
import pdf from 'vue-pdf'
// import moment from '../../../static/1.pdf'
require('../../../static/pdf/pdf.js')
import {seedetail,updatastatus,TODORes,sendEmail,getEmailMoo,getEmailContent,uploadimage, findCompanyEmailByKey,forwardResume} from '../../api/resume.server'
let mammoth = require("mammoth");
import {seedetail,updatastatus,TODORes,sendEmail,getEmailMoo,getEmailContent,uploadimage, findCompanyEmailByKey,forwardResume,getPdf,isShowPDF,getpdfUrl} from '../../api/resume.server'
import localStorage from '../../service/localstorage.service.js'
import {
sapi
......@@ -339,6 +349,7 @@ export default {
reList:[],
name:'',
detailSta:'',
pdfUrl:'',
emailMOdal:false,
tip: false,
loading1: false,
......@@ -349,7 +360,9 @@ export default {
modal13:false,
boxIsShow:false,
resumeBTn:false,
isShowPdf:false,
isShowPdf:true,
px:1200,
// src:'/api/http://172.21.10.43/group1/M00/00/58/oYYBAF2nzwqAY4fcAAHyoHPb1Ic418.pdf',
showOriginalDisabled:true,
OriginalContent:'',
StandardContent:'',
......@@ -390,6 +403,8 @@ export default {
isShowAll:false,
isShowTwo:false,
interviewIsShow:false,
reResumeName:'',
isShowRep:false,
hasINterview:false,
resumeIdList:[],
options3: {
......@@ -431,7 +446,8 @@ export default {
}
},
components:{
ckeditor
ckeditor,
pdf
},
methods: {
getDETAIL(){
......@@ -677,8 +693,6 @@ export default {
this.isShowTwo=false
this.isLimitSize=false
this.uploadFileList=[]
// this.clearInterviewee()
// this.SouSuo(this.pageT,'init')
},
submit() {
let flag = false
......@@ -717,33 +731,43 @@ export default {
if (res.data.success == true) {
this.clearInterviewee()
this.modal8 = false
this.isShowRep=false
setTimeout(() => {
this.$Notice.success({
title: '提示',
desc: '发送成功'
})
}, 300)
} else{
this.errorCode=res.data.body.code
this.errorMassage=res.data.body.message
}
if(res.data.body.code=='40009'){
this.reResumeName=res.data.body.message
this.isShowRep=true
}
if(res.data.body.code=='40001'){
this.modal8=false
this.clearInterviewee()
if(this.errorCode=='40001'){
this.modal12=true
this.isShowRep=false
}
if(this.errorCode=='40002'){
if(res.data.body.code=='40002'){
this.modal8=false
this.modal13=true
this.isShowRep=false
}
if(this.errorCode=='0'){
if(res.data.body.code=='0'){
this.modal8=false
this.isShowRep=false
this.$Notice.error({
title: '提示',
desc: this.errorMassage
desc: res.data.body.message
})
}
}
})
})
},800),
pushSendNotice(){
this.modal8=false,
this.isShowRep=false
},
transpond() { //打开转发简历的modal
this.$refs.transpondFrom.resetFields()
this.modal8= true
......@@ -752,37 +776,40 @@ export default {
delInterviewee(name){
this.contentName=''
},
// showOriginal(){
// // this.addCss()
// // this.remove()
// // document.querySelector('#app').style['overflow-x']='hidden'
showOriginal(){
// 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.isShowPdf=true
this.showOriginalDisabled=true
this.showStandardDisabled=false
},
showStandard(){
this.isShowPdf=false
// 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
// }
// })
// },
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
}
})
},
getPdfUrl(){
let parmars={
uid:this.$route.query.id
}
getpdfUrl(parmars).then(res=>{
this.pdfUrl=res.data
})
},
// 确认发送邮件
confireSendEmail: _debounce(function(){
this.sad = this.getEditorValue()
......@@ -981,14 +1008,18 @@ export default {
document.querySelector('#app').style.removeProperty('overflow-x')
},
},
mounted(){
// created(){
//     this.src = pdf.createLoadingTask(this.src)
//    },
async mounted(){
this.getPdfUrl()
this.getDETAIL()
this.boxIsShow=true
this.judeBtn()
this.addCss()
// await this.getData()
// this.clearPDF()
// await this.judeShowPdf()
await this.judeShowPdf()
},
beforeDestroy(){
this.remove()
......@@ -1006,7 +1037,6 @@ export default {
float: left;
width:860px;
min-height: 200px;
/* border: 1px solid #999 */
}
.pdfShow{
float: left;
......@@ -1027,7 +1057,6 @@ export default {
left: 13px;
top:-20px;
display: inline-block;
/* margin-left: 200px */
}
.resumeDetail-right{
float: right;
......@@ -1054,7 +1083,6 @@ export default {
}
.personalInformation{
width:860px;
/* height: 600px; */
float: left;
}
.bassMassage{
......@@ -1064,7 +1092,6 @@ export default {
margin-left:30px;
font-size: 14px;
margin-top:20px;
/* border:1px solid black; */
}
.bassMassageRight{
display: inline-block;
......@@ -1073,23 +1100,28 @@ export default {
font-size: 14px;
margin-top: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
} */
.positionClass{
display: inline-block;
max-width:200px;
overflow:hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
.otherClass{
display: inline-block;
max-width:200px;
overflow:hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
.massageTitle{
/* height: 300px; */
float: left;
}
.personalInformation-left{
......
......@@ -5,11 +5,14 @@
<span style="font-size:18px;color:#2d8cf0;margin-left:18px;">新增账户</span>
<span style="margin-left:10px;color:Grey">以下内容均为必填项</span>
</p>
<Form :label-width="130" :model="formInline" :rules="ruleInline">
<FormItem label="配置登录账号:" style="margin-top:1%" prop="PhoneNumber">
<Form :label-width="100" :model="formInline" :rules="ruleInline">
<FormItem label="登录账号" style="margin-top:1%" prop="emailNumber">
<Input placeholder="请输入企业邮箱" style="width:300px" v-model="formInline.emailNumber"/>
</FormItem>
<FormItem label="手机号码" style="margin-top:1%" prop="PhoneNumber">
<Input placeholder="请输入正确的手机号" style="width:300px" v-model="formInline.PhoneNumber"/>
</FormItem>
<FormItem label="绑定真实姓名:" style="margin-top:1%" prop="PerName">
<FormItem label="真实姓名" style="margin-top:1%" prop="PerName">
<Input placeholder="请输入真实姓名" style="width:300px" v-model="formInline.PerName" :maxlength="5"/>
</FormItem>
</Form>
......@@ -38,8 +41,10 @@
<input type='checkbox' name='checkboxinput' class='input-checkbox' v-model='checkboxList' :value="item.id" style="margin-left:25px;cursor:pointer" @click="delateArr(item.id)">
<span style="margin-left:5px" >{{item.userName}}</span>
<span style="margin-left:35px">{{item.userCode}}</span>
<span style="margin-left:35px">{{item.phone}}</span>
<span style="margin-left:35px">{{item.createTime}}</span>
<span style="margin-left:35px;color:#2d8cf0;cursor:pointer" @click="recoveryModal(item.id)">恢复初始密码</span>
<span style="margin-left:35px;color:#2d8cf0;cursor:pointer" @click="updateModal(item)">修改</span>
<span style="margin-left:35px;color:#2d8cf0;cursor:pointer" @click="delateMaodal(item.id)">删除</span>
</div>
<div style="height:10px;background:white;width:100%;"></div>
......@@ -61,6 +66,27 @@
<Button type='primary' @click='modal1=false'>取消</Button>
<Button type='primary' @click="recovery()" >确定</Button>
</div>
</Modal>
<Modal
v-model="modal6"
:closable="false"
width='450px'>
<h3 style="text-align:center;font-size:14px">修改信息</h3>
<Form :label-width="100" :model="formInline" :rules="ruleInline" class="updateClassModal">
<FormItem label="登录账号" style="margin-top:1%" prop="emailNumber">
<Input placeholder="请输入企业邮箱" style="width:300px;" v-model="formInline.updateemailNumber" disabled/>
</FormItem>
<FormItem label="手机号码" style="margin-top:1%" prop="updatePhoneNumber">
<Input placeholder="请输入正确的手机号" style="width:300px;" v-model="formInline.updatePhoneNumber"/>
</FormItem>
<FormItem label="真实姓名" style="margin-top:1%" prop="updatePerName">
<Input placeholder="请输入真实姓名" style="width:300px;" v-model="formInline.updatePerName" :maxlength="5"/>
</FormItem>
</Form>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal6=false'>取消</Button>
<Button type='primary' @click="confireUpdate" >确定</Button>
</div>
</Modal>
<!-- 删除当前的账户 -->
<Modal
......@@ -98,7 +124,7 @@
</div>
</template>
<script>
import { queryaccountList,addAccount,Delateaccount,delateAllAccount,recoveryPassword} from '../../api/stystem.server.js'
import { queryaccountList,addAccount,Delateaccount,delateAllAccount,recoveryPassword,updateAccount} from '../../api/stystem.server.js'
export default {
data(){
return {
......@@ -106,8 +132,10 @@ export default {
modal2:false,
modal3:false,
modal4:false,
modal6:false,
checkboxList:[],
checked: false,
updateAccountId:'',
pageT:'',
userName:'',
userCode:'',
......@@ -126,7 +154,11 @@ export default {
},
formInline: {
PhoneNumber: '',
PerName: ''
PerName: '',
emailNumber:'',
updatePhoneNumber: '',
updatePerName: '',
updateemailNumber:''
},
ruleInline: {
PhoneNumber: [
......@@ -135,7 +167,17 @@ export default {
PerName: [
{ required: true, message: '请输入真实的姓名', trigger: 'blur' },
{ type: 'string', message: '', trigger: 'blur' }
]
],
updateemailNumber: [
{ required: true, pattern:/^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
],
updatePerName: [
{ required: true, message: '请输入真实的姓名', trigger: 'blur' },
{ type: 'string', message: '', trigger: 'blur' }
],
emailNumber: [
{ required: true, pattern:/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, message: '请输入正确的邮箱账号', trigger: 'blur' }
],
},
ajaxData:[],
checkData: [] ,// 双向数据绑定的数组
......@@ -169,16 +211,69 @@ export default {
});
}
},
// 修改
updateModal(item){
this.modal6=true
this.updateAccountId=item.id
this.formInline.updateemailNumber=item.userCode
this.formInline.updatePhoneNumber=item.phone
this.formInline.updatePerName=item.userName
},
// 确认修改
confireUpdate(){
let parmars={
id:this.updateAccountId,
userCode:this.formInline.updateemailNumber,
userName:this.formInline.updatePerName,
phone:this.formInline.updatePhoneNumber
}
if(this.formInline.updatePhoneNumber==''||this.formInline.updatePerName==''){
this.$Notice.error({
title: '提示',
desc: '请您填写正确的手机号码或姓名',
duration:2
});
return
}
if(!(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.updatePhoneNumber))){
this.$Notice.error({
title: '提示',
desc: '请您填写正确的手机号',
duration:2
});
return
}
updateAccount(parmars).then(res=>{
if(res.data.success==true){
this.$Notice.success({
title: '提示',
desc: '修改成功',
duration:2
});
this.modal6=false
this.SearchList()
}
if(res.data.success==false){
this.$Notice.error({
title: '提示',
desc: res.data.body.message,
duration:2
});
this.modal6=false
}
})
},
//添加账户
addacount(){
let parmars={
userCode:this.formInline.PhoneNumber,
userName:this.formInline.PerName
userCode:this.formInline.emailNumber,
userName:this.formInline.PerName,
phone:this.formInline.PhoneNumber
}
if(this.formInline.PhoneNumber==''||this.formInline.PerName==''){
if(this.formInline.PhoneNumber==''||this.formInline.PerName==''||this.formInline.emailNumber==''){
this.$Notice.error({
title: '提示',
desc: '请您填写正确的手机号或姓名',
desc: '请您填写正确的号或姓名',
duration:2
});
return
......@@ -192,6 +287,14 @@ export default {
});
return
}
if(!(/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(this.formInline.emailNumber))){
this.$Notice.error({
title: '提示',
desc: '请您填写正确邮箱账号',
duration:2
});
return
}
addAccount(parmars).then(res=>{
if(res.data.success==true){
this.$Notice.success({
......@@ -202,6 +305,7 @@ export default {
this.SearchList()
this.formInline.PhoneNumber=''
this.formInline.PerName=''
this.formInline.emailNumber=''
}
if(res.data.body.code==0){
this.Massage=res.data.body.message
......@@ -212,6 +316,7 @@ export default {
});
this.formInline.PhoneNumber=''
this.formInline.PerName=''
this.formInline.emailNumber=''
return
}
})
......@@ -347,7 +452,7 @@ export default {
overflow: hidden;
}
.addAcount{
height:210px;
height:240px;
width:100%;
}
.pageBottom{
......@@ -376,7 +481,7 @@ export default {
display: inline-block;
}
.detailQQ :nth-child(3){
width: 80px;
width: 180px;
display: inline-block;
}
.detailQQ :nth-child(4){
......@@ -384,3 +489,8 @@ export default {
display: inline-block;
}
</style>
<style>
.updateClassModal .ivu-input{
color: grey !important
}
</style>
......@@ -3,7 +3,7 @@
<div class="addEmail">
<p style="margin-top:10px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">新增接收邮箱</span>
<span style="margin-left:10px;color:Grey">绑定邮箱以接收简历</span>
<span style="margin-left:10px;color:Grey">绑定邮箱以接收简历,仅可绑定一个邮箱</span>
</p>
<Form :label-width="100" :model="formInline" :rules="ruleInline">
<FormItem label="邮箱账号" style="margin-top:20px" prop="emailNumber">
......@@ -20,7 +20,7 @@
<FormItem label="所属人" style="margin-top:20px; position: absolute;top:110px;left: 410px" prop="UserName" :label-width="180">
<Input placeholder="请输入所属者正确姓名" style="width:300px" v-model="formInline.UserName" :maxlength="5"/>
</FormItem>
<span type="primary" style="line-height:30px;text-align:center; width:110px;height:30px;position: absolute;top:130px;left: 910px;border-radius: 5px;background:rgb(0, 146, 255);color:rgb(255,255,255);cursor:pointer" @click="bindingSynchronizat">绑定并开始同步</span>
<Button type="primary" style="position: absolute;top:130px;left: 910px;" :disabled='disabled' @click="bindingSynchronizat">绑定并开始同步</Button>
</Form>
</div>
<div class="Emailmange">
......@@ -69,7 +69,7 @@
<h3 style="text-align:center">提示</h3>
<p style="height:30px;line-height:30px">同步完成,如密码发生改变,请及时点击<br><span>修改</span>来重置密码</p>
<!-- <h2 style="text-align:center;font-size:18px;color:#2d8cf0;height:40px;line-height:40px;margin-top:30px" @click="pushlist">我已知晓</h2> -->
<Button type="primary" style="margin:40px 0 0 80px" @click="modal2=false">我已知晓</Button>
<Button type="primary" style="margin:40px 0 0 80px" @click="iKnow">我已知晓</Button>
</Modal>
<!-- 同步绑定 -->
<Modal
......@@ -133,6 +133,7 @@
</template>
<script>
import { queryemailList,Synchronization,jiebangEmail,updateemailTWO,UntyingAll} from '../../api/stystem.server.js'
import moment from 'moment'
export default {
data(){
return {
......@@ -165,6 +166,7 @@ export default {
Tblengs:'',
checkboxList:[],
checked: false,
disabled:false,
pageIndex:1,
pageSize:30,
totalSize:null,
......@@ -181,7 +183,7 @@ export default {
ruleInline: {
emailNumber: [
// derong.zhang@quantgroup.cn
{ required: true, pattern:/\S+@quantgroup.cn/, message: '请输入正确的邮箱账号', trigger: 'blur' }
{ required: true, pattern:/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, message: '请输入正确的邮箱账号', trigger: 'blur' }
],
emailPsd: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' },
......@@ -217,12 +219,13 @@ export default {
});
return
}
this.disabled=true
this.modal3=true
let parmars={
emailName:this.formInline.emailNumber,
emailPassword:this.formInline.emailPsd,
belongs:this.formInline.UserName,
syncStartDate:this.DATA
syncStartDate:moment(this.DATA).format('YYYY-MM-DD HH:mm:ss')
}
Synchronization(parmars).then(res=>{
if(res.data.success==true){
......@@ -233,9 +236,11 @@ export default {
this.formInline.UserName=''
this.DATA=''
this.SearchList()
// this.disabled=false
}
if(res.data.success==false){
this.modal3=false
this.disabled=false
this.Massage=res.data.body.message
this.$Notice.error({
title: '提示',
......@@ -249,6 +254,10 @@ export default {
this.formInline.emailPsd=''
})
},
iKnow(){
this.modal2=false,
this.disabled=false
},
//选择同步的时间
selectTime(b){
this.DATA=b
......
......@@ -33,7 +33,7 @@ function tryHideFullScreenLoading() {
}, 200)
}
}
let needLoading = ['resume/findListByQueryVO', 'sendMail/sendEmailTemplate', 'resume/forwardResume', 'interview/findListByQueryVO']
let needLoading = ['resume/findListByQueryVO', 'sendMail/sendEmailTemplate', 'resume/forwardResume', 'interview/findListByQueryVO','resume/delete']
instance.interceptors.request.use(function (config) {
// 在发送请求之前做些什么
if (!config.headers['Content-Type']) {
......
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