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 @@ ...@@ -885,8 +885,7 @@
"babel-plugin-syntax-dynamic-import": { "babel-plugin-syntax-dynamic-import": {
"version": "6.18.0", "version": "6.18.0",
"resolved": "http://npmprivate.quantgroups.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz", "resolved": "http://npmprivate.quantgroups.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
"integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo=", "integrity": "sha1-jWomIpyDdFqZgqRBBRVyyqF5sdo="
"dev": true
}, },
"babel-plugin-syntax-exponentiation-operator": { "babel-plugin-syntax-exponentiation-operator": {
"version": "6.13.0", "version": "6.13.0",
...@@ -6891,6 +6890,11 @@ ...@@ -6891,6 +6890,11 @@
"lower-case": "^1.1.1" "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": { "node-forge": {
"version": "0.7.5", "version": "0.7.5",
"resolved": "http://npmprivate.quantgroups.com/node-forge/-/node-forge-0.7.5.tgz", "resolved": "http://npmprivate.quantgroups.com/node-forge/-/node-forge-0.7.5.tgz",
...@@ -7760,6 +7764,15 @@ ...@@ -7760,6 +7764,15 @@
"sha.js": "^2.4.8" "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": { "performance-now": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
...@@ -8631,6 +8644,11 @@ ...@@ -8631,6 +8644,11 @@
"unpipe": "1.0.0" "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": { "read-cache": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/read-cache/-/read-cache-1.0.0.tgz", "resolved": "http://npmprivate.quantgroups.com/read-cache/-/read-cache-1.0.0.tgz",
...@@ -10506,6 +10524,23 @@ ...@@ -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": { "vue-router": {
"version": "3.0.6", "version": "3.0.6",
"resolved": "http://npmprivate.quantgroups.com/vue-router/-/vue-router-3.0.6.tgz", "resolved": "http://npmprivate.quantgroups.com/vue-router/-/vue-router-3.0.6.tgz",
...@@ -11056,6 +11091,52 @@ ...@@ -11056,6 +11091,52 @@
"errno": "~0.1.7" "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": { "wrap-ansi": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "resolved": "http://npmprivate.quantgroups.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
"moment": "^2.24.0", "moment": "^2.24.0",
"qs": "^6.7.0", "qs": "^6.7.0",
"vue": "^2.5.2", "vue": "^2.5.2",
"vue-pdf": "^4.0.7",
"vue-router": "^3.0.1", "vue-router": "^3.0.1",
"vue-upload-component": "^2.8.20", "vue-upload-component": "^2.8.20",
"vuex": "^3.1.1" "vuex": "^3.1.1"
......
...@@ -131,18 +131,29 @@ export function forwardResume(params) { ...@@ -131,18 +131,29 @@ export function forwardResume(params) {
'Content-Type':'application/json' 'Content-Type':'application/json'
}}) }})
} }
// export function getPdf(parmars) { export function getPdf(parmars) {
// return axios.get(`${sapi}/api/resume/getResumePdfByResumeId/${parmars.uid}`,{ return axios.get(`${sapi}/api/resume/getResumePdfByResumeId/${parmars.uid}`,{
// responseType: 'arraybuffer', responseType: 'arraybuffer',
// headers: { headers: {
// 'Content-Type':'application/json' 'Content-Type':'application/json'
// } }
// }) })
// } }
// // 是否展示原件的PDF // 是否展示原件的PDF
// export function isShowPDF(parmars) { export function isShowPDF(parmars) {
// return axios.get(`${sapi}/api/resume//isShowOriPdf/${parmars.uid}`, {headers: { return axios.get(`${sapi}/api/resume/isShowOriPdf/${parmars.uid}`, {headers: {
// 'Content-Type':'application/json' '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(){ ...@@ -69,9 +69,9 @@ export function getErcode(){
'Content-Type':'application/json', 'Content-Type':'application/json',
}}) }})
} }
// //下载二维码 // //修改账户
// export function downloadErcode(){ export function updateAccount(parmars){
// return axios.get(`${sapi}/qrCode/downQrCode`,{headers: { return axios.post(`${sapi}/api/user/modify/${parmars.id}`,parmars,{headers: {
// 'Content-Type':'application/json', 'Content-Type':'application/json',
// }}) }})
// } }
\ No newline at end of file \ No newline at end of file
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
</template> </template>
</Menu> </Menu>
</Col> </Col>
<Col span="21" class="content" style="width:83%;height:100%"> <Col span="21" class="content" style="width:83%;height:100%;">
<Row class="header" style="height:50px"> <Row class="header" style="height:50px;">
<Col span="20"> <Col span="20">
<Menu mode="horizontal" :active-name="levelOneName" @on-select="selectMenu"> <Menu mode="horizontal" :active-name="levelOneName" @on-select="selectMenu">
<MenuItem v-for="menu in menuList" :name="menu.name" :key="menu.name" > <MenuItem v-for="menu in menuList" :name="menu.name" :key="menu.name" >
...@@ -222,7 +222,7 @@ import {mapState} from 'vuex' ...@@ -222,7 +222,7 @@ import {mapState} from 'vuex'
var obj = { var obj = {
name: `${item.sourceName}`, name: `${item.sourceName}`,
item: 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) this.menuList[0].child[1].child.push(obj)
}) })
......
...@@ -664,6 +664,7 @@ export default { ...@@ -664,6 +664,7 @@ export default {
flowStatusList:this.searchInfo.STA, flowStatusList:this.searchInfo.STA,
interviewerName:this.interviewerName, interviewerName:this.interviewerName,
inviterName:this.inviterName, inviterName:this.inviterName,
handUpload:''
} }
} }
SerchList(parmars).then(res=>{ SerchList(parmars).then(res=>{
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<div class="login_content"> <div class="login_content">
<Form ref="formInline" :model="formInline" :rules="ruleInline" style="height:161px"> <Form ref="formInline" :model="formInline" :rules="ruleInline" style="height:161px">
<FormItem prop="user" style="height:60px"> <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> <Icon type="ios-person-outline" slot="prepend" ></Icon>
</Input> </Input>
</FormItem> </FormItem>
...@@ -53,7 +53,7 @@ export default { ...@@ -53,7 +53,7 @@ export default {
}, },
ruleInline: { ruleInline: {
user: [ 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: [ password: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' }, { required: true, message: '请输入正确的密码', trigger: 'blur' },
......
...@@ -3,33 +3,37 @@ ...@@ -3,33 +3,37 @@
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> --> <!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> -->
<div class="allResume-left"> <div class="allResume-left">
<Form :label-width="90" style="width:88%;margin:0 auto;" class='emailForm'> <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()"/> <Input placeholder="请输入关键词" style="width:98%" v-model="keywords" @keyup.enter.native="SouSuo()"/>
</FormItem> </FormItem>
<FormItem label="历任公司:"> <FormItem label="历任公司:" class="lrgs" style="margin-bottom:12px">
<Input placeholder="请输入历任公司" style="width:98%" v-model="lrgs" @keyup.enter.native="SouSuo()"/> <Input placeholder="请输入历任公司" style="width:98%" v-model="lrgs" @keyup.enter.native="SouSuo()"/>
</FormItem> </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> <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>
<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> <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>
<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> <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>
<FormItem label="工作年限:"> <FormItem label="工作年限:" class="keywords" style="margin-bottom:10px">
<span style="width:100px;"> <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> <Option v-for="(item, index) in ownerWorkYears1" :value="item.value" :key="index">{{item.label}}</Option>
</Select> </Select>
<span>-</span> <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> <Option v-for="(item, index) in ownerWorkYears2" :value="item.value" :key="index">{{item.label}}</Option>
</Select> </Select>
</span><br> </span><br>
</FormItem> </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> </Form>
<Button type="primary" style="width:30%;margin-left:34%;font-size:13px;background:#0092FF" @click="SouSuo(item.Num1,item.Num2,item.Num3)">搜索</Button> <Button type="primary" style="width:30%;margin-left:34%;font-size:13px;background:#0092FF" @click="SouSuo(item.Num1,item.Num2,item.Num3)">搜索</Button>
</div> </div>
...@@ -140,6 +144,9 @@ ...@@ -140,6 +144,9 @@
<span>{{item.approveUserName}}</span> <span>{{item.approveUserName}}</span>
<span>{{item.dateTime}}</span> <span>{{item.dateTime}}</span>
<span style="color:blue" v-if=" item.previousState=='INTERVIEW_OK'">面试合适</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=='INTERVIEW_FAIL'">面试淘汰</span>
<span style="color:blue" v-if=" item.previousState=='END'">终止面试</span> <span style="color:blue" v-if=" item.previousState=='END'">终止面试</span>
<span style="color:blue" v-if=" item.previousState=='SEE_FAIL'">约面失败</span> <span style="color:blue" v-if=" item.previousState=='SEE_FAIL'">约面失败</span>
...@@ -172,6 +179,9 @@ ...@@ -172,6 +179,9 @@
<span style="color:blue" v-if=" item.afterState=='TO_DO'">待处理</span> <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=='RESET'">重启面试</span>
<span style="color:blue" v-if=" item.afterState=='ARRIVED'">已到达</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> </p>
</div> </div>
...@@ -313,7 +323,7 @@ ...@@ -313,7 +323,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
...@@ -371,6 +381,9 @@ ...@@ -371,6 +381,9 @@
<Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option> <Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem>
<div v-show="isShowRep==true" style="color:red">重复推荐面试官,请删除重复再推荐,重复简历:{{this.reResumeName}}</div>
</FormItem>
<FormItem label='' prop='interviewee'> <FormItem label='' prop='interviewee'>
<div v-for='(item, index) in interviewee' :key='index' class='interviewee'> <div v-for='(item, index) in interviewee' :key='index' class='interviewee'>
<div class='pic'> <div class='pic'>
...@@ -383,7 +396,7 @@ ...@@ -383,7 +396,7 @@
</Form> </Form>
</div> </div>
<div slot='footer' style="text-align:center"> <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> <Button type='primary' @click="sendNotice" >发送</Button>
</div> </div>
</Modal> </Modal>
...@@ -405,7 +418,7 @@ ...@@ -405,7 +418,7 @@
</template> </template>
<script> <script>
import moment from 'moment' 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 {Serchinterviewor} from '../../api/interview.server.js'
import qs from 'qs' import qs from 'qs'
import { import {
...@@ -423,6 +436,10 @@ import {mapState} from 'vuex' ...@@ -423,6 +436,10 @@ import {mapState} from 'vuex'
errorInfo: '', errorInfo: '',
interviewee: [], interviewee: [],
interviewerNameList: [], interviewerNameList: [],
position:[],
handUploadCode:'',
positionArr:[
],
tip: false, tip: false,
tipInfo: '输入多个邮箱地址以英文”;“分隔', tipInfo: '输入多个邮箱地址以英文”;“分隔',
sad:'', sad:'',
...@@ -473,6 +490,7 @@ import {mapState} from 'vuex' ...@@ -473,6 +490,7 @@ import {mapState} from 'vuex'
limentName:0, limentName:0,
errorMassage:'', errorMassage:'',
errorCode:'', errorCode:'',
isShowRep:false,
emailMassage:false, emailMassage:false,
allEmailVilitor:false, allEmailVilitor:false,
emailContent:'', emailContent:'',
...@@ -561,6 +579,7 @@ import {mapState} from 'vuex' ...@@ -561,6 +579,7 @@ import {mapState} from 'vuex'
delateARRALL3:[], delateARRALL3:[],
flowStatusarr:[], flowStatusarr:[],
flowStatusarr2:[], flowStatusarr2:[],
reResumeName:'',
DELATEARR:[], DELATEARR:[],
quanxuan:[], quanxuan:[],
orignarr:['TO_SEE','HAS_SEE','SEE_FAIL','INTERVIEW_FAIL','TO_SENT_OFFER','TO_ENTRY','HAS_ENTRY','NO_ENTRY','END','ARRIVED'], 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' ...@@ -727,6 +746,14 @@ import {mapState} from 'vuex'
} }
}) })
}, },
getpositionList(){
let parmars={
optSourceCode:''
}
getlist(parmars).then(res=>{
this.positionArr=res.data.body
})
},
//选择搜索元素 //选择搜索元素
selectElement1(tItem,Tindex){ selectElement1(tItem,Tindex){
this.searchInfo.SEX=Tindex==0?'':tItem; this.searchInfo.SEX=Tindex==0?'':tItem;
...@@ -795,6 +822,8 @@ import {mapState} from 'vuex' ...@@ -795,6 +822,8 @@ import {mapState} from 'vuex'
flowStatusList:this.searchInfo.STA, flowStatusList:this.searchInfo.STA,
ownerWorkYears1:this.searchInfo.ownerWorkYears1, ownerWorkYears1:this.searchInfo.ownerWorkYears1,
ownerWorkYears2:this.searchInfo.ownerWorkYears2, ownerWorkYears2:this.searchInfo.ownerWorkYears2,
ownerExpectTitlesList:this.position,
handUpload:''
} }
} }
this.ajaxData=[] this.ajaxData=[]
...@@ -916,7 +945,6 @@ import {mapState} from 'vuex' ...@@ -916,7 +945,6 @@ import {mapState} from 'vuex'
}) })
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}`
...@@ -951,7 +979,7 @@ import {mapState} from 'vuex' ...@@ -951,7 +979,7 @@ import {mapState} from 'vuex'
this.removeInterviewee({id:item}) this.removeInterviewee({id:item})
}) })
this.modal3=false this.modal3=false
this.SouSuo(this.pageT) this.SouSuo(this.pageT,'init')
} }
}) })
}, },
...@@ -1124,7 +1152,6 @@ import {mapState} from 'vuex' ...@@ -1124,7 +1152,6 @@ import {mapState} from 'vuex'
sendEmail(type,status,SID){ sendEmail(type,status,SID){
this.selectElementValue=status this.selectElementValue=status
this.resumePushId=SID 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: '提示',
...@@ -1534,6 +1561,7 @@ import {mapState} from 'vuex' ...@@ -1534,6 +1561,7 @@ import {mapState} from 'vuex'
if (res.data.success == true) { if (res.data.success == true) {
this.clearInterviewee() this.clearInterviewee()
this.modal8 = false this.modal8 = false
this.isShowRep=false
setTimeout(() => { setTimeout(() => {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: '提示',
...@@ -1541,35 +1569,36 @@ import {mapState} from 'vuex' ...@@ -1541,35 +1569,36 @@ import {mapState} from 'vuex'
}) })
}, 300) }, 300)
this.SouSuo(this.pageT) this.SouSuo(this.pageT)
} else{ }
this.errorCode=res.data.body.code if(res.data.body.code=='40009'){
this.errorMassage=res.data.body.message this.reResumeName=res.data.body.message
this.isShowRep=true
}
if(res.data.body.code=='40001'){
this.modal8=false this.modal8=false
this.clearInterviewee()
if(this.errorCode=='40001'){
this.modal12=true this.modal12=true
this.isShowRep=false
} }
if(this.errorCode=='40002'){ if(res.data.body.code=='40002'){
this.modal8=false
this.modal13=true 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({ this.$Notice.error({
title: '提示', title: '提示',
desc: this.errorMassage desc: res.data.body.message
}) })
} }
// setTimeout(() => {
// this.$Notice.error({
// title: '提示',
// desc: '发送失败'
// })
// }, 500)
// this.clearInterviewee()
// this.modal8 = false
}
}) })
}) })
},800), },800),
pushSendNotice(){
this.modal8=false,
this.isShowRep=false
},
remoteMethod: async function(query){ remoteMethod: async function(query){
if (query !== '') { if (query !== '') {
this.loading1 = true; this.loading1 = true;
...@@ -1721,6 +1750,7 @@ import {mapState} from 'vuex' ...@@ -1721,6 +1750,7 @@ import {mapState} from 'vuex'
}, },
mounted(){ mounted(){
this.SouSuo(null, 'init') this.SouSuo(null, 'init')
this.getpositionList()
document.addEventListener('visibilitychange',()=>{ document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden; var isHidden = document.hidden;
if(isHidden){ if(isHidden){
...@@ -1972,4 +2002,13 @@ font-size: 14px; ...@@ -1972,4 +2002,13 @@ font-size: 14px;
.allResume .ivu-form-item-error-tip{ .allResume .ivu-form-item-error-tip{
font-size:12px; 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> </style>
\ No newline at end of file
...@@ -3,32 +3,37 @@ ...@@ -3,32 +3,37 @@
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:20px">加载中...</Spin> --> <!-- <Spin size="large" fix v-if="spinShow" style="font-size:20px">加载中...</Spin> -->
<div class="channel-left"> <div class="channel-left">
<Form :label-width="90" style="width:88%;margin:0 auto;" class='emailForm'> <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)"/> <Input placeholder="请输入关键词" style="width:98%" v-model="keywords" @keyup.enter.native="SouSuo(item.Num1,item.Num2,item.Num3)"/>
</FormItem> </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)"/> <Input placeholder="请输入历任公司" style="width:98%" v-model="lrgs" @keyup.enter.native="SouSuo(item.Num1,item.Num2,item.Num3)"/>
</FormItem> </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> <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>
<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> <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>
<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> <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>
<FormItem label="工作年限:" style=""> <FormItem label="工作年限:" style="margin-bottom:10px">
<span style="width:100px"> <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> <Option v-for="item in ownerWorkYears1" :value="item.value" :key="item.value">{{item.label}}</Option>
</Select> </Select>
<span>-</span> <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> <Option v-for="item in ownerWorkYears2" :value="item.value" :key="item.value">{{item.label}}</Option>
</Select> </Select>
</span><br> </span><br>
</FormItem> </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> </Form>
<Button type="primary" style="width:30%;margin-left:34%;font-size:13px" @click="SouSuo(item.Num1,item.Num2,item.Num3)">搜索</Button> <Button type="primary" style="width:30%;margin-left:34%;font-size:13px" @click="SouSuo(item.Num1,item.Num2,item.Num3)">搜索</Button>
</div> </div>
...@@ -102,7 +107,7 @@ ...@@ -102,7 +107,7 @@
<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: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;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;margin-left:20px;color:Grey" v-if="item.srcSite!==''" v-show="item.hasForward==null">{{item.deliveryTime}}投递 |</span>
<span style="display:inline-block;font-size: 14px;color:Grey;margin-left:20px" v-if="item.srcSite==''" v-show="item.hasForward==null">{{item.deliveryTime}}上传 <span v-show="item.optSource!==''"> |</span></span> <span style="display:inline-block;font-size: 14px;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 @@ ...@@ -137,6 +142,9 @@
<span>{{item.approveUserName}}</span> <span>{{item.approveUserName}}</span>
<span>{{item.dateTime}}</span> <span>{{item.dateTime}}</span>
<span style="color:blue" v-if=" item.previousState=='INTERVIEW_OK'">面试合适</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=='INTERVIEW_FAIL'">面试淘汰</span>
<span style="color:blue" v-if=" item.previousState=='END'">终止面试</span> <span style="color:blue" v-if=" item.previousState=='END'">终止面试</span>
<span style="color:blue" v-if=" item.previousState=='SEE_FAIL'">约面失败</span> <span style="color:blue" v-if=" item.previousState=='SEE_FAIL'">约面失败</span>
...@@ -169,6 +177,9 @@ ...@@ -169,6 +177,9 @@
<span style="color:blue" v-if=" item.afterState=='TO_DO'">待处理</span> <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=='RESET'">重启面试</span>
<span style="color:blue" v-if=" item.afterState=='ARRIVED'">已到达</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> </p>
</div> </div>
...@@ -333,7 +344,7 @@ ...@@ -333,7 +344,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
...@@ -367,6 +378,9 @@ ...@@ -367,6 +378,9 @@
<Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option> <Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem>
<div v-show="isShowRep==true" style="color:red">重复推荐面试官,请删除重复再推荐,重复简历:{{this.reResumeName}}</div>
</FormItem>
<FormItem label='' prop='interviewee' > <FormItem label='' prop='interviewee' >
<div v-for='(item, index) in interviewee' :key='index' class='interviewee'> <div v-for='(item, index) in interviewee' :key='index' class='interviewee'>
<div class='pic'> <div class='pic'>
...@@ -379,7 +393,7 @@ ...@@ -379,7 +393,7 @@
</Form> </Form>
</div> </div>
<div slot='footer' style="text-align:center"> <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> <Button type='primary' @click="sendNotice" >发送</Button>
</div> </div>
</Modal> </Modal>
...@@ -401,7 +415,7 @@ ...@@ -401,7 +415,7 @@
</template> </template>
<script> <script>
import moment from 'moment' 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 {Serchinterviewor} from '../../api/interview.server.js'
import { import {
sapi sapi
...@@ -418,6 +432,10 @@ export default { ...@@ -418,6 +432,10 @@ export default {
tip: false, tip: false,
tipInfo: '输入多个邮箱地址以英文”;“分隔', tipInfo: '输入多个邮箱地址以英文”;“分隔',
errorInfo: '', errorInfo: '',
position:[],
isShowRep:false,
positionArr:[
],
ruleInline: { ruleInline: {
UpdateOWER: [ UpdateOWER: [
{ required: true, message: '邀约人不能为空', trigger: 'blur', validator: emailValidata.bind(this)} { required: true, message: '邀约人不能为空', trigger: 'blur', validator: emailValidata.bind(this)}
...@@ -520,6 +538,7 @@ export default { ...@@ -520,6 +538,7 @@ export default {
modal12:false, modal12:false,
modal13:false, modal13:false,
resumePushId:'', resumePushId:'',
reResumeName:'',
optcode:'', optcode:'',
toseename:'', toseename:'',
// UpdateOWER:'', // UpdateOWER:'',
...@@ -769,6 +788,15 @@ export default { ...@@ -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元素 // 选择input元素
selectInputElement(index,doID,doStatus,sss, item){ selectInputElement(index,doID,doStatus,sss, item){
sss=!sss sss=!sss
...@@ -1027,6 +1055,8 @@ export default { ...@@ -1027,6 +1055,8 @@ export default {
flowStatusList:this.clickIndex3=0?this.searchInfo.STA=[]:this.searchInfo.STA, flowStatusList:this.clickIndex3=0?this.searchInfo.STA=[]:this.searchInfo.STA,
ownerWorkYears1:this.searchInfo.ownerWorkYears1, ownerWorkYears1:this.searchInfo.ownerWorkYears1,
ownerWorkYears2:this.searchInfo.ownerWorkYears2, ownerWorkYears2:this.searchInfo.ownerWorkYears2,
ownerExpectTitlesList:this.position,
handUpload:this.$route.query.handUpload==null?'':this.$route.query.handUpload
} }
} }
this.ajaxData=[] this.ajaxData=[]
...@@ -1530,6 +1560,7 @@ export default { ...@@ -1530,6 +1560,7 @@ export default {
if (res.data.success == true) { if (res.data.success == true) {
this.clearInterviewee() this.clearInterviewee()
this.modal8 = false this.modal8 = false
this.isShowRep=false
setTimeout(() => { setTimeout(() => {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: '提示',
...@@ -1537,27 +1568,36 @@ export default { ...@@ -1537,27 +1568,36 @@ export default {
}) })
}, 500) }, 500)
this.SouSuo(this.pageT) this.SouSuo(this.pageT)
} else{ }
this.errorCode=res.data.body.code if(res.data.body.code=='40009'){
this.errorMassage=res.data.body.message this.reResumeName=res.data.body.message
this.clearInterviewee() this.isShowRep=true
this.modal8 = false }
if(this.errorCode=='40001'){ if(res.data.body.code=='40001'){
this.modal8=false
this.modal12=true this.modal12=true
this.isShowRep=false
} }
if(this.errorCode=='40002'){ if(res.data.body.code=='40002'){
this.modal8=false
this.modal13=true 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({ this.$Notice.error({
title: '提示', title: '提示',
desc:this.errorMassage desc: res.data.body.message
}) })
} }
}
}) })
}) })
},800), },800),
pushSendNotice(){
this.modal8=false,
this.isShowRep=false
},
remoteMethod: function(query){ remoteMethod: function(query){
if (query !== '') { if (query !== '') {
this.loading1 = true; this.loading1 = true;
...@@ -1695,6 +1735,7 @@ export default { ...@@ -1695,6 +1735,7 @@ export default {
this.lickIndex3 = 0 this.lickIndex3 = 0
this.keywords='' this.keywords=''
this.lrgs='' this.lrgs=''
this.position=[]
this.state.map(item => { this.state.map(item => {
item.sta = item.status3=='不限' ?true:false item.sta = item.status3=='不限' ?true:false
}) })
...@@ -1702,9 +1743,11 @@ export default { ...@@ -1702,9 +1743,11 @@ export default {
pageSize:this.searchInfo.pageSize, pageSize:this.searchInfo.pageSize,
pageIndex:this.searchInfo.pageIndex, pageIndex:this.searchInfo.pageIndex,
parameter:{ 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.ajaxData=[]
this.interviewee = [] this.interviewee = []
adoptOneSeeResumeList(parmars).then(res=>{ adoptOneSeeResumeList(parmars).then(res=>{
...@@ -1771,6 +1814,7 @@ export default { ...@@ -1771,6 +1814,7 @@ export default {
}, },
mounted(){ mounted(){
this.SouSuo(null, 'init') this.SouSuo(null, 'init')
this.getpositionList()
document.addEventListener('visibilitychange',()=>{ document.addEventListener('visibilitychange',()=>{
var isHidden = document.hidden; var isHidden = document.hidden;
if(isHidden){ if(isHidden){
...@@ -1996,4 +2040,7 @@ font-size: 14px; ...@@ -1996,4 +2040,7 @@ font-size: 14px;
.ivu-form-item-error-tip{ .ivu-form-item-error-tip{
font-size:12px; font-size:12px;
} }
.channel .ivu-form-item-content{
line-height: 28px
}
</style> </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 style="width:900px;height:40px;line-height:40px;font-size:14px">
<!-- <div class="pdfShow" v-show="isShowPdf==true"> <span style="color:grey;width:75px" class="otherClass">投递时间:</span><span class="otherClass">{{resume&&resume.deliveryTime}}</span>
<div id="container" style="width:100%;height:100%;" v-if="isShowPdf==true"></div> <span style="margin-left:30px;color:grey;width:80px" class="otherClass">面试岗位:</span ><span class="positionClass">{{resume&&resume.ownerExpectTitles}}</span>
</div> --> <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="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">
...@@ -11,7 +16,6 @@ ...@@ -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"> <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> -->
</p> </p>
<div class="massageTitle"> <div class="massageTitle">
<p> <p>
...@@ -143,7 +147,7 @@ ...@@ -143,7 +147,7 @@
<div class="testResume"> <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 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: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> <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> <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" 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 @@ ...@@ -231,7 +235,7 @@
<Button type='primary' @click='emailModalPush'>取消</Button> <Button type='primary' @click='emailModalPush'>取消</Button>
<Button type='primary' @click='submit'>发送</Button> <Button type='primary' @click='submit'>发送</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
...@@ -251,6 +255,9 @@ ...@@ -251,6 +255,9 @@
<Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option> <Option v-for='(item, index) in options' :key='index' :value='item.email'>{{item.name}}({{item.email}})</Option>
</Select> </Select>
</FormItem> </FormItem>
<FormItem>
<div v-show="isShowRep==true" style="color:red">重复推荐面试官,请删除重复再推荐,重复简历:{{this.reResumeName}}</div>
</FormItem>
<FormItem label='' prop='interviewee'> <FormItem label='' prop='interviewee'>
<div class='interviewee'> <div class='interviewee'>
<div class='pic'> <div class='pic'>
...@@ -262,7 +269,7 @@ ...@@ -262,7 +269,7 @@
</Form> </Form>
</div> </div>
<div slot='footer' style="text-align:center"> <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> <Button type='primary' @click="sendNotice" >发送</Button>
</div> </div>
</Modal> </Modal>
...@@ -321,8 +328,11 @@ ...@@ -321,8 +328,11 @@
</template> </template>
<script> <script>
import moment from 'moment' import moment from 'moment'
import pdf from 'vue-pdf'
// import moment from '../../../static/1.pdf'
require('../../../static/pdf/pdf.js') 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 localStorage from '../../service/localstorage.service.js'
import { import {
sapi sapi
...@@ -339,6 +349,7 @@ export default { ...@@ -339,6 +349,7 @@ export default {
reList:[], reList:[],
name:'', name:'',
detailSta:'', detailSta:'',
pdfUrl:'',
emailMOdal:false, emailMOdal:false,
tip: false, tip: false,
loading1: false, loading1: false,
...@@ -349,7 +360,9 @@ export default { ...@@ -349,7 +360,9 @@ export default {
modal13:false, modal13:false,
boxIsShow:false, boxIsShow:false,
resumeBTn:false, resumeBTn:false,
isShowPdf:false, isShowPdf:true,
px:1200,
// src:'/api/http://172.21.10.43/group1/M00/00/58/oYYBAF2nzwqAY4fcAAHyoHPb1Ic418.pdf',
showOriginalDisabled:true, showOriginalDisabled:true,
OriginalContent:'', OriginalContent:'',
StandardContent:'', StandardContent:'',
...@@ -390,6 +403,8 @@ export default { ...@@ -390,6 +403,8 @@ export default {
isShowAll:false, isShowAll:false,
isShowTwo:false, isShowTwo:false,
interviewIsShow:false, interviewIsShow:false,
reResumeName:'',
isShowRep:false,
hasINterview:false, hasINterview:false,
resumeIdList:[], resumeIdList:[],
options3: { options3: {
...@@ -431,7 +446,8 @@ export default { ...@@ -431,7 +446,8 @@ export default {
} }
}, },
components:{ components:{
ckeditor ckeditor,
pdf
}, },
methods: { methods: {
getDETAIL(){ getDETAIL(){
...@@ -677,8 +693,6 @@ export default { ...@@ -677,8 +693,6 @@ export default {
this.isShowTwo=false this.isShowTwo=false
this.isLimitSize=false this.isLimitSize=false
this.uploadFileList=[] this.uploadFileList=[]
// this.clearInterviewee()
// this.SouSuo(this.pageT,'init')
}, },
submit() { submit() {
let flag = false let flag = false
...@@ -717,33 +731,43 @@ export default { ...@@ -717,33 +731,43 @@ export default {
if (res.data.success == true) { if (res.data.success == true) {
this.clearInterviewee() this.clearInterviewee()
this.modal8 = false this.modal8 = false
this.isShowRep=false
setTimeout(() => { setTimeout(() => {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: '提示',
desc: '发送成功' desc: '发送成功'
}) })
}, 300) }, 300)
} else{ }
this.errorCode=res.data.body.code if(res.data.body.code=='40009'){
this.errorMassage=res.data.body.message this.reResumeName=res.data.body.message
this.isShowRep=true
}
if(res.data.body.code=='40001'){
this.modal8=false this.modal8=false
this.clearInterviewee()
if(this.errorCode=='40001'){
this.modal12=true this.modal12=true
this.isShowRep=false
} }
if(this.errorCode=='40002'){ if(res.data.body.code=='40002'){
this.modal8=false
this.modal13=true 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({ this.$Notice.error({
title: '提示', title: '提示',
desc: this.errorMassage desc: res.data.body.message
}) })
} }
}
}) })
}) })
},800), },800),
pushSendNotice(){
this.modal8=false,
this.isShowRep=false
},
transpond() { //打开转发简历的modal transpond() { //打开转发简历的modal
this.$refs.transpondFrom.resetFields() this.$refs.transpondFrom.resetFields()
this.modal8= true this.modal8= true
...@@ -752,37 +776,40 @@ export default { ...@@ -752,37 +776,40 @@ export default {
delInterviewee(name){ delInterviewee(name){
this.contentName='' this.contentName=''
}, },
// showOriginal(){ showOriginal(){
// // this.addCss()
// // this.remove()
// // document.querySelector('#app').style['overflow-x']='hidden'
// this.showPDF() // this.showPDF()
// this.isShowPdf=true this.isShowPdf=true
// this.showOriginalDisabled=true this.showOriginalDisabled=true
// this.showStandardDisabled=false this.showStandardDisabled=false
// }, },
// showStandard(){ showStandard(){
// this.isShowPdf=false this.isShowPdf=false
// // this.addCss()
// // document.querySelector('#app').style['overflow-x']='hidden'
// this.clearPDF() // this.clearPDF()
// this.showStandardDisabled=true this.showStandardDisabled=true
// this.showOriginalDisabled=false this.showOriginalDisabled=false
// }, },
// judeShowPdf(){ judeShowPdf(){
// let parmars={ let parmars={
// uid:this.$route.query.id uid:this.$route.query.id
// } }
// isShowPDF(parmars).then(res=>{ isShowPDF(parmars).then(res=>{
// if(res.data.body==true){ if(res.data.body==true){
// this.isShowPdf=true this.isShowPdf=true
// this.resumeBTn=true this.resumeBTn=true
// }else{ }else{
// this.isShowPdf=false this.isShowPdf=false
// this.resumeBTn=false this.resumeBTn=false
// } }
// }) })
// }, },
getPdfUrl(){
let parmars={
uid:this.$route.query.id
}
getpdfUrl(parmars).then(res=>{
this.pdfUrl=res.data
})
},
// 确认发送邮件 // 确认发送邮件
confireSendEmail: _debounce(function(){ confireSendEmail: _debounce(function(){
this.sad = this.getEditorValue() this.sad = this.getEditorValue()
...@@ -981,14 +1008,18 @@ export default { ...@@ -981,14 +1008,18 @@ export default {
document.querySelector('#app').style.removeProperty('overflow-x') document.querySelector('#app').style.removeProperty('overflow-x')
}, },
}, },
mounted(){ // created(){
//     this.src = pdf.createLoadingTask(this.src)
//    },
async mounted(){
this.getPdfUrl()
this.getDETAIL() this.getDETAIL()
this.boxIsShow=true this.boxIsShow=true
this.judeBtn() this.judeBtn()
this.addCss() this.addCss()
// await this.getData() // await this.getData()
// this.clearPDF() // this.clearPDF()
// await this.judeShowPdf() await this.judeShowPdf()
}, },
beforeDestroy(){ beforeDestroy(){
this.remove() this.remove()
...@@ -1006,7 +1037,6 @@ export default { ...@@ -1006,7 +1037,6 @@ export default {
float: left; float: left;
width:860px; width:860px;
min-height: 200px; min-height: 200px;
/* border: 1px solid #999 */
} }
.pdfShow{ .pdfShow{
float: left; float: left;
...@@ -1027,7 +1057,6 @@ export default { ...@@ -1027,7 +1057,6 @@ export default {
left: 13px; left: 13px;
top:-20px; top:-20px;
display: inline-block; display: inline-block;
/* margin-left: 200px */
} }
.resumeDetail-right{ .resumeDetail-right{
float: right; float: right;
...@@ -1054,7 +1083,6 @@ export default { ...@@ -1054,7 +1083,6 @@ export default {
} }
.personalInformation{ .personalInformation{
width:860px; width:860px;
/* height: 600px; */
float: left; float: left;
} }
.bassMassage{ .bassMassage{
...@@ -1064,7 +1092,6 @@ export default { ...@@ -1064,7 +1092,6 @@ export default {
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;
...@@ -1073,23 +1100,28 @@ export default { ...@@ -1073,23 +1100,28 @@ export default {
font-size: 14px; font-size: 14px;
margin-top:20px; margin-top:20px;
margin-left:20px; margin-left:20px;
/* border:1px solid black; */
} }
.testResume{ .testResume{
position: fixed; position: fixed;
/* float: left; */
top: 20%; top: 20%;
width: 200px; width: 200px;
/* border: 1px solid black; */
margin-left: 20px margin-left: 20px
} }
/* .test{ .positionClass{
position: relative; display: inline-block;
left:900px; max-width:200px;
top: 0 overflow:hidden;
} */ text-overflow:ellipsis;
white-space: nowrap;
}
.otherClass{
display: inline-block;
max-width:200px;
overflow:hidden;
text-overflow:ellipsis;
white-space: nowrap;
}
.massageTitle{ .massageTitle{
/* height: 300px; */
float: left; float: left;
} }
.personalInformation-left{ .personalInformation-left{
......
...@@ -5,11 +5,14 @@ ...@@ -5,11 +5,14 @@
<span style="font-size:18px;color:#2d8cf0;margin-left:18px;">新增账户</span> <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> </p>
<Form :label-width="130" :model="formInline" :rules="ruleInline"> <Form :label-width="100" :model="formInline" :rules="ruleInline">
<FormItem label="配置登录账号:" style="margin-top:1%" prop="PhoneNumber"> <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"/> <Input placeholder="请输入正确的手机号" style="width:300px" v-model="formInline.PhoneNumber"/>
</FormItem> </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"/> <Input placeholder="请输入真实姓名" style="width:300px" v-model="formInline.PerName" :maxlength="5"/>
</FormItem> </FormItem>
</Form> </Form>
...@@ -38,8 +41,10 @@ ...@@ -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)"> <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:5px" >{{item.userName}}</span>
<span style="margin-left:35px">{{item.userCode}}</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">{{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="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> <span style="margin-left:35px;color:#2d8cf0;cursor:pointer" @click="delateMaodal(item.id)">删除</span>
</div> </div>
<div style="height:10px;background:white;width:100%;"></div> <div style="height:10px;background:white;width:100%;"></div>
...@@ -61,6 +66,27 @@ ...@@ -61,6 +66,27 @@
<Button type='primary' @click='modal1=false'>取消</Button> <Button type='primary' @click='modal1=false'>取消</Button>
<Button type='primary' @click="recovery()" >确定</Button> <Button type='primary' @click="recovery()" >确定</Button>
</div> </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>
<!-- 删除当前的账户 --> <!-- 删除当前的账户 -->
<Modal <Modal
...@@ -98,7 +124,7 @@ ...@@ -98,7 +124,7 @@
</div> </div>
</template> </template>
<script> <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 { export default {
data(){ data(){
return { return {
...@@ -106,8 +132,10 @@ export default { ...@@ -106,8 +132,10 @@ export default {
modal2:false, modal2:false,
modal3:false, modal3:false,
modal4:false, modal4:false,
modal6:false,
checkboxList:[], checkboxList:[],
checked: false, checked: false,
updateAccountId:'',
pageT:'', pageT:'',
userName:'', userName:'',
userCode:'', userCode:'',
...@@ -126,7 +154,11 @@ export default { ...@@ -126,7 +154,11 @@ export default {
}, },
formInline: { formInline: {
PhoneNumber: '', PhoneNumber: '',
PerName: '' PerName: '',
emailNumber:'',
updatePhoneNumber: '',
updatePerName: '',
updateemailNumber:''
}, },
ruleInline: { ruleInline: {
PhoneNumber: [ PhoneNumber: [
...@@ -135,7 +167,17 @@ export default { ...@@ -135,7 +167,17 @@ export default {
PerName: [ PerName: [
{ required: true, message: '请输入真实的姓名', trigger: 'blur' }, { required: true, message: '请输入真实的姓名', trigger: 'blur' },
{ type: 'string', 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:[], ajaxData:[],
checkData: [] ,// 双向数据绑定的数组 checkData: [] ,// 双向数据绑定的数组
...@@ -169,16 +211,69 @@ export default { ...@@ -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(){ addacount(){
let parmars={ let parmars={
userCode:this.formInline.PhoneNumber, userCode:this.formInline.emailNumber,
userName:this.formInline.PerName 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({ this.$Notice.error({
title: '提示', title: '提示',
desc: '请您填写正确的手机号或姓名', desc: '请您填写正确的号或姓名',
duration:2 duration:2
}); });
return return
...@@ -192,6 +287,14 @@ export default { ...@@ -192,6 +287,14 @@ export default {
}); });
return 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=>{ addAccount(parmars).then(res=>{
if(res.data.success==true){ if(res.data.success==true){
this.$Notice.success({ this.$Notice.success({
...@@ -202,6 +305,7 @@ export default { ...@@ -202,6 +305,7 @@ export default {
this.SearchList() this.SearchList()
this.formInline.PhoneNumber='' this.formInline.PhoneNumber=''
this.formInline.PerName='' this.formInline.PerName=''
this.formInline.emailNumber=''
} }
if(res.data.body.code==0){ if(res.data.body.code==0){
this.Massage=res.data.body.message this.Massage=res.data.body.message
...@@ -212,6 +316,7 @@ export default { ...@@ -212,6 +316,7 @@ export default {
}); });
this.formInline.PhoneNumber='' this.formInline.PhoneNumber=''
this.formInline.PerName='' this.formInline.PerName=''
this.formInline.emailNumber=''
return return
} }
}) })
...@@ -347,7 +452,7 @@ export default { ...@@ -347,7 +452,7 @@ export default {
overflow: hidden; overflow: hidden;
} }
.addAcount{ .addAcount{
height:210px; height:240px;
width:100%; width:100%;
} }
.pageBottom{ .pageBottom{
...@@ -376,7 +481,7 @@ export default { ...@@ -376,7 +481,7 @@ export default {
display: inline-block; display: inline-block;
} }
.detailQQ :nth-child(3){ .detailQQ :nth-child(3){
width: 80px; width: 180px;
display: inline-block; display: inline-block;
} }
.detailQQ :nth-child(4){ .detailQQ :nth-child(4){
...@@ -384,3 +489,8 @@ export default { ...@@ -384,3 +489,8 @@ export default {
display: inline-block; display: inline-block;
} }
</style> </style>
<style>
.updateClassModal .ivu-input{
color: grey !important
}
</style>
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="addEmail"> <div class="addEmail">
<p style="margin-top:10px"> <p style="margin-top:10px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">新增接收邮箱</span> <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> </p>
<Form :label-width="100" :model="formInline" :rules="ruleInline"> <Form :label-width="100" :model="formInline" :rules="ruleInline">
<FormItem label="邮箱账号" style="margin-top:20px" prop="emailNumber"> <FormItem label="邮箱账号" style="margin-top:20px" prop="emailNumber">
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<FormItem label="所属人" style="margin-top:20px; position: absolute;top:110px;left: 410px" prop="UserName" :label-width="180"> <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"/> <Input placeholder="请输入所属者正确姓名" style="width:300px" v-model="formInline.UserName" :maxlength="5"/>
</FormItem> </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> </Form>
</div> </div>
<div class="Emailmange"> <div class="Emailmange">
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="height:30px;line-height:30px">同步完成,如密码发生改变,请及时点击<br><span>修改</span>来重置密码</p> <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> --> <!-- <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>
<!-- 同步绑定 --> <!-- 同步绑定 -->
<Modal <Modal
...@@ -133,6 +133,7 @@ ...@@ -133,6 +133,7 @@
</template> </template>
<script> <script>
import { queryemailList,Synchronization,jiebangEmail,updateemailTWO,UntyingAll} from '../../api/stystem.server.js' import { queryemailList,Synchronization,jiebangEmail,updateemailTWO,UntyingAll} from '../../api/stystem.server.js'
import moment from 'moment'
export default { export default {
data(){ data(){
return { return {
...@@ -165,6 +166,7 @@ export default { ...@@ -165,6 +166,7 @@ export default {
Tblengs:'', Tblengs:'',
checkboxList:[], checkboxList:[],
checked: false, checked: false,
disabled:false,
pageIndex:1, pageIndex:1,
pageSize:30, pageSize:30,
totalSize:null, totalSize:null,
...@@ -181,7 +183,7 @@ export default { ...@@ -181,7 +183,7 @@ export default {
ruleInline: { ruleInline: {
emailNumber: [ emailNumber: [
// derong.zhang@quantgroup.cn // 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: [ emailPsd: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' }, { required: true, message: '请输入正确的密码', trigger: 'blur' },
...@@ -217,12 +219,13 @@ export default { ...@@ -217,12 +219,13 @@ export default {
}); });
return return
} }
this.disabled=true
this.modal3=true this.modal3=true
let parmars={ let parmars={
emailName:this.formInline.emailNumber, emailName:this.formInline.emailNumber,
emailPassword:this.formInline.emailPsd, emailPassword:this.formInline.emailPsd,
belongs:this.formInline.UserName, belongs:this.formInline.UserName,
syncStartDate:this.DATA syncStartDate:moment(this.DATA).format('YYYY-MM-DD HH:mm:ss')
} }
Synchronization(parmars).then(res=>{ Synchronization(parmars).then(res=>{
if(res.data.success==true){ if(res.data.success==true){
...@@ -233,9 +236,11 @@ export default { ...@@ -233,9 +236,11 @@ export default {
this.formInline.UserName='' this.formInline.UserName=''
this.DATA='' this.DATA=''
this.SearchList() this.SearchList()
// this.disabled=false
} }
if(res.data.success==false){ if(res.data.success==false){
this.modal3=false this.modal3=false
this.disabled=false
this.Massage=res.data.body.message this.Massage=res.data.body.message
this.$Notice.error({ this.$Notice.error({
title: '提示', title: '提示',
...@@ -249,6 +254,10 @@ export default { ...@@ -249,6 +254,10 @@ export default {
this.formInline.emailPsd='' this.formInline.emailPsd=''
}) })
}, },
iKnow(){
this.modal2=false,
this.disabled=false
},
//选择同步的时间 //选择同步的时间
selectTime(b){ selectTime(b){
this.DATA=b this.DATA=b
......
...@@ -33,7 +33,7 @@ function tryHideFullScreenLoading() { ...@@ -33,7 +33,7 @@ function tryHideFullScreenLoading() {
}, 200) }, 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) { instance.interceptors.request.use(function (config) {
// 在发送请求之前做些什么 // 在发送请求之前做些什么
if (!config.headers['Content-Type']) { 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