Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
R
recruiting-management
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ui
recruiting-management
Commits
bb7d7de1
Commit
bb7d7de1
authored
Nov 04, 2019
by
FE-安焕焕
👣
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'pdfOrigen' into 'master'
Pdf origen See merge request
!9
parents
6940892e
b4987c33
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
523 additions
and
192 deletions
+523
-192
package-lock.json
package-lock.json
+83
-2
package.json
package.json
+1
-0
resume.server.js
src/api/resume.server.js
+25
-14
stystem.server.js
src/api/stystem.server.js
+6
-6
home.vue
src/components/home.vue
+3
-3
interview.vue
src/page/interview/interview.vue
+1
-0
login.vue
src/page/login/login.vue
+2
-2
allResume.vue
src/page/resume/allResume.vue
+78
-39
channel.vue
src/page/resume/channel.vue
+79
-32
resumeDetail.vue
src/page/resume/resumeDetail.vue
+108
-76
account.vue
src/page/system/account.vue
+122
-12
emailMange.vue
src/page/system/emailMange.vue
+14
-5
http.service.js
src/service/http.service.js
+1
-1
No files found.
package-lock.json
View file @
bb7d7de1
...
...
@@ -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"
,
...
...
package.json
View file @
bb7d7de1
...
...
@@ -20,6 +20,7 @@
"
moment
"
:
"
^2.24.0
"
,
"
qs
"
:
"
^6.7.0
"
,
"
vue
"
:
"
^2.5.2
"
,
"
vue-pdf
"
:
"
^4.0.7
"
,
"
vue-router
"
:
"
^3.0.1
"
,
"
vue-upload-component
"
:
"
^2.8.20
"
,
"
vuex
"
:
"
^3.1.1
"
...
...
src/api/resume.server.js
View file @
bb7d7de1
...
...
@@ -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
'
}})
}
src/api/stystem.server.js
View file @
bb7d7de1
...
...
@@ -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
src/components/home.vue
View file @
bb7d7de1
...
...
@@ -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
)
})
...
...
src/page/interview/interview.vue
View file @
bb7d7de1
...
...
@@ -664,6 +664,7 @@ export default {
flowStatusList
:
this
.
searchInfo
.
STA
,
interviewerName
:
this
.
interviewerName
,
inviterName
:
this
.
inviterName
,
handUpload
:
''
}
}
SerchList
(
parmars
).
then
(
res
=>
{
...
...
src/page/login/login.vue
View file @
bb7d7de1
...
...
@@ -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
'
},
...
...
src/page/resume/allResume.vue
View file @
bb7d7de1
...
...
@@ -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:4
0
%"
placeholder=
"不限"
:label-in-value=
'true'
v-model=
"searchInfo.ownerWorkYears1"
@
on-change=
'judge1'
>
<Select
style=
"width:4
5
%"
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:4
0
%"
placeholder=
"不限"
:label-in-value=
'true'
v-model=
"searchInfo.ownerWorkYears2"
@
on-change=
'judge2'
>
<Select
style=
"width:4
5
%"
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=fals
e'
>
取消
</Button>
<Button
type=
'primary'
@
click=
'
pushSendNotic
e'
>
取消
</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
.
modal12
=
true
this
.
isShowRep
=
false
}
if
(
res
.
data
.
body
.
code
==
'
40002
'
){
this
.
modal8
=
false
this
.
modal13
=
true
this
.
isShowRep
=
false
}
if
(
res
.
data
.
body
.
code
==
'
0
'
){
this
.
modal8
=
false
this
.
clearInterviewee
()
if
(
this
.
errorCode
==
'
40001
'
){
this
.
modal12
=
true
}
if
(
this
.
errorCode
==
'
40002
'
){
this
.
modal13
=
true
}
if
(
this
.
errorCode
==
'
0
'
){
this
.
$Notice
.
error
({
this
.
isShowRep
=
false
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
this
.
errorMassage
})
}
// setTimeout(() => {
// this.$Notice.error({
// title: '提示',
// desc: '发送失败'
// })
// }, 500)
// this.clearInterviewee()
// this.modal8 = false
}
desc
:
res
.
data
.
body
.
message
})
}
})
})
},
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
src/page/resume/channel.vue
View file @
bb7d7de1
...
...
@@ -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:4
0
%"
placeholder=
"不限"
:label-in-value=
'true'
v-model=
"searchInfo.ownerWorkYears1"
@
on-change=
"judge1"
>
<Select
style=
"width:4
5
%"
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:4
0
%"
placeholder=
"不限"
:label-in-value=
'true'
v-model=
"searchInfo.ownerWorkYears2"
@
on-change=
"judge2"
>
<Select
style=
"width:4
5
%"
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:
0
px;color:Greys;padding-left:10px;"
class=
"info"
>
<p
style=
"margin-top:
5
px;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=fals
e'
>
取消
</Button>
<Button
type=
'primary'
@
click=
'
pushSendNotic
e'
>
取消
</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:'',
...
...
@@ -708,7 +727,7 @@ export default {
}
},
// 查看简历详情
Seedetail
(
Tid
,
Uid
,
STATUS
){
Seedetail
(
Tid
,
Uid
,
STATUS
){
this
.
detailID
=
Tid
this
.
DOWNID
=
Uid
this
.
resumeDetailSta
=
STATUS
...
...
@@ -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
'
){
this
.
modal12
=
true
}
if
(
this
.
errorCode
==
'
40002
'
){
this
.
modal13
=
true
}
if
(
this
.
errorCode
==
'
0
'
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
this
.
errorMassage
})
}
}
}
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
(
res
.
data
.
body
.
code
==
'
40002
'
){
this
.
modal8
=
false
this
.
modal13
=
true
this
.
isShowRep
=
false
}
if
(
res
.
data
.
body
.
code
==
'
0
'
){
this
.
modal8
=
false
this
.
isShowRep
=
false
this
.
$Notice
.
error
({
title
:
'
提示
'
,
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
>
src/page/resume/resumeDetail.vue
View file @
bb7d7de1
<
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)"
>
下
载
</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=fals
e'
>
取消
</Button>
<Button
type=
'primary'
@
click=
'
pushSendNotic
e'
>
取消
</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
}
if
(
this
.
errorCode
==
'
40002
'
){
this
.
modal13
=
true
}
if
(
this
.
errorCode
==
'
0
'
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
this
.
errorMassage
})
}
}
this
.
modal12
=
true
this
.
isShowRep
=
false
}
if
(
res
.
data
.
body
.
code
==
'
40002
'
){
this
.
modal8
=
false
this
.
modal13
=
true
this
.
isShowRep
=
false
}
if
(
res
.
data
.
body
.
code
==
'
0
'
){
this
.
modal8
=
false
this
.
isShowRep
=
false
this
.
$Notice
.
error
({
title
:
'
提示
'
,
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'
// this.showPDF()
// this.isShowPdf=true
// this.showOriginalDisabled=true
// this.showStandardDisabled=false
// },
// showStandard(){
// this.isShowPdf=false
// // this.addCss()
// // document.querySelector('#app').style['overflow-x']='hidden'
// this.clearPDF()
// this.showStandardDisabled=true
// this.showOriginalDisabled=false
// },
// judeShowPdf(){
// let parmars={
// uid:this.$route.query.id
// }
// isShowPDF(parmars).then(res=>{
// if(res.data.body==true){
// this.isShowPdf=true
// this.resumeBTn=true
// }else{
// this.isShowPdf=false
// this.resumeBTn=false
// }
// })
// },
showOriginal
(){
// this.showPDF()
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
}
})
},
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
{
...
...
src/page/system/account.vue
View file @
bb7d7de1
...
...
@@ -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
:
2
1
0px
;
height
:
2
4
0px
;
width
:
100%
;
}
.pageBottom
{
...
...
@@ -376,7 +481,7 @@ export default {
display
:
inline-block
;
}
.detailQQ
:nth-child
(
3
)
{
width
:
80px
;
width
:
1
80px
;
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
>
src/page/system/emailMange.vue
View file @
bb7d7de1
...
...
@@ -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"
>
绑定并开始同步
</spa
n>
<
Button
type=
"primary"
style=
"position: absolute;top:130px;left: 910px;"
:disabled=
'disabled'
@
click=
"bindingSynchronizat"
>
绑定并开始同步
</Butto
n>
</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
...
...
src/service/http.service.js
View file @
bb7d7de1
...
...
@@ -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
'
])
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment