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
95e44856
Commit
95e44856
authored
Sep 23, 2019
by
FE-安焕焕
👣
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'time' into 'master'
Time See merge request
!5
parents
984283a7
823d2e85
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
1245 additions
and
730 deletions
+1245
-730
index.js
config/index.js
+1
-1
App.vue
src/App.vue
+2
-2
interview.server.js
src/api/interview.server.js
+4
-5
resume.server.js
src/api/resume.server.js
+4
-3
home.vue
src/components/home.vue
+25
-14
loading.vue
src/components/loading.vue
+101
-0
interview.vue
src/page/interview/interview.vue
+66
-26
allResume.vue
src/page/resume/allResume.vue
+540
-429
channel.vue
src/page/resume/channel.vue
+363
-237
resumeDetail.vue
src/page/resume/resumeDetail.vue
+5
-4
sweepCode.vue
src/page/sweepCode/sweepCode.vue
+4
-1
upload.vue
src/page/upload/upload.vue
+9
-5
http.service.js
src/service/http.service.js
+31
-1
util.js
src/service/util.js
+88
-1
index.js
src/store/index.js
+1
-0
config.js
static/ckeditor/config.js
+1
-1
No files found.
config/index.js
View file @
95e44856
...
...
@@ -15,7 +15,7 @@ module.exports = {
// Various Dev Server settings
host
:
'
0.0.0.0
'
,
// can be overwritten by process.env.HOST
port
:
8080
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
port
:
7089
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser
:
true
,
errorOverlay
:
true
,
notifyOnErrors
:
true
,
...
...
src/App.vue
View file @
95e44856
...
...
@@ -49,8 +49,8 @@ export default {
user-select
:
text
!important
;
}
.pc
{
min-width
:
1341px
;
min-
height
:
741
px
;
height
:
100%
;
min-
width
:
860
px
;
}
.mobile
{
...
...
src/api/interview.server.js
View file @
95e44856
...
...
@@ -23,10 +23,11 @@ export function SInterview(tid) {
}})
}
// 面试管理查询
export
function
SerchList
(
parmars
)
{
export
function
SerchList
(
parmars
,
status
)
{
return
axios
.
post
(
`
${
sapi
}
/api/interview/findListByQueryVO`
,
parmars
,{
headers
:
{
'
Content-Type
'
:
'
application/json;
'
,
'
X-Requested-With
'
:
'
XMLHttpRequest
'
'
X-Requested-With
'
:
'
XMLHttpRequest
'
,
status
}})
}
//查看简历详情页
...
...
@@ -37,9 +38,7 @@ export function seedetail (parmars) {
}
//面试官查询
export
function
Serchinterviewor
()
{
return
axios
.
post
(
`
${
sapi
}
/api/interview/findInterviewerList`
,{
headers
:
{
'
Content-Type
'
:
'
application/json;
'
,
}})
return
axios
.
get
(
`
${
sapi
}
/api/interview/findInterviewerList`
)
}
//邀约人查询
export
function
SerchInvitationOwer
()
{
...
...
src/api/resume.server.js
View file @
95e44856
...
...
@@ -17,14 +17,15 @@ export function downloadone (parmars) {
}})
}
// 搜索
export
function
sousuoList
(
parmars
)
{
export
function
sousuoList
(
parmars
,
status
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/findListByQueryVO`
,
parmars
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
'
Content-Type
'
:
'
application/json
'
,
status
}})
}
//查看简历详情页
export
function
seedetail
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/html/get/
${
parmars
.
resumeId
}
`
,{
headers
:
{
return
axios
.
get
(
`
${
sapi
}
/api/html/get/
${
parmars
.
resumeId
}
?token=
${
parmars
.
token
}
`
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
}})
}
...
...
src/components/home.vue
View file @
95e44856
<
template
>
<Row
id=
"home"
class=
"home"
>
<Col
span=
"3"
class=
"aside"
style=
"width:17%;height:100%"
>
<loading
v-show=
'showLoading'
></loading>
<Col
span=
"3"
class=
"aside"
style=
"width:17%;height:100%;overflow: auto;"
>
<img
src=
"https://o7oe0d6qz.qnssl.com/image/homelogo.png"
alt=
""
style=
"height:60px"
>
<Menu
style=
"width: 100%;"
ref=
'subMenu'
:active-name=
"levelThreeName"
:open-names=
"levelTwoName"
@
on-select=
"go"
>
<template
v-for=
"(menu) in childMenu"
>
...
...
@@ -15,7 +16,7 @@
</Menu>
</Col>
<Col
span=
"21"
class=
"content"
style=
"width:83%;height:100%"
>
<Row
class=
"header"
style=
"height:
6%
"
>
<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"
>
...
...
@@ -23,15 +24,15 @@
</MenuItem>
</Menu>
</Col>
<Col
span=
"2"
class=
"account"
style=
""
>
<span
style=
"display:inline-block;line-height:6%;margin-left:30%"
>
{{massage}}
</span>
<Col
span=
"2"
class=
"account"
style=
"
text-align:right;
"
>
<span
style=
"display:inline-block;line-height:6%;margin-left:30%
;
"
>
{{massage}}
</span>
</Col>
<Col
span=
"
2
"
class=
"sign-out"
>
<Col
span=
"
1
"
class=
"sign-out"
>
<a
@
click=
"loginOut"
style=
"margin-left:38%"
>
退出
</a>
</Col>
</Row>
<Row
style=
"height:94%"
>
<router-view></router-view>
<router-view></router-view>
</Row>
</Col>
</Row>
...
...
@@ -39,6 +40,8 @@
<
script
>
import
{
getpersonMassage
,
loginOUT
,
adoptOneSeeResumeList
,
getChannelMassage
,
judeAdmin
}
from
'
../api/home.server.js
'
import
localstorage
from
'
../service/localstorage.service.js
'
import
loading
from
'
../components/loading.vue
'
import
{
mapState
}
from
'
vuex
'
export
default
{
data
()
{
return
{
...
...
@@ -150,6 +153,14 @@ import localstorage from '../service/localstorage.service.js'
}
},
computed
:
{
...
mapState
({
showLoading
:
state
=>
state
.
loading
})
},
components
:
{
loading
},
methods
:
{
go
(
name
)
{
this
.
levelThreeName
=
name
...
...
@@ -161,7 +172,7 @@ import localstorage from '../service/localstorage.service.js'
})
})
},
selectMenu
(
name
,
refesh
)
{
async
selectMenu
(
name
,
refesh
)
{
// // refesh是否为刷新页面
this
.
levelOneName
=
name
const
menus
=
this
.
menuList
.
filter
(
v
=>
name
===
v
.
name
)
...
...
@@ -173,7 +184,7 @@ import localstorage from '../service/localstorage.service.js'
this
.
levelThreeName
=
initName
.
levelThreeName
}
if
(
menus
[
0
].
loadMenu
)
{
// 简历管理模块需要加载渠道简历
this
.
getChannelMenu
()
await
this
.
getChannelMenu
()
}
if
(
refesh
&&
this
.
$route
.
path
.
indexOf
(
'
channel
'
)
>
-
1
)
{
this
.
levelThreeName
=
this
.
$route
.
path
.
split
(
'
/
'
)[
2
]
...
...
@@ -202,7 +213,7 @@ import localstorage from '../service/localstorage.service.js'
},
getChannelMenu
(){
this
.
menuList
[
0
].
child
[
1
].
child
=
[]
getChannelMassage
().
then
(
res
=>
{
return
getChannelMassage
().
then
(
res
=>
{
if
(
res
.
data
.
status
==
false
||
!
res
.
data
.
success
)
{
return
}
...
...
@@ -287,11 +298,11 @@ import localstorage from '../service/localstorage.service.js'
<
style
lang=
"less"
scoped
>
.home{
height: 100%;
overflow: hidden;
.aside{
// min-height: 2050px;
border-right: 1px solid #dcdee2;
box-shadow: #dcdee2 0 0 6px 1px;
// width:15
%;
height: 100
%;
img{
height: 49px;
width: 100%;
...
...
@@ -311,13 +322,13 @@ import localstorage from '../service/localstorage.service.js'
line-height: 55px;
border-bottom: 1px solid rgb(220, 222, 226);
font-size: 14px;
overflow:hidden;
.sign-out{
line-height: 6%
}
.ivu-menu{
height: 35px;
line-height: 35px;
margin: 0 10px;
height: 43px;
line-height: 43px;
.ivu-menu-item{
padding: 0 13px;
margin: 0 49px;
...
...
src/components/loading.vue
0 → 100644
View file @
95e44856
<
template
>
<div
class=
'loadingmark'
>
<div
class=
"loading-audio"
>
<svg
:width=
"width+'px'"
:height=
"height+'px'"
xmlns=
"http://www.w3.org/2000/svg"
:viewBox=
"viewBox"
preserveAspectRatio=
"xMidYMid"
>
<g
transform=
"translate(20 50)"
>
<circle
cx=
"0"
cy=
"0"
r=
"7"
fill=
"#11a181"
transform=
"scale(0.99275 0.99275)"
class=
'circle'
/>
</g>
<g
transform=
"translate(40 50)"
>
<circle
cx=
"0"
cy=
"0"
r=
"7"
fill=
"#11a181"
transform=
"scale(0.773605 0.773605)"
class=
'circle1'
/>
</g>
<g
transform=
"translate(60 50)"
>
<circle
cx=
"0"
cy=
"0"
r=
"7"
fill=
"#11a181"
transform=
"scale(0.42525 0.42525)"
class=
'circle2'
/>
</g>
<g
transform=
"translate(80 50)"
>
<circle
cx=
"0"
cy=
"0"
r=
"7"
fill=
"#11a181"
transform=
"scale(0.113418 0.113418)"
class=
'circle3'
/>
</g>
</svg>
</div>
<div
style=
"font-size: 18px;font-weight: 500;color:#11a181"
>
Loading...
</div>
</div>
</
template
>
<
script
>
export
default
{
name
:
'
loading
'
,
props
:
{
width
:
{
type
:
Number
,
default
:
80
},
height
:
{
type
:
Number
,
default
:
80
}
},
created
()
{
this
.
viewBox
=
'
0 0
'
+
'
'
+
(
this
.
width
+
10
)
+
'
'
+
this
.
height
},
data
()
{
return
{
viewBox
:
''
}
}
}
</
script
>
<
style
lang=
'less'
scoped
>
.loadingmark{
position:absolute;
top:0px;
left:0px;
width:100%;
height:100%;
background-color: rgba(255,255,255,0.6);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
z-index: 1600;
}
.loading-audio {
width: 100px;
background-repeat: no-repeat;
background-size: cover;
// background-image: url('data:image/svg+xml,<svg width="135" height="140" viewBox="0 0 135 140" xmlns="http://www.w3.org/2000/svg" fill="#2d8cf0"><rect y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.5s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.5s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="30" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.25s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.25s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="60" width="15" height="140" rx="6"><animate attributeName="height" begin="0s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="90" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.25s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.25s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="120" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.5s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.5s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect></svg>');
}
.circle{
animation: ani-demo-spin 1s linear infinite;
animation-delay:-0.375s;
}
@keyframes ani-demo-spin {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
}
.circle1{
animation: ani-demo-spin1 1s linear infinite;
animation-delay:-0.25s;
}
@keyframes ani-demo-spin1 {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
}
.circle2{
animation: ani-demo-spin2 1s linear infinite;
animation-delay:-0.125s;
}
@keyframes ani-demo-spin2 {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
}
.circle3{
animation: ani-demo-spin3 1s linear infinite;
animation-delay:0s;
}
@keyframes ani-demo-spin3 {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
}
</
style
>
src/page/interview/interview.vue
View file @
95e44856
...
...
@@ -84,7 +84,7 @@
</div>
</div>
<div
class=
"interview-right"
>
<Form
:label-width=
"80"
onsubmit=
"return false;"
>
<Form
:label-width=
"80"
onsubmit=
"return false;"
class=
'emailForm'
>
<FormItem
label=
"关键词:"
style=
"margin-top:20px;margin-left:1%"
>
<Input
placeholder=
"请输入关键词"
style=
"width:80%"
v-model=
"keywords"
@
keyup.enter.native=
"Sousuo()"
/>
</FormItem>
...
...
@@ -97,9 +97,11 @@
</Select>
</FormItem>
<FormItem
label=
"面试官:"
style=
"margin-top:20px"
>
<Select
style=
"width:80%;height:20px"
placeholder=
"请选择"
:label-in-value=
'true'
@
on-change=
'selectinterviewElement'
>
<Option
v-for=
"(item,index) in Interviewer"
:key=
"index"
:value=
"index"
>
{{
item
}}
</Option>
</Select>
<Select
style=
"width:80%;height:20px"
:label-in-value=
'true'
@
on-change=
'selectinterviewElement'
filterable
remote
:remote-method=
"remoteMethod"
:loading=
"loading1"
placeholder=
'请输入面试官全名'
clearable
>
<Option
v-for=
'(item, index) in options'
:key=
'index'
:value=
'item.name'
>
{{
item
.
name
}}
(
{{
item
.
email
}}
)
</Option>
</Select>
</FormItem>
<FormItem
label=
"状态:"
class=
"state2"
>
<span
v-for=
"(item,index) in state"
style=
"cursor:pointer"
:class=
"
{'active2':item.sta==true}" @click="selectElement3(item.Num3,index,item.status3,item.sta)" :key="'state2'+index">
{{
item
.
status3
}}
</span>
...
...
@@ -165,17 +167,21 @@
<Modal
v-model=
"modal2"
:closable=
"false"
width=
'
3
00px'
>
width=
'
4
00px'
>
<h3
style=
"text-align:center"
>
更改约面信息
</h3>
<Form
:label-width=
"80"
ref=
"formInline"
:rules=
"ruleInline"
:model=
"formInline"
>
<FormItem
label=
"邀约人"
style=
"margin-top:20px"
prop=
"UpdateOWER"
>
<Input
v-model=
"formInline.UpdateOWER"
:maxlength=
"5"
/>
</FormItem>
<FormItem
label=
"面试时间"
style=
"margin-top:20px"
prop=
"UpdateTIME"
>
<DatePicker
type=
"datetime"
style=
"width:1
85px
"
v-model=
"formInline.UpdateTIME"
@
on-change=
"selectTime"
placeholder=
"请选择时间"
:options=
"options3"
:editable=
'false'
format=
"yyyy-MM-dd HH:mm"
></DatePicker>
<DatePicker
type=
"datetime"
style=
"width:1
00%;
"
v-model=
"formInline.UpdateTIME"
@
on-change=
"selectTime"
placeholder=
"请选择时间"
:options=
"options3"
:editable=
'false'
format=
"yyyy-MM-dd HH:mm"
></DatePicker>
</FormItem>
<FormItem
label=
"面试官"
style=
"margin-top:20px"
prop=
"UpdateVIEW"
>
<Input
v-model=
"formInline.UpdateVIEW"
:maxlength=
"5"
/>
<Select
v-model =
'formInline.UpdateVIEW'
filterable
style=
'width:100%;'
remote
:remote-method=
"remoteMethod"
:loading=
"loading1"
placeholder=
'请输入面试官全名'
clearable
>
<Option
v-for=
'(item, index) in options'
:key=
'index'
:value=
'item.name'
>
{{
item
.
name
}}
(
{{
item
.
email
}}
)
</Option>
</Select>
</FormItem>
</Form>
<div
slot=
'footer'
style=
"text-align:center"
>
...
...
@@ -227,6 +233,7 @@
<
script
>
import
moment
from
'
moment
'
import
{
changeinterviewMassage
,
SerchList
,
Serchinterviewor
,
SerchInvitationOwer
,
NewAddInterview
,
SInterview
,
oppenInterview
,
recodeLIST
,
changestatus
,
seedetail
,
formstatus
}
from
'
../../api/interview.server.js
'
import
{
findCompanyEmailByKey
}
from
'
../../api/resume.server.js
'
export
default
{
data
(){
return
{
...
...
@@ -303,7 +310,9 @@ export default {
activeName
:
''
,
Essentialinformation
:[],
serchData
:[],
serchData2
:[]
serchData2
:[],
options
:
[],
loading1
:
false
}
},
methods
:
{
...
...
@@ -404,7 +413,7 @@ export default {
})
},
// 查询面试信息
serchListInterview
(
page
)
{
serchListInterview
(
page
,
status
)
{
page
=
typeof
(
page
)
==
'
number
'
?
page
:
1
this
.
searchInfo
.
pageIndex
=
page
this
.
pageIndex
=
page
...
...
@@ -419,7 +428,7 @@ export default {
inviterName
:
''
,
}
}
SerchList
(
parmars
).
then
(
res
=>
{
SerchList
(
parmars
,
status
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
){
this
.
spinShow
=
false
this
.
totalSize
=
res
.
data
.
body
.
totalNumber
...
...
@@ -442,12 +451,8 @@ export default {
})
},
// 面试官查询
Serchlistinterview
(){
Serchlistinterview
List
(){
Serchinterviewor
().
then
(
res
=>
{
console
.
log
(
res
)
if
(
!
res
.
data
.
succes
)
{
return
}
this
.
Interviewer
=
res
.
data
.
body
this
.
Interviewer
.
unshift
(
'
不限
'
)
})
...
...
@@ -528,7 +533,7 @@ export default {
title
:
'
提示
'
,
desc
:
'
已成功重启流程
'
});
this
.
serchListInterview
()
this
.
serchListInterview
()
}
})
this
.
modal4
=
false
...
...
@@ -683,10 +688,10 @@ export default {
this
.
clickIndex1
=
Tindex
},
selectinterviewElement
(
e
){
if
(
e
.
label
==
'
不限
'
){
if
(
e
.
value
==
'
不限
'
){
this
.
interviewerName
=
''
}
else
{
this
.
interviewerName
=
e
.
label
this
.
interviewerName
=
e
.
value
}
},
selectinterviewElement2
(
e
){
...
...
@@ -706,16 +711,43 @@ export default {
this
.
pageSize
=
page
this
.
Sousuo
()
},
remoteMethod
:
function
(
query
){
if
(
query
!==
''
)
{
this
.
loading1
=
true
;
setTimeout
(()
=>
{
this
.
loading1
=
false
;
let
list
=
[]
query
=
query
.
split
(
'
(
'
)[
0
]
findCompanyEmailByKey
(
query
).
then
(
res
=>
{
list
=
res
this
.
options
=
list
.
data
.
body
// this.options.push({name: '不限', email: ''})
})
},
500
);
}
else
{
this
.
options
=
[];
}
},
},
mounted
(){
this
.
serchListInterview
()
this
.
Serchlistinterview
()
this
.
serchListInterview
(
null
,
'
init
'
)
//
this.Serchlistinterview()
this
.
SerchInvitation
()
this
.
SerchlistinterviewList
()
}
}
</
script
>
<
style
>
.interview
.emailForm
.ivu-form-item-label
{
font-size
:
14px
}
.interview
.ivu-form-item-content
{
font-size
:
14px
;
}
.interview
.ivu-form-item-error-tip
{
font-size
:
12px
;
}
.interview
{
height
:
100%
;
width
:
100%
;
...
...
@@ -809,9 +841,13 @@ option:hover{
color
:
blue
;
}
.Education2
{
width
:
380px
;
width
:
85%
;
}
.Education2
span
{
display
:
inline-block
;
margin-right
:
20px
;
}
.Education2
:nth-child
(
2
)
{
/*
.Education2 :nth-child(2){
margin-left: 11%
}
.Education2 :nth-child(3){
...
...
@@ -825,11 +861,15 @@ option:hover{
}
.Education2 :nth-child(7){
margin-left: 10%
}
}
*/
.state2
{
width
:
380px
;
width
:
85%
;
}
.state2
:nth-child
(
2
)
{
.state2
span
{
display
:
inline-block
;
margin-right
:
20px
;
}
/* .state2 :nth-child(2){
margin-left: 6%
}
.state2 :nth-child(3){
...
...
@@ -858,5 +898,5 @@ option:hover{
}
.state2 :nth-child(13){
margin-left: 10%
}
}
*/
</
style
>
src/page/resume/allResume.vue
View file @
95e44856
...
...
@@ -2,7 +2,7 @@
<div
class=
"allResume"
>
<!--
<Spin
size=
"large"
fix
v-if=
"spinShow"
style=
"font-size:25px"
>
加载中...
</Spin>
-->
<div
class=
"allResume-left"
>
<Form
:label-width=
"
80"
style=
"width:88%;margin-left:7%"
>
<Form
:label-width=
"
90"
style=
"width:88%;margin:0 auto;"
class=
'emailForm'
>
<FormItem
label=
"关键词:"
style=
"margin-top:20px"
>
<Input
placeholder=
"请输入关键词"
style=
"width:98%"
v-model=
"keywords"
@
keyup.enter.native=
"SouSuo()"
/>
</FormItem>
...
...
@@ -39,42 +39,41 @@
<div
style=
"width:47%;height:100%;float:left;background:rgb(61,169,247);margin-left:1%;line-height:80px;text-align:center;color:white;font-size:20px"
>
数据展示
</div>
<div
style=
"width:48%;height:100%;float:left;background:rgb(253,85,83);margin-left:3%;line-height:80px;text-align:center;color:white;font-size:20px"
>
提示语
</div>
</div>
-->
<div
style=
"background:WhiteSmoke;width:100%;height:5%;line-height:5%;margin-bottom:0.5%"
>
<input
type=
'checkbox'
class=
'input-checkbox'
v-model=
'checked'
@
click=
'checkedAll'
style=
"margin-left:10px;cursor:pointer;margin-top:1%
"
>
<span
style=
"margin-left:10px"
>
全选
</span>
<Button
type=
"primary"
size=
"small"
style=
"margin-left:
2
%;width:50px"
@
click=
"downloadAll"
>
下载
</Button>
<div
style=
"background:WhiteSmoke;width:100%;height:40px;"
class=
'bar'
>
<input
type=
'checkbox'
class=
'selectAll'
v-model=
'checked'
@
click=
'checkedAll'
style=
"margin-left:10px;cursor:pointer;
"
>
<span
style=
"margin-left:5px;position:relative;"
>
选择
<Badge
:count=
"interviewee.length"
size=
'small'
:class=
'["badge",
{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'>
</Badge>
</span>
<Button
type=
"primary"
size=
"small"
style=
"margin-left:
4
%;width:50px"
@
click=
"downloadAll"
>
下载
</Button>
<Button
type=
"primary"
size=
"small"
style=
"margin-left:2%;width:50px"
@
click=
"delateAll"
>
删除
</Button>
<Button
type=
"primary"
size=
"small"
style=
"float:right;margin-right:20px;margin-top:0.6%"
@
click=
"allexport"
>
导出列表
</Button>
<Button
type=
"primary"
size=
"small"
style=
"float:right;margin-right:20px;margin-top:0.6%;"
@
click=
"sendEmail"
>
发送邮件
</Button>
<!--
<Button
type=
"primary"
size=
"small"
style=
"float:right;margin-right:20px;margin-top:0.6%;position:relative;position:relative"
@
click=
"transpond"
>
<Badge
:count=
"interviewee.length"
size=
'small'
:class=
'["badge",
{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'>
</Badge>
转发面试官
</Button>
-->
<Button
type=
"primary"
size=
"small"
style=
"margin-left:2%;"
@
click=
"transpond"
>
转发面试官
</Button>
<Button
type=
"primary"
size=
"small"
class=
'left'
@
click=
"allexport"
>
导出列表
</Button>
<Button
type=
"primary"
size=
"small"
class=
'left leftBtn'
@
click=
"sendEmail(1)"
>
邀请面试
</Button>
</div>
<div
style=
"width:100%;float:left;
margin-bottom:40px;overflow-y: auto;height:100%"
class=
"a
"
>
<div
style=
"width:100%;float:left;
overflow-y: auto;height:100%"
class=
"content
"
>
<div
style=
"margin:50px auto;width:300px;height:200px;line-height:200px;text-align:center;font-size:20px;color:LightGray"
v-show=
"ajaxData.length==0"
>
暂无数据
</div>
<!--
<div
style=
"float:left;margin-left:1%;width:99%;overflow-y: auto;height:600px;margin-bottom:40px"
>
-->
<div
class=
"Resumecontent"
v-for=
'(item,i) in ajaxData'
:key=
"i"
>
<div
class=
"detailResume"
id=
"a"
style=
""
@
mousemove=
"ahove(i,item.isShow)"
@
mouseleave=
"movleave(i,item.isShow)"
:class=
"
{red:item.isShow}">
<p
>
<span
style=
"display:inline-block;height:100%;
font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px"
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
@
click=
"selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"
style=
"
margin-left:10px;
cursor:pointer"
>
<div
class=
"detailResume"
id=
"a"
style=
""
@
mousemove=
"ahove(i,item.isShow)"
@
mouseleave=
"movleave(i,item.isShow)"
:class=
"
{red:item.isShow
, grey: i%2!=0
}">
<p
style=
'margin-left: 10px;'
>
<span
style=
"display:inline-block;height:100%;
margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px;"
class=
'inputcheck'
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
@
click=
"selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"
style=
"cursor:pointer"
>
</span>
<span
style=
"display:inline-block;height:100%;
font-size: 12px;
margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerName
}}
<span
v-show=
"item.ownerMobile !==''"
>
|
</span></span>
<span
style=
"display:inline-block;height:100%;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerName
}}
<span
v-show=
"item.ownerMobile !==''"
>
|
</span></span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerMobile
}}
<span
v-show=
"item.ownerAge !==''"
>
|
</span></span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerAge
}}
岁
<span
v-show=
"item.ownerSex !==''"
>
|
</span></span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerSex
}}
<span
v-show=
"item.ownerWorkYears !==''"
>
|
</span>
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerWorkYears
}}
年
<span
v-show=
"item.ownerExpectTitles !==''"
>
|
</span></span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerHighestDegree
}}
<span
v-show=
"item.ownerExpectTitles !==''"
>
|
</span></span>
<span
style=
"display:inline-block;height:100%;margin-top:5px;font-size:12px;width:
1
5%;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerExpectTitles
}}
</span>
<span
style=
"display:inline-block;height:100%;margin-top:5px;font-size:12px;width:
2
5%;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerExpectTitles
}}
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;width:25%;float:right;text-align:right;margin-right:10px;margin-top:5px"
>
<span
style=
"margin-right:20px;margin-top:5px"
v-if=
"item.flowStatus=='INTERVIEW_OK'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
面试合适
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='INTERVIEW_FAIL'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试淘汰
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_RESULT'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试结果待定
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='END'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
终止面试
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='SEE_FAIL'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
约面失败
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='NO_ENTRY'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
未入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='ARRIVED'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已到达
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-if=
"item.flowStatus=='INTERVIEW_OK'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
面试合适
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='INTERVIEW_FAIL'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试淘汰
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_RESULT'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试结果待定
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='END'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
终止面试
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='SEE_FAIL'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
约面失败
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='NO_ENTRY'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
未入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='ARRIVED'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已到达
</span></span>
<span
style=
"margin-right:10px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_SEE'"
>
<span
style=
"cursor:pointer"
>
<select
name=
"3"
id=
"3"
@
change=
"selectFn2($event,item.id,item.flowStatus)"
>
...
...
@@ -85,10 +84,10 @@
</select>
</span>
</span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SEE'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px;"
>
已邀约
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SEE'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px;"
>
已邀约
</span></span>
<span
style=
"margin-right:10px;margin-top:5px"
v-else-if=
"item.flowStatus=='OPTION'"
>
<span
style=
"cursor:pointer"
>
<select
name=
"4"
id=
"4"
@
change=
"selectFn3($event,item.id,item.flowStatus)"
>
<select
name=
"4"
id=
"4"
@
change=
"selectFn3($event,item.id,item.flowStatus)"
class=
'status'
>
<option
value=
"1"
>
备选
</option>
<option
value=
"2"
>
邀请面试
</option>
<option
value=
"3"
>
PASS
</option>
...
...
@@ -96,13 +95,13 @@
</select>
</span>
</span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_SENT_OFFER'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80;"
/><span
style=
"margin-left:10px"
>
待Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SENT_OFFER'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已发Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_ENTRY'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_ENTRY'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_SENT_OFFER'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80;"
/><span
style=
"margin-left:10px"
>
待Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SENT_OFFER'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已发Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_ENTRY'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_ENTRY'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已入职
</span></span>
<span
style=
"margin-right:10px;margin-top:5px"
v-else-if=
"item.flowStatus=='PASS'"
>
<span
style=
"cursor:pointer"
>
<select
name=
"2"
id=
"2"
@
change=
"selectFn4($event,item.id,item.flowStatus)"
>
<select
name=
"2"
id=
"2"
@
change=
"selectFn4($event,item.id,item.flowStatus)"
class=
'status'
>
<option
value=
"1"
>
PASS
</option>
<option
value=
"2"
>
邀请面试
</option>
<option
value=
"3"
>
备选
</option>
...
...
@@ -110,39 +109,39 @@
</select>
</span>
</span>
<select
name=
"1"
id=
"a"
@
change=
"selectFn1($event,item.id,item.flowStatus)"
v-else-if=
"item.flowStatus=='TO_DO'"
style=
"margin-right:10px;cursor:pointer"
>
<select
name=
"1"
id=
"a"
@
change=
"selectFn1($event,item.id,item.flowStatus)"
v-else-if=
"item.flowStatus=='TO_DO'"
style=
"margin-right:10px;cursor:pointer"
class=
'status'
>
<option
value=
"1"
>
待处理
</option>
<option
value=
"2"
>
pass
</option>
<option
value=
"3"
>
邀请面试
</option>
<option
value=
"4"
>
备选
</option>
</select>
<span><Icon
type=
"md-download"
@
click=
"downloadONE(item.id)"
style=
"font-size:15px;cursor:pointer;color:#0092FF"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='SEE_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='INTERVIEW_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='ARRIVED'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='NO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='END'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='PASS'"
@
click=
"delateR(item.id)"
style=
"font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='OPTION'"
@
click=
"delateR(item.id)"
style=
"font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_DO'"
@
click=
"delateR(item.id)"
style=
"font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"
/></span>
<span
@
click=
"RecordSEE(item.id,item.ownerName)"
style=
"color:#0092FF;cursor:pointer"
>
记录
</span>
<span
class=
'record'
><Icon
type=
"md-download"
@
click=
"downloadONE(item.id)"
style=
"font-size:15px;cursor:pointer;color:#0092FF"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='SEE_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='INTERVIEW_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='ARRIVED'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='NO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='END'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;font-size:15px;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='PASS'"
@
click=
"delateR(item.id)"
style=
"font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='OPTION'"
@
click=
"delateR(item.id)"
style=
"font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_DO'"
@
click=
"delateR(item.id)"
style=
"font-size:15px;cursor:pointer;color:rgb(242, 93, 87);"
/></span>
<span
class=
'recordtext'
@
click=
"RecordSEE(item.id,item.ownerName)"
style=
"color:#0092FF;cursor:pointer"
>
记录
</span>
</span>
</p>
<p
style=
"margin-top:5px;color:Greys"
>
<span
style=
"display:inline-block;font-size: 12px;
margin-left:25px;color:orange"
v-show=
"item.hasForward=='1'"
>
已转
</span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:2
5
px;color:Grey"
v-if=
"item.srcSite!==''"
v-show=
"item.hasForward==null"
>
{{
item
.
deliveryTime
}}
投递 |
</span>
<span
style=
"display:inline-block;font-size: 12px;
margin-left:25px;color:Grey"
v-if=
"item.srcSite==''"
v-show=
"item.hasForward==null"
>
{{
item
.
deliveryTime
}}
上传
<span
v-show=
"item.optSource!==''"
>
|
</span></span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:
5
px;color:Grey"
v-if=
"item.srcSite!==''"
v-show=
"item.hasForward!==null"
>
{{
item
.
deliveryTime
}}
投递 |
</span>
<span
style=
"display:inline-block;font-size: 12px;
margin-left:5px;color:Grey
"
v-if=
"item.srcSite==''"
v-show=
"item.hasForward!==null"
>
{{
item
.
deliveryTime
}}
上传
<span
v-show=
"item.optSource!==''"
>
|
</span></span>
<p
style=
"margin-top:5px;color:Greys
;padding-left:10px;
"
>
<span
style=
"display:inline-block;font-size: 12px;
color:orange"
v-show=
"item.hasForward=='1'"
class=
'transmit'
>
已转
</span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:2
0
px;color:Grey"
v-if=
"item.srcSite!==''"
v-show=
"item.hasForward==null"
>
{{
item
.
deliveryTime
}}
投递 |
</span>
<span
style=
"display:inline-block;font-size: 12px;
color:Grey;margin-left:20px"
v-if=
"item.srcSite==''"
v-show=
"item.hasForward==null"
>
{{
item
.
deliveryTime
}}
上传
<span
v-show=
"item.optSource!==''"
>
|
</span></span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:
-2
px;color:Grey"
v-if=
"item.srcSite!==''"
v-show=
"item.hasForward!==null"
>
{{
item
.
deliveryTime
}}
投递 |
</span>
<span
style=
"display:inline-block;font-size: 12px;
color:Grey;margin-left:-2px
"
v-if=
"item.srcSite==''"
v-show=
"item.hasForward!==null"
>
{{
item
.
deliveryTime
}}
上传
<span
v-show=
"item.optSource!==''"
>
|
</span></span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:3px;color:Grey"
>
{{
item
.
optSource
}}
<span
v-show=
"item.srcSite!==''"
>
|
</span></span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:3px;color:Grey"
>
{{
item
.
srcSite
}}
</span>
<span
style=
"display:inline-block;font-size: 12px;
width:30%;
float:right;text-align:right;margin-right:10px;color:Grey"
>
<span
style=
"display:inline-block;font-size: 12px;float:right;text-align:right;margin-right:10px;color:Grey"
>
<span>
{{
item
.
modifyTime
}}
</span>
<span>
最后操作人:
{{
item
.
d
}}
</span>
</span>
...
...
@@ -150,9 +149,9 @@
</div>
</div>
</div>
<div
class=
"pageBottom"
style=
"width:59%;background:rgba(241,241,241,1);text-align:center;position:fixed;bottom:0;height:40px
"
>
<Page
:total=
"totalSize"
show-elevator
show-total
@
on-change=
"pageChange"
@
on-page-size-change=
"pageSizeChange"
:current=
'pageIndex'
:page-size=
'pageSize'
style=
"text-align:center;margin-top:4px"
></Page>
</div>
<div
class=
"pageBottom
"
>
<Page
:total=
"totalSize"
show-elevator
show-total
@
on-change=
"pageChange"
@
on-page-size-change=
"pageSizeChange"
:current=
'pageIndex'
:page-size=
'pageSize'
style=
"text-align:center;margin-top:4px"
></Page>
</div>
</div>
</div>
<!-- 操作记录弹出框 -->
...
...
@@ -297,50 +296,52 @@
v-model=
"emailMOdal"
width=
'1000px'
:mask-closable=
'false'
:closable=
'false'
>
:closable=
'false'
:styles=
"
{top:'50px'}">
<div
>
<h2
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==false"
>
发送邮件
</h2>
<h2
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==true"
>
新建面试
</h2>
<h3
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==true"
>
<span>
更改为
<span
style=
"color:blue"
>
“新建面试”
</span>
后,你需要从
<span
style=
"color:blue"
>
”面试管理“
</span>
中对该候选人进行后续的操作。
</span></h3>
<h3
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==true"
>
<span>
新建面试后,你需要从
<span
style=
"color:#0092ff"
>
“面试管理”
</span>
中对该候选人进行后续的操作。
</span></h3>
</div>
<div
class=
"emailModal-title"
>
<div
class=
"emailModalTitle-left"
>
<p>
<Form
:label-width=
"70"
:model=
"emailInline"
label-position=
"left"
style=
"margin-left:5%"
ref=
"emailInline"
:rules=
"ruleInline"
class=
"emailForm"
>
<Form
:label-width=
"70"
:model=
"emailInline"
label-position=
"left"
style=
"margin-left:5%"
ref=
"emailInline"
:rules=
"
email
ruleInline"
class=
"emailForm"
>
<FormItem
label=
"选择模板"
style=
"margin-top:20px"
prop=
'moo'
>
<Select
style=
"width:95%"
@
on-change=
'getEmailContentValue'
v-model=
"emailInline.moo"
>
<Option
v-for=
"(item,index) in emailInline.modalArr"
:key=
"index"
:value=
"item.templateCode"
>
{{
item
.
templateName
}}
</Option>
</Select><br>
<!--
<span
v-show=
"emailMassage==true"
>
你尚未选择简历,请先选择简历
</span>
-->
</FormItem>
<FormItem
label=
"收件人"
style=
"margin-top:20px"
:show-massage=
'false
'
>
<Input
style=
"width:95%"
v-model=
"emailInline.receiveEmail"
@
on-blur=
'receiveEmail
'
/>
<span
style=
"position: absolute;left:0;top:30px;color:gray
"
>
输入多个邮箱地址以英文”;“分隔
</span>
<FormItem
label=
"收件人"
style=
"margin-top:20px"
prop=
'receiveEmail
'
>
<Input
style=
"width:95%"
v-model=
"emailInline.receiveEmail"
@
on-focus=
'getfocus("emailInline","receiveEmail")
'
/>
<span
style=
"position: absolute;left:0;top:30px;color:gray
;font-size:12px;"
v-show=
'!tip'
>
{{
tipInfo
}}
</span>
</FormItem>
<FormItem
label=
"抄送"
style=
"margin-top:20px"
>
<Input
style=
"width:95%"
v-model=
"emailInline.copyname"
@
on-
blur=
'copyname
'
/>
<FormItem
label=
"抄送"
style=
"margin-top:20px"
prop=
'copyname'
>
<Input
style=
"width:95%"
v-model=
"emailInline.copyname"
@
on-
focus=
'getfocus("emailInline","copyname")
'
/>
</FormItem>
<FormItem
label=
"主题"
style=
"margin-top:20px"
>
<Input
style=
"width:95%"
v-model=
"emailInline.theme"
@
on-
blur=
'theme
'
/>
<FormItem
label=
"主题"
style=
"margin-top:20px"
prop=
'theme'
>
<Input
style=
"width:95%"
v-model=
"emailInline.theme"
@
on-
focus=
'getfocus("emailInline","theme")
'
/>
</FormItem>
</Form>
</p>
</div>
<div
class=
"emailModalTitle-right"
v-show=
"interviewIsShow==true"
>
<h3
style=
"text-align:center;margin-top:20px"
>
请输入约面信息
</h3>
<Form
:label-width=
"
75"
ref=
"formInline"
:rules=
"ruleInline"
:model=
"formInline"
style=
"margin-top:35px"
label-position=
"left
"
>
<Form
:label-width=
"
80"
ref=
"formInline"
:rules=
"ruleInline"
:model=
"formInline"
style=
"margin-top:35px"
label-position=
"left"
class=
"emailForm
"
>
<FormItem
label=
"邀约人"
style=
"margin-top:20px"
prop=
"UpdateOWER"
>
<Input
v-model=
"formInline.UpdateOWER"
style=
"width:100%"
:maxlength=
"5"
@
on-
blur=
'UpdateOWER
'
/>
<Input
v-model=
"formInline.UpdateOWER"
style=
"width:100%"
:maxlength=
"5"
@
on-
focus=
'getfocus("formInline", "UpdateOWER")
'
/>
</FormItem>
<FormItem
label=
"面试时间"
style=
"margin-top:20px"
prop=
"UpdateTIME"
>
<DatePicker
type=
"datetime"
style=
"width:100%"
v-model=
"formInline.UpdateTIME"
format=
"yyyy-MM-dd HH:mm"
@
on-change=
"changeTime"
:options=
"options3"
:editable=
'false'
@
on-
blur=
'UpdateTIME
'
></DatePicker>
<DatePicker
type=
"datetime"
style=
"width:100%"
v-model=
"formInline.UpdateTIME"
format=
"yyyy-MM-dd HH:mm"
@
on-change=
"changeTime"
:options=
"options3"
:editable=
'false'
@
on-
open-change=
'getfocus("formInline", "UpdateTIME", $event)
'
></DatePicker>
</FormItem>
<FormItem
label=
"面试官"
style=
"margin-top:20px"
prop=
'UpdateVIEW'
>
<Input
v-model=
"formInline.UpdateVIEW"
style=
"width:100%"
:maxlength=
"5"
@
on-blur=
'UpdateVIEW'
/>
</FormItem>
<FormItem
label=
""
prop=
'sendWeixin'
>
<Checkbox
v-model=
"formInline.sendWeixin"
><span
style=
"margin-left:10px"
>
微信通知面试官
</span></Checkbox>
</FormItem>
<Select
v-model =
'formInline.UpdateVIEW'
filterable
style=
'width:100%;'
remote
:remote-method=
"remoteMethod"
:loading=
"loading1"
placeholder=
'请输入面试官全名'
clearable
@
on-open-change=
'getfocus("formInline", "UpdateVIEW", $event)'
ref=
'setQuery'
:label=
'formInline.UpdateVIEW'
>
<Option
v-for=
'(item, index) in options'
:key=
'index'
:value=
'item.name'
>
{{
item
.
name
}}
(
{{
item
.
email
}}
)
</Option>
</Select>
</FormItem>
</Form>
</div>
...
...
@@ -365,10 +366,11 @@
<span><Icon
type=
"md-close"
@
click=
"delateFile(index)"
style=
"font-size:16px;float:right;margin-right:80px"
/></span>
</p>
</div>
<div
slot=
'footer'
style=
"text-align:center"
class=
"Ubt"
>
<div
slot=
'footer'
style=
"text-align:center
;position:relative;
"
class=
"Ubt"
>
<Button
type=
'primary'
@
click=
'emailModalPush'
>
取消
</Button>
<Button
type=
'primary'
@
click=
'modal10=true'
v-show=
"this.isShowAll==false"
:disabled=
"!isDisable"
>
发送
</Button>
<Button
type=
'primary'
@
click=
'modal10=true'
v-show=
"this.isShowAll==true"
:disabled=
"!isDisable"
>
添加并发送
</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>
</div>
</Modal>
<Modal
...
...
@@ -381,7 +383,7 @@
</div>
<div
slot=
'footer'
style=
"text-align:center"
>
<Button
type=
'primary'
@
click=
'modal10=false'
>
取消
</Button>
<Button
type=
'primary'
@
click=
"confireSendEmail"
:disabled=
"!isDisable"
>
确定
</Button>
<Button
type=
'primary'
@
click=
"confireSendEmail"
>
确定
</Button>
</div>
</Modal>
<!-- 转发邮件 -->
...
...
@@ -418,57 +420,63 @@
<Button
type=
'primary'
@
click=
"sendNotice"
>
发送
</Button>
</div>
</Modal>
<!-- 发送失败再次发送 -->
<Modal
v-model=
"modal11"
width=
'350px'
:closable=
'false'
>
<div
>
<h2
style=
"text-align: center;color:black"
>
提示
</h2>
<p
style=
"text-align:center;margin-top:10px;font-size: 14px;text-align:left;"
>
{{
errorInfo
}}
</p>
</div>
<div
slot=
'footer'
style=
"text-align:center"
>
<Button
type=
'primary'
@
click=
'cancelSubmit'
>
取消
</Button>
<Button
type=
'primary'
@
click=
"sendFail"
>
确定
</Button>
</div>
</Modal>
</div>
</
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
{
Serchinterviewor
}
from
'
../../api/interview.server.js
'
import
qs
from
'
qs
'
import
{
sapi
}
from
'
../../config
'
import
{
_debounce
,
_throttle
}
from
'
../../service/util.js
'
import
{
_debounce
,
_throttle
,
emailValidata
,
emailRule
,
vidte
,
validator
}
from
'
../../service/util.js
'
import
localStorage
from
'
../../service/localstorage.service
'
import
Router
from
'
vue-router
'
;
import
ckeditor
from
'
../../components/ckeditor
'
import
{
mapState
}
from
'
vuex
'
// import ckeditor from '../../../static/ckeditor'
export
default
{
data
()
{
const
vidte
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
emailMassage
==
true
){
callback
(
new
Error
(
'
你尚未选择简历,请先选择简历
'
))
}
else
if
(
this
.
allEmailVilitor
==
true
){
callback
(
new
Error
(
'
不能选择多份简历,请选择单份简历
'
))
}
else
{
callback
()
}
}
const
validator
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
this
.
$Notice
.
warning
({
title
:
'
提示
'
,
desc
:
'
请输入您要通知的面试官
'
})
callback
()
}
return
{
modal11
:
false
,
errorInfo
:
''
,
interviewee
:
[],
interviewerNameList
:
[],
tip
:
false
,
tipInfo
:
'
输入多个邮箱地址以英文”;“分隔
'
,
sad
:
''
,
loading1
:
false
,
options
:
[],
editorObject
:
{
type
:
''
,
value
:
''
},
ruleInline
:
{
UpdateOWER
:
[
{
required
:
true
,
message
:
'
邀约人不能为空
'
,
trigger
:
'
blur
'
}
{
required
:
true
,
message
:
'
邀约人不能为空
'
,
trigger
:
'
blur
'
,
validator
:
emailValidata
.
bind
(
this
)
}
],
UpdateTIME
:
[
{
required
:
true
,
message
:
'
面试时间不能为空
'
,
trigger
:
'
date
'
}
{
required
:
true
,
message
:
'
面试时间不能为空
'
,
trigger
:
'
change
'
,
type
:
'
date
'
,
validator
:
emailValidata
.
bind
(
this
)
}
],
UpdateVIEW
:
[
{
required
:
true
,
message
:
'
面试官不能为空
'
,
trigger
:
'
blur
'
}
],
moo
:[
{
required
:
false
,
validator
:
vidte
,
trigger
:
'
change
'
},
],
{
required
:
true
,
message
:
'
面试官不能为空
'
,
trigger
:
'
change
'
,
validator
:
emailValidata
.
bind
(
this
),
type
:
String
}
]
},
emailruleInline
:
{
receiveEmail
:
[{
required
:
true
,
trigger
:
'
blur
'
,
pattern
:
emailRule
,
validator
:
emailValidata
.
bind
(
this
)}],
theme
:
[{
required
:
true
,
trigger
:
'
blur
'
,
message
:
'
主题不能为空
'
,
validator
:
emailValidata
.
bind
(
this
)}],
copyname
:
[{
required
:
false
,
trigger
:
'
blur
'
,
pattern
:
emailRule
,
validator
:
emailValidata
.
bind
(
this
),
empty
:
true
}]
},
formInline
:{
UpdateOWER
:
''
,
...
...
@@ -519,7 +527,7 @@ import {mapState} from 'vuex'
interviewerName
:
''
},
transpondRule
:
{
interviewerName
:
[{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validator
}]
interviewerName
:
[{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validator
.
bind
(
this
)
}]
},
interviewerList
:
[{
name
:
'
test
'
,
value
:
'
1
'
}],
modal10
:
false
,
...
...
@@ -674,17 +682,15 @@ import {mapState} from 'vuex'
selectFn1
(
e
,
SID
,
itemsta
)
{
this
.
toseeid
=
SID
this
.
emailId
=
SID
this
.
emailIdArr
.
push
(
SID
)
this
.
emailIdArr
=
[]
this
.
emailIdArr
.
push
(
SID
)
this
.
isShowTwo
=
true
this
.
ITEMSTA
=
itemsta
// 准备约面
if
(
e
.
target
.
value
==
3
){
getEmailMoo
().
then
(
res
=>
{
this
.
emailInline
.
modalArr
.
push
(
res
.
data
.
body
[
0
])
})
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
2
){
...
...
@@ -742,7 +748,7 @@ import {mapState} from 'vuex'
nextStep
(){
this
.
beforeBtu
=
true
this
.
modal2
=
false
this
.
emailMOdal
=
true
this
.
sendEmail
()
},
selectFn2
(
e
,
SID
,
itemsta
)
{
this
.
ITEMSTA
=
itemsta
...
...
@@ -750,12 +756,9 @@ import {mapState} from 'vuex'
this
.
toseeid
=
SID
// 准备约面
if
(
e
.
target
.
value
==
1
){
getEmailMoo
().
then
(
res
=>
{
this
.
emailInline
.
modalArr
.
push
(
res
.
data
.
body
[
0
])
})
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
3
){
...
...
@@ -799,12 +802,10 @@ import {mapState} from 'vuex'
this
.
toseeid
=
SID
// 准备约面
if
(
e
.
target
.
value
==
2
){
getEmailMoo
().
then
(
res
=>
{
this
.
emailInline
.
modalArr
.
push
(
res
.
data
.
body
[
0
])
})
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
3
){
...
...
@@ -848,12 +849,10 @@ import {mapState} from 'vuex'
this
.
emailId
=
SID
// 准备约面
if
(
e
.
target
.
value
==
2
){
getEmailMoo
().
then
(
res
=>
{
this
.
emailInline
.
modalArr
.
push
(
res
.
data
.
body
[
0
])
})
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
1
){
...
...
@@ -988,7 +987,7 @@ import {mapState} from 'vuex'
selectElement4
(){
},
//搜索
SouSuo
(
page
){
SouSuo
(
page
,
status
){
page
=
typeof
(
page
)
==
'
number
'
?
page
:
1
this
.
searchInfo
.
pageIndex
=
page
this
.
pageIndex
=
page
...
...
@@ -1016,7 +1015,7 @@ import {mapState} from 'vuex'
}
this
.
ajaxData
=
[]
this
.
checkboxList
=
[]
sousuoList
(
parmars
).
then
(
res
=>
{
sousuoList
(
parmars
,
status
).
then
(
res
=>
{
let
Ishow
=
res
.
data
.
items
if
(
res
.
data
.
success
==
true
){
this
.
checkboxList
=
[]
...
...
@@ -1086,6 +1085,7 @@ import {mapState} from 'vuex'
// 选择input元素
selectInputElement
(
index
,
doID
,
doStatus
,
sss
,
item
){
this
.
DOWNLOAD
=
doID
this
.
emailIdArr
=
[]
sss
=!
sss
this
.
ajaxData
[
index
].
STATES
=
sss
Array
.
prototype
.
indexOf
=
function
(
val
)
{
...
...
@@ -1154,7 +1154,6 @@ import {mapState} from 'vuex'
},
// 删除单条简历
delateONE
(){
console
.
log
(
this
.
delateARRALL3
)
deleteREsume
(
this
.
delateARRALL3
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
){
this
.
delateARRALL3
.
map
(
item
=>
{
...
...
@@ -1167,6 +1166,27 @@ import {mapState} from 'vuex'
},
changeTime
(
b
){
this
.
UpdateTIME
=
b
if
(
!
b
){
this
.
editorObject
=
{
type
:
this
.
temp
,
value
:
this
.
emailInline
.
templateContent
}
this
.
isDisable
=
false
return
}
else
{
this
.
isDisable
=
true
}
var
reg
=
/<span id="email_seeTime"><span>/g
var
time
=
b
.
split
(
'
-
'
)
var
year
=
time
[
0
]
var
mon
=
time
[
1
]
var
day
=
time
[
2
].
split
(
'
'
)[
0
]
var
time
=
time
[
2
].
split
(
'
'
)[
1
]
var
content
=
`<span id="email_seeTime">
${
year
}
年
${
mon
}
月
${
day
}
日
${
time
}
<span>`
this
.
editorObject
=
{
type
:
this
.
temp
,
value
:
this
.
emailInline
.
templateContent
.
replace
(
reg
,
content
)
}
},
// 不可删除状态下点击
undelate
(){
...
...
@@ -1310,55 +1330,78 @@ import {mapState} from 'vuex'
this
.
ajaxData
[
index
].
isShow
=
false
},
// 发送邮件
sendEmail
(){
sendEmail
(
type
){
if
(
this
.
checkboxList
.
length
==
0
&&
type
)
{
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
你尚未选择简历,请先选择简历
'
})
return
}
if
(
this
.
checkboxList
.
length
>
1
&&
type
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
不能选择多份简历,请选择单份简历
'
})
return
}
this
.
emailInline
.
modalArr
=
[]
this
.
$refs
.
emailInline
.
resetFields
()
this
.
$refs
.
formInline
.
resetFields
()
this
.
emailInline
.
moo
=
'
TEMP_0001
'
this
.
emailMOdal
=
true
getEmailMoo
().
then
(
res
=>
{
this
.
emailInline
.
modalArr
=
res
.
data
.
body
})
this
.
getEmailContentValue
(
this
.
emailInline
.
moo
)
},
getEmailContentValue
(
value
){
if
(
!
value
){
return
}
this
.
isDisable
=
true
this
.
temp
=
value
if
(
this
.
isShowTwo
==
true
){
this
.
isShowAll
=
true
this
.
interviewIsShow
=
true
}
else
{
if
(
this
.
emailIdArr
.
length
>
1
&&
(
value
==
'
TEMP_0001
'
||
value
==
'
TEMP_0005
'
||
value
==
'
TEMP_0006
'
)){
this
.
allEmailVilitor
=
true
}
else
{
this
.
allEmailVilitor
=
false
if
(
this
.
temp
==
'
TEMP_0001
'
){
this
.
isShowAll
=
true
}
else
{
this
.
isShowAll
=
false
}
}
if
(
value
==
'
TEMP_0001
'
){
this
.
interviewIsShow
=
true
this
.
isShowAll
=
true
}
else
{
this
.
interviewIsShow
=
false
this
.
isShowAll
=
false
}
this
.
emailId
=
this
.
emailIdArr
.
length
==
0
?
''
:
this
.
emailIdArr
[
0
]
if
(
value
==
'
TEMP_0001
'
&&
this
.
emailId
==
''
){
this
.
interviewBtu
=
true
this
.
isShowAll
=
true
this
.
emailMassage
=
true
}
else
if
(
value
==
'
TEMP_0005
'
&&
this
.
emailId
==
''
){
this
.
emailMassage
=
true
}
else
if
(
value
==
'
TEMP_0006
'
&&
this
.
emailId
==
''
){
this
.
emailMassage
=
true
if
(
this
.
emailIdArr
.
length
>
1
&&
(
value
==
'
TEMP_0001
'
||
value
==
'
TEMP_0005
'
||
value
==
'
TEMP_0006
'
)){
this
.
allEmailVilitor
=
true
}
else
{
this
.
allEmailVilitor
=
false
if
(
this
.
temp
==
'
TEMP_0001
'
){
this
.
isShowAll
=
true
}
else
{
this
.
isShowAll
=
false
}
}
if
(
value
==
'
TEMP_0001
'
){
this
.
interviewIsShow
=
true
this
.
isShowAll
=
true
}
else
{
this
.
interviewIsShow
=
false
this
.
isShowAll
=
false
}
this
.
emailId
=
this
.
emailIdArr
.
length
==
0
?
''
:
this
.
emailIdArr
[
0
]
if
(
value
==
'
TEMP_0001
'
&&
this
.
emailId
==
''
){
this
.
interviewBtu
=
true
this
.
isShowAll
=
true
this
.
emailMassage
=
true
}
else
if
(
value
==
'
TEMP_0005
'
&&
this
.
emailId
==
''
){
this
.
emailMassage
=
true
}
else
if
(
value
==
'
TEMP_0006
'
&&
this
.
emailId
==
''
){
this
.
emailMassage
=
true
}
else
{
if
(
value
==
'
TEMP_0001
'
){
this
.
isShowAll
=
true
}
else
{
this
.
isShowAll
=
false
}
this
.
interviewBtu
=
false
this
.
emailMassage
=
false
}
}
else
{
if
(
value
==
'
TEMP_0001
'
){
this
.
isShowAll
=
true
}
else
{
this
.
isShowAll
=
false
}
this
.
interviewBtu
=
false
this
.
emailMassage
=
false
}}
this
.
emailCode
=
value
let
params
=
{
resumeId
:
this
.
emailId
==
''
?
''
:
this
.
emailId
,
...
...
@@ -1373,9 +1416,10 @@ import {mapState} from 'vuex'
value
:
this
.
emailInline
.
templateContent
||
''
}
if
(
res
.
data
.
body
&&
res
.
data
.
body
.
resumeInterviewVO
){
this
.
formInline
.
UpdateOWER
=
res
.
data
.
body
.
resumeInterviewVO
.
in
terview
erName
this
.
formInline
.
UpdateVIEW
=
res
.
data
.
body
.
resumeInterviewVO
.
in
vit
erName
this
.
formInline
.
UpdateOWER
=
res
.
data
.
body
.
resumeInterviewVO
.
in
vit
erName
this
.
formInline
.
UpdateVIEW
=
res
.
data
.
body
.
resumeInterviewVO
.
in
terview
erName
this
.
formInline
.
UpdateTIME
=
res
.
data
.
body
.
resumeInterviewVO
.
seeTime
this
.
changeTime
(
this
.
formInline
.
UpdateTIME
)
}
else
{
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
...
...
@@ -1383,7 +1427,6 @@ import {mapState} from 'vuex'
}
})
console
.
log
(
"
+++++++++++++++
"
)
},
uploadFile
(){
// this.uploadFileList=[]
...
...
@@ -1407,6 +1450,8 @@ import {mapState} from 'vuex'
return
false
},
emailModalPush
(){
this
.
$refs
.
emailInline
.
resetFields
()
this
.
$refs
.
formInline
.
resetFields
()
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
...
...
@@ -1426,7 +1471,7 @@ import {mapState} from 'vuex'
this
.
isShowTwo
=
false
this
.
isLimitSize
=
false
this
.
uploadFileList
=
[]
this
.
SouSuo
(
this
.
pageT
)
this
.
clearInterviewee
(
)
},
getEditorValue
(
value
){
// 调编辑器组件方法获取数据
return
this
.
$refs
.
editor
.
getValue
()
...
...
@@ -1437,9 +1482,9 @@ import {mapState} from 'vuex'
},
// 确认发送邮件
confireSendEmail
(){
this
.
sad
=
this
.
getEditorValue
()
if
(
this
.
sad
==
''
){
this
.
$Notice
.
error
({
this
.
sad
=
this
.
getEditorValue
()
if
(
this
.
sad
==
''
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
请填写完整的信息
'
});
...
...
@@ -1488,13 +1533,8 @@ import {mapState} from 'vuex'
});
return
}
if
((
this
.
emailIdArr
.
length
>
1
)
&&
(
this
.
temp
==
'
TEMP_0001
'
||
this
.
temp
==
'
TEMP_0005
'
||
this
.
temp
==
'
TEMP_0006
'
)){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
不能选择多份简历,请选择单份简历
'
});
return
}
this
.
attachFileList
=
this
.
uploadFileList
.
length
==
0
?
''
:
this
.
uploadFileList
this
.
flowStatusTT
=
this
.
emailFlowStatus
==
''
?
''
:
'
TO_SEE
'
this
.
UpdateTIMETwo
=
this
.
formInline
.
UpdateTIME
==
''
?
''
:
this
.
formInline
.
UpdateTIME
...
...
@@ -1516,6 +1556,8 @@ import {mapState} from 'vuex'
formData
.
append
(
'
resumeInterviewVO.resumeId
'
,
this
.
emailId
)
formData
.
append
(
'
resumeInterviewVO.inviterName
'
,
this
.
formInline
.
UpdateOWER
==
''
?
''
:
this
.
formInline
.
UpdateOWER
)
formData
.
append
(
'
resumeInterviewVO.interviewerName
'
,
this
.
formInline
.
UpdateVIEW
==
''
?
''
:
this
.
formInline
.
UpdateVIEW
)
let
info
=
this
.
options
.
find
(
item
=>
item
.
name
==
this
.
formInline
.
UpdateVIEW
)
formData
.
append
(
'
resumeInterviewVO.email
'
,(
info
&&
info
.
email
)
||
''
)
formData
.
append
(
'
sendWeixin
'
,
this
.
formInline
.
sendWeixin
==
true
?
1
:
0
)
formData
.
append
(
'
resumeInterviewVO.seeTime
'
,
moment
(
this
.
UpdateTIMETwo
).
format
(
'
YYYY/MM/DD HH:mm
'
))
formData
.
append
(
'
flowStatus
'
,
this
.
flowStatusTT
)
...
...
@@ -1523,10 +1565,12 @@ import {mapState} from 'vuex'
sendEmail
(
formData
).
then
(
res
=>
{
this
.
isDisable
=
true
if
(
res
.
data
.
success
==
true
){
this
.
$Notice
.
success
({
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送邮件成功
'
});
})
},
500
)
this
.
emailMOdal
=
false
this
.
modal10
=
false
this
.
emailInline
.
modalArr
=
[]
...
...
@@ -1551,33 +1595,9 @@ import {mapState} from 'vuex'
this
.
SouSuo
(
this
.
pageT
)
}
if
(
res
.
data
.
success
==
false
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
发送邮件失败
'
});
this
.
emailMOdal
=
false
this
.
modal10
=
false
// this.isDisable=true
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
this
.
emailInline
.
templateContent
=
''
this
.
sad
=
''
this
.
fileList
=
[]
this
.
emailInline
.
moo
=
''
this
.
emailMOdal
=
false
this
.
emailMassage
=
false
this
.
emailIdArr
=
[]
this
.
emailFlowStatus
=
''
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
this
.
formInline
.
UpdateTIME
=
''
this
.
formInline
.
sendWeixin
=
true
this
.
emailInline
.
copyname
=
''
this
.
isShowTwo
=
false
this
.
uploadFileList
=
[]
this
.
clearInterviewee
()
this
.
SouSuo
(
this
.
pageT
)
this
.
modal10
=
false
this
.
modal11
=
true
this
.
errorInfo
=
res
.
data
.
body
.
message
}
})
}
else
{
...
...
@@ -1600,13 +1620,15 @@ import {mapState} from 'vuex'
sendEmail
(
formData
).
then
(
res
=>
{
this
.
isDisable
=
true
if
(
res
.
data
.
success
==
true
){
this
.
$Notice
.
success
({
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送邮件成功
'
})
})
},
500
)
this
.
emailMOdal
=
false
this
.
modal10
=
false
// this.isDisable=true
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
...
...
@@ -1629,33 +1651,9 @@ import {mapState} from 'vuex'
this
.
SouSuo
(
this
.
pageT
)
}
if
(
res
.
data
.
success
==
false
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
发送邮件失败
'
});
this
.
emailMOdal
=
false
this
.
modal10
=
false
// this.isDisable=true
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
this
.
emailInline
.
templateContent
=
''
this
.
sad
=
''
this
.
fileList
=
[]
this
.
emailInline
.
moo
=
''
this
.
emailMOdal
=
false
this
.
emailMassage
=
false
this
.
emailIdArr
=
[]
this
.
emailFlowStatus
=
''
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
this
.
formInline
.
UpdateTIME
=
''
this
.
emailInline
.
copyname
=
''
this
.
isShowTwo
=
false
this
.
isLimitSize
=
false
this
.
uploadFileList
=
[]
this
.
clearInterviewee
()
this
.
SouSuo
(
this
.
pageT
)
this
.
modal10
=
false
this
.
modal11
=
true
this
.
errorInfo
=
res
.
data
.
body
.
message
}
})
}
...
...
@@ -1736,47 +1734,45 @@ import {mapState} from 'vuex'
if
(
res
.
data
.
success
==
true
)
{
this
.
clearInterviewee
()
this
.
modal8
=
false
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送成功
'
})
},
300
)
}
else
{
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送成功
'
});
}
else
{
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
发送失败
'
});
desc
:
'
发送失败
'
})
},
500
)
this
.
clearInterviewee
()
this
.
modal8
=
false
}
})
})
},
remoteMethod
:
_debounce
(
function
(
query
){
this
.
options
=
[]
remoteMethod
:
async
function
(
query
){
if
(
query
!==
''
)
{
this
.
loading1
=
true
;
setTimeout
(()
=>
{
setTimeout
(
async
()
=>
{
this
.
loading1
=
false
;
let
list
=
[]
findCompanyEmailByKey
(
query
).
then
(
res
=>
{
list
=
res
this
.
options
=
list
.
data
.
body
})
},
500
);
query
=
query
.
split
(
'
(
'
)[
0
]
let
list
=
await
findCompanyEmailByKey
(
query
)
this
.
options
=
list
.
data
.
body
},
200
);
}
else
{
this
.
options
=
[];
}
}
)
,
},
changenotice
(
a
){
},
receiveEmail
(){
if
(
!
(
/^
((([
a-z0-9_
\.
-
]
+
)
@
([\d
a-z
\.
-
]
+
)\.([
a-z
\.]{2,6}\;))
*
(([
a-z0-9_
\.
-
]
+
)
@
([\d
a-z
\.
-
]
+
)\.([
a-z
\.]{2,6})))
$/
.
test
(
this
.
emailInline
.
receiveEmail
))){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
请正确填写邮箱地址
'
});
this
.
isDisable
=
false
return
this
.
tipInfo
=
'
请正确填写邮箱地址
'
this
.
isDisable
=
false
return
}
else
{
this
.
isDisable
=
true
}
...
...
@@ -1825,197 +1821,312 @@ import {mapState} from 'vuex'
}
else
{
this
.
isDisable
=
true
}
}
},
getfocus
(
form
,
name
,
e
){
let
vm
=
this
;
let
value
=
this
[
form
][
name
]
if
(
name
==
'
receiveEmail
'
)
{
this
.
tip
&&
this
.
$refs
[
form
].
fields
.
forEach
(
function
(
e
)
{
if
(
e
.
prop
==
name
)
{
e
.
resetField
()
vm
[
form
][
name
]
=
value
vm
.
tip
=
false
}
})
}
else
{
if
(
name
==
'
UpdateTIME
'
&&
e
==
false
){
// 时间选择器关闭弹框的时候
this
.
$refs
.
formInline
.
validateField
(
'
UpdateTIME
'
,
(
e
)
=>
{})
return
}
if
(
name
==
'
UpdateVIEW
'
&&
e
==
false
){
// 选择关闭弹框的时候
this
.
$refs
.
formInline
.
validateField
(
'
UpdateVIEW
'
,
(
e
)
=>
{
})
return
}
this
.
$refs
[
form
].
fields
.
forEach
(
function
(
e
)
{
if
(
e
.
prop
==
name
)
{
e
.
resetField
()
vm
[
form
][
name
]
=
value
}
})
}
},
submit
()
{
let
flag
=
false
this
.
$refs
.
emailInline
.
validate
(
val
=>
{
if
(
!
val
)
{
flag
=
true
return
}
})
this
.
$refs
.
formInline
.
validate
(
val
=>
{
if
(
!
val
)
{
flag
=
true
return
}
})
if
(
!
flag
){
this
.
modal10
=
true
}
},
SerchlistinterviewList
(){
Serchinterviewor
().
then
(
res
=>
{
this
.
interviewerNameList
=
res
.
data
.
body
})
},
cancelSubmit
(){
this
.
emailMOdal
=
false
this
.
modal11
=
false
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
this
.
emailInline
.
templateContent
=
''
this
.
sad
=
''
this
.
fileList
=
[]
this
.
emailInline
.
moo
=
''
this
.
emailMOdal
=
false
this
.
emailMassage
=
false
this
.
emailIdArr
=
[]
this
.
emailFlowStatus
=
''
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
this
.
formInline
.
UpdateTIME
=
''
this
.
formInline
.
sendWeixin
=
true
this
.
emailInline
.
copyname
=
''
this
.
isShowTwo
=
false
this
.
uploadFileList
=
[]
this
.
clearInterviewee
()
},
sendFail
(){
this
.
modal11
=
false
}
},
mounted
(){
this
.
SouSuo
()
this
.
SouSuo
(
null
,
'
init
'
)
}
}
</
script
>
<
style
scoped
lang=
'less'
>
.allResume{
.allResume{
width: 100%;
height:100%
}
.allResume-left{
height: 100%;
width: 29%;
box-shadow:#dcdee2 0 0 6px 1px;
float: left;
}
.allResume-right{
height: 100%;
overflow: hidden;
width: 70.5%;
float: left;
margin-left:1px
}
.red{
background: LightGray
}
.resumeRightContentTop{
width: 100%;
height: 90%
}
.Resumecontent{
width: 100%;
}
.massage{
height:20px;
margin-top: 5px
}
.Recode span{
margin-left:20px
}
select::-ms-expand{display:none;}
select{
appearance:none;
-moz-appearance:none;
-webkit-appearance:none;
outline: none;
border: none;
color: #0092FF;
background-color: rgba(255,255,255,0.0)
}
.active1{
color:#0092FF
}
.sex span:first-child{
margin-left: 0px
}
.sex span:not(:first-child){
margin-left: 30px
}
.Education{
width: 100%;
}
.Education span{
width: 87px;
display:inline-block;
}
.Education span:nth-child(1){
width: 45px;
display:inline-block;
}
.state{
width: 100%;
/* border:1px solid red */
}
.state span{
width: 60px;
/* border:1px solid black; */
display: inline-block;
}
.state span:nth-child(1){
width: 45px;
display:inline-block;
}
.text1{
width: 80%;
height: 60px;
background:rgb(61,169,247) ;
margin: 30px 0 0 30px
}
.text2{
width: 80%;
height: 60px;
background:rgb(253,85,83);
margin: 30px 0 0 30px
}
.text3{
width: 80%;
height: 60px;
background:rgb(0,176,160);
margin: 30px 0 0 30px
}
.detailResume{
width:100%;
height:60px;
}
.a div:nth-child(2n){
background:rgba(241,241,241,1);
}
.emailModal-title{
height: 280px;
width: 100%;
}
.emailModalTitle-left{
height: 100%;
width: 60%;
float: left;
}
.emailModalTitle-right{
height: 100%;
width: 40%;
float: left;
}
.ckeditor{
width:100%
}
.uploadEnclosure{
width: 100%;
}
.Ubt button{
margin-left: 40px
}
.badge1{
display: inline-block;
position: absolute;
width:25%;
height:73%;
line-height: 130%;
top:-23%;
left: -10%;
background:red;
border-radius: 50%;
}
.badge{
position: absolute;
top: -32%;
right: -15px;
}
.badges {
right: -30px;
}
.badges1 {
right: -21px;
}
.interviewee{
float:left;
width:50px;
margin :10px;
height: 60px;
text-align: center;
.pic{
.bar{
display:flex;
align-items: center;
position: relative;
height:40px;
.left{
position: absolute;
right: 10px;
}
.leftBtn{
right: 90px;
}
}
img{
width:100%;
.allResume-left{
height: 100%;
width: 29.5%;
box-shadow:#dcdee2 0 0 6px 1px;
float: left;
}
.allResume-right{
height: 100%;
overflow: hidden;
width: 70.5%;
float: left;
position:relative;
}
.red{
background: LightGray
}
.resumeRightContentTop{
width: 100%;
height: 100%;
overflow: hidden;
}
.Resumecontent{
width: 100%;
}
.massage{
height:20px;
margin-top: 5px
}
p{
.Recode span{
margin-left:20px
}
select::-ms-expand{display:none;}
select{
appearance:none;
-moz-appearance:none;
-webkit-appearance:none;
outline: none;
border: none;
color: #0092FF;
background-color: rgba(255,255,255,0.0)
}
.active1{
color:#0092FF
}
.sex span{
margin-right: 20px
}
.Education{
width: 100%;
text-align: left;
}
.Education span{
margin-right:20px;
display:inline-block;
}
.Education span:nth-child(1){
margin-right:20px;
display:inline-block;
}
.state{
width: 100%;
/* border:1px solid red */
}
.state span{
margin-right:20px;
/* border:1px solid black; */
display: inline-block;
}
.state span:nth-child(1){
margin-right:20px;
display:inline-block;
}
.text1{
width: 80%;
height: 60px;
background:rgb(61,169,247) ;
margin: 30px 0 0 30px
}
.text2{
width: 80%;
height: 60px;
background:rgb(253,85,83);
margin: 30px 0 0 30px
}
.text3{
width: 80%;
height: 60px;
background:rgb(0,176,160);
margin: 30px 0 0 30px
}
.detailResume{
width:100%;
height:60px;
}
.grey{
background:rgba(241,241,241,1);
}
.emailModal-title{
height: 280px;
width: 100%;
text-align: center;
}
i{
.emailModalTitle-left{
height: 100%;
width: 60%;
float: left;
}
.emailModalTitle-right{
height: 100%;
width: 40%;
float: left;
}
.ckeditor{
width:100%
}
.uploadEnclosure{
width: 100%;
}
.Ubt button{
margin-left: 40px
}
.badge1{
display: inline-block;
position: absolute;
right:-10px;
top:-10px;
width:25%;
height:73%;
line-height: 130%;
top:-23%;
left: -10%;
background:red;
border-radius: 50%;
}
.hint{
.badge{
position: absolute;
top: -50%;
right: -18px;
}
}
.title{
.badges {
right: -35px;
}
.badges1 {
right: -25px;
}
.interviewee{
float:left;
width:50px;
margin :10px;
height: 60px;
text-align: center;
.pic{
position: relative;
height:40px;
}
img{
width:100%;
}
p{
width: 100%;
text-align: center;
}
i{
position: absolute;
right:-10px;
top:-10px;
}
.hint{
}
}
.title{
text-align: center;
width:100%;
margin-bottom: 10px;
}
.wechat{
position: absolute;
right: -5px;
top:30%;
span{
font-size: 13px;
}
}
.content{
padding-bottom: 80px;
}
.pageBottom{
width:100%;
margin-bottom: 10px;
background:rgba(241,241,241,1);
text-align:center;
position:absolute;
bottom:0;
height:40px;
}
</
style
>
<
style
>
.emailForm
.ivu-form-item-label
{
.
allResume
.
emailForm
.ivu-form-item-label
{
font-size
:
14px
}
.allResume
.ivu-form-item-content
{
font-size
:
14px
;
}
.allResume
.ivu-form-item-error-tip
{
font-size
:
12px
;
}
</
style
>
\ No newline at end of file
src/page/resume/channel.vue
View file @
95e44856
...
...
@@ -2,7 +2,7 @@
<div
class=
"channel"
>
<!--
<Spin
size=
"large"
fix
v-if=
"spinShow"
style=
"font-size:20px"
>
加载中...
</Spin>
-->
<div
class=
"channel-left"
>
<Form
:label-width=
"
80"
style=
"width:88%;margin-left:7%"
>
<Form
:label-width=
"
90"
style=
"width:88%;margin:0 auto;"
class=
'emailForm'
>
<FormItem
label=
"关键词:"
style=
"margin-top:20px"
>
<Input
placeholder=
"请输入关键词"
style=
"width:98%"
v-model=
"keywords"
@
keyup.enter.native=
"SouSuo(item.Num1,item.Num2,item.Num3)"
/>
</FormItem>
...
...
@@ -38,40 +38,41 @@
<div
style=
"width:47%;height:100%;float:left;background:rgb(61,169,247);margin-left:1%;line-height:80px;text-align:center;color:white;font-size:20px"
>
数据展示
</div>
<div
style=
"width:48%;height:100%;float:left;background:rgb(253,85,83);margin-left:3%;line-height:80px;text-align:center;color:white;font-size:20px"
>
提示语
</div>
</div>
<div
style=
"background:WhiteSmoke;width:100%;height:
5%;line-height:5%;margin-bottom:0.5%"
>
<input
type=
'checkbox'
class=
'
input-checkbox'
v-model=
'checked'
@
click=
'checkedAll'
style=
"margin-left:10px;cursor:pointer;margin-top:1%
"
>
<span
style=
"margin-left:
8px"
>
全选
</span>
<Button
type=
"primary"
size=
"small"
style=
"margin-left:
2
%;width:50px"
@
click=
"downloadAll"
>
下载
</Button>
<div
style=
"background:WhiteSmoke;width:100%;height:
40px;"
class=
'bar'
>
<input
type=
'checkbox'
class=
'
selectAll'
v-model=
'checked'
@
click=
'checkedAll'
style=
"margin-left:10px;cursor:pointer;
"
>
<span
style=
"margin-left:
5px;position:relative;"
>
选择
<Badge
:count=
"interviewee.length"
size=
'small'
:class=
'["badge",
{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'>
</Badge>
</span>
<Button
type=
"primary"
size=
"small"
style=
"margin-left:
4
%;width:50px"
@
click=
"downloadAll"
>
下载
</Button>
<Button
type=
"primary"
size=
"small"
style=
"margin-left:2%;width:50px"
@
click=
"delateAll"
>
删除
</Button>
<Button
type=
"primary"
size=
"small"
style=
"
float:right;margin-right:20px;margin-top:0.6%"
@
click=
"allexport"
>
导出列表
</Button
>
<Button
type=
"primary"
size=
"small"
style=
"float:right;margin-right:20px;margin-top:0.6%"
@
click=
"sendEmail"
>
发送邮件
</Button>
<!--
<Button
type=
"primary"
size=
"small"
style=
"float:right;margin-right:20px;margin-top:0.6%;position:relative;position:relative"
@
click=
"transpond"
>
<B
adge
:count=
"interviewee.length"
size=
'small'
:class=
'["badge",
{"badges1":interviewee.length>9, "badges": interviewee.length>99}]'>
</Badge>
转发面试官
</Button>
--
>
<Button
type=
"primary"
size=
"small"
style=
"
margin-left:2%;"
@
click=
"transpond"
>
转发面试官
</Button
>
<B
utton
type=
"primary"
size=
"small"
class=
'left'
@
click=
"allexport"
>
导出列表
</Button>
<Button
type=
"primary"
size=
"small"
class=
'left leftBtn'
@
click=
"sendEmail(1)"
>
邀请面试
</Button
>
</div>
<div
style=
"margin-bottom:40px;float:left;width:100%;overflow-y: auto;height:100%"
class=
"a"
>
<div
style=
"margin:50px auto;width:300px;height:200px;line-height:200px;text-align:center;font-size:20px;color:LightGray"
v-show=
"ajaxData.length==0"
>
暂无数据
</div>
<div
class=
"Resumecontent"
v-for=
'(item,i) in ajaxData'
:key=
"i"
>
<div
class=
"detailResume"
id=
"a"
@
mousemove=
"ahove(i,item.isShow)"
@
mouseleave=
"movleave(i,item.isShow)"
:class=
"
{red:item.isShow}" >
<p
class=
"massage"
style=
"margin-
top:10px
"
>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px"
>
<input
type=
'checkbox'
name=
'checkboxinput'
style=
"
margin-left:10px;
cursor:pointer"
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
@
click=
"selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"
></span>
<div
class=
"detailResume"
id=
"a"
@
mousemove=
"ahove(i,item.isShow)"
@
mouseleave=
"movleave(i,item.isShow)"
:class=
"
{red:item.isShow
, grey: i%2!=0
}" >
<p
class=
"massage"
style=
"margin-
left:10px;
"
>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;margin-top:5px"
class=
'inputcheck'
>
<input
type=
'checkbox'
name=
'checkboxinput'
style=
"cursor:pointer"
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
@
click=
"selectInputElement(i,item.id,item.flowStatus,item.STATES, item)"
></span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerName
}}
|
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerMobile
}}
|
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerAge
}}
岁 |
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerSex
}}
|
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerSex
||
'
'
}}
|
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerWorkYears
}}
年 |
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;width:19%;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerExpectTitles
}}
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;float:right;text-align:right;margin-right:10px"
>
<span
style=
"margin-right:30px;margin-top:5px"
v-if=
"item.flowStatus=='INTERVIEW_OK'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
面试合适
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='INTERVIEW_FAIL'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试淘汰
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_RESULT'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试结果待定
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='END'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
终止面试
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='SEE_FAIL'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
约面失败
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='ARRIVED'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已到达
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='NO_ENTRY'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
未入职
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_SEE'"
>
<span
style=
"text-align:center;cursor:pointer"
>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerHighestDegree
||
'
'
}}
<span
v-show=
"item.ownerExpectTitles !==''"
>
|
</span></span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;overflow:hidden;text-overflow:ellipsis;white-space: nowrap;width:25%;cursor:pointer"
@
click=
"Seedetail(item.id)"
>
{{
item
.
ownerExpectTitles
}}
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;float:right;text-align:right;margin-right:10px;width:25%;line-height:100%;margin-top:5px;"
>
<span
style=
"margin-right:30px;margin-top:5px;"
v-if=
"item.flowStatus=='INTERVIEW_OK'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
面试合适
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='INTERVIEW_FAIL'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试淘汰
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_RESULT'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试结果待定
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='END'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
终止面试
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='SEE_FAIL'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
约面失败
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='ARRIVED'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已到达
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='NO_ENTRY'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
未入职
</span></span>
<span
style=
"margin-right:30px;margin-top:5px;"
v-else-if=
"item.flowStatus=='TO_SEE'"
class=
'status'
>
<span
style=
"text-align:left;cursor:pointer"
>
<select
name=
"3"
id=
"3"
@
change=
"selectFn2($event,item.id)"
style=
"height:18px;text-align:center;margin-top:5px"
>
<option
value=
"1"
>
邀请面试
</option>
<option
value=
"2"
>
备选
</option>
...
...
@@ -80,8 +81,8 @@
</select>
</span>
</span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SEE'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已邀约
</span></span>
<span
style=
"margin-right:20px;margin-top:5px
"
v-else-if=
"item.flowStatus=='OPTION'"
>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SEE'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已邀约
</span></span>
<span
style=
"margin-right:20px;margin-top:5px
;"
v-else-if=
"item.flowStatus=='OPTION'"
class=
'status'
>
<span>
<select
name=
"4"
id=
"4"
@
change=
"selectFn3($event,item.id)"
style=
"height:18px;text-align:center;margin-top:5px;cursor:pointer"
>
<option
value=
"1"
>
备选
</option>
...
...
@@ -91,12 +92,12 @@
</select>
</span>
</span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_SENT_OFFER'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SENT_OFFER'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已发Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_ENTRY'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_ENTRY'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px
"
v-else-if=
"item.flowStatus=='PASS'"
>
<span
>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_SENT_OFFER'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_SENT_OFFER'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已发Offer
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='TO_ENTRY'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px"
v-else-if=
"item.flowStatus=='HAS_ENTRY'"
class=
'status'
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已入职
</span></span>
<span
style=
"margin-right:20px;margin-top:5px
;"
v-else-if=
"item.flowStatus=='PASS'"
class=
'status'
>
<span
class=
'status'
>
<select
name=
"2"
id=
"2"
@
change=
"selectFn4($event,item.id)"
style=
"height:18px;text-align:center;margin-top:5px;cursor:pointer"
>
<option
value=
"1"
>
PASS
</option>
<option
value=
"2"
>
邀请面试
</option>
...
...
@@ -105,44 +106,47 @@
</select>
</span>
</span>
<select
name=
"1"
id=
"a"
@
change=
"selectFn1($event,item.id)"
v-else-if=
"item.flowStatus=='TO_DO'"
style=
"height:20px;margin-top:5px;margin-right:20px;text-align:center;cursor:pointer"
>
<select
name=
"1"
id=
"a"
@
change=
"selectFn1($event,item.id)"
v-else-if=
"item.flowStatus=='TO_DO'"
style=
"height:20px;margin-top:5px;margin-right:20px;text-align:center;cursor:pointer"
class=
'status'
>
<option
value=
"1"
>
待处理
</option>
<option
value=
"2"
>
pass
</option>
<option
value=
"3"
>
邀请面试
</option>
<option
value=
"4"
>
备选
</option>
</select>
<span><Icon
type=
"md-download"
@
click=
"downloadONE(item.id)"
style=
"font-size:15px;cursor:pointer;color:#0092FF"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='SEE_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='INTERVIEW_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='NO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='END'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='ARRIVED'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='PASS'"
@
click=
"delateR(item.id)"
style=
";cursor:pointer;color:rgb(242, 93, 87);;font-size:15px;"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='OPTION'"
@
click=
"delateR(item.id)"
style=
"color:rgb(242, 93, 87);;font-size:15px;;cursor:pointer"
/></span>
<span
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_DO'"
@
click=
"delateR(item.id)"
style=
"color:rgb(242, 93, 87);;font-size:15px;;cursor:pointer"
/></span>
<span
@
click=
"RecordSEE(item.id,item.ownerName)"
style=
";cursor:pointer;color:#2d8cf0
"
>
记录
</span>
<span
class=
'record'
><Icon
type=
"md-download"
@
click=
"downloadONE(item.id)"
style=
"font-size:15px;cursor:pointer;color:#0092FF"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SEE'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='SEE_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='INTERVIEW_FAIL'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='NO_ENTRY'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='END'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='HAS_SENT_OFFER'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='ARRIVED'"
@
click=
"undelate"
style=
"color:#b5b5b5;cursor:pointer;font-size:15px"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='PASS'"
@
click=
"delateR(item.id)"
style=
";cursor:pointer;color:rgb(242, 93, 87);;font-size:15px;"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='OPTION'"
@
click=
"delateR(item.id)"
style=
"color:rgb(242, 93, 87);;font-size:15px;;cursor:pointer"
/></span>
<span
class=
'record'
><Icon
type=
"md-trash"
v-if=
"item.flowStatus=='TO_DO'"
@
click=
"delateR(item.id)"
style=
"color:rgb(242, 93, 87);;font-size:15px;;cursor:pointer"
/></span>
<span
@
click=
"RecordSEE(item.id,item.ownerName)"
style=
";cursor:pointer;color:#2d8cf0
;"
class=
'recordtext'
>
记录
</span>
</span>
</p>
<p
style=
"margin-top:0px;color:Grey"
>
<span
style=
"display:inline-block;font-size: 12px;margin-left:25px;margin-top:10px"
v-if=
"item.srcSite!==''"
>
{{
item
.
deliveryTime
}}
投递 |
</span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:25px;margin-top:10px"
v-if=
"item.srcSite==''"
>
{{
item
.
deliveryTime
}}
上传 |
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-left:2px;margin-top:10px"
>
{{
item
.
optSource
}}
<span
v-show=
"item.srcSite!==''"
>
|
</span>
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;margin-top:10px"
>
{{
item
.
srcSite
}}
</span>
<span
style=
"display:inline-block;height:100%;font-size: 12px;width:30%;float:right;text-align:right;margin-right:10px;margin-top:5px"
>
<span
style=
"margin-left:15px;margin-top:5px"
>
{{
item
.
modifyTime
}}
</span>
<p
style=
"margin-top:10px;color:Grey;padding-left:10px;"
class=
'info'
>
<span
style=
"display:inline-block;font-size: 12px;color:orange"
v-show=
"item.hasForward=='1'"
class=
'transmit'
>
已转
</span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:20px;color:Grey"
v-if=
"item.srcSite!==''"
v-show=
"item.hasForward==null"
>
{{
item
.
deliveryTime
}}
投递 |
</span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:20px;color:Grey"
v-if=
"item.srcSite==''"
v-show=
"item.hasForward==null"
>
{{
item
.
deliveryTime
}}
上传
<span
v-show=
"item.optSource!==''"
>
|
</span></span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:-2px;color:Grey"
v-if=
"item.srcSite!==''"
v-show=
"item.hasForward!==null"
>
{{
item
.
deliveryTime
}}
投递 |
</span>
<span
style=
"display:inline-block;font-size: 12px;color:Grey;margin-left:-2px"
v-if=
"item.srcSite==''"
v-show=
"item.hasForward!==null"
>
{{
item
.
deliveryTime
}}
上传
<span
v-show=
"item.optSource!==''"
>
|
</span></span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:3px;color:Grey"
>
{{
item
.
optSource
}}
<span
v-show=
"item.srcSite!==''"
>
|
</span></span>
<span
style=
"display:inline-block;font-size: 12px;margin-left:3px;color:Grey"
>
{{
item
.
srcSite
}}
</span>
<span
style=
"display:inline-block;font-size: 12px;float:right;text-align:right;margin-right:10px;color:Grey;"
>
<span>
{{
item
.
modifyTime
}}
</span>
<span>
最后操作人:
{{
item
.
d
}}
</span>
</span>
</p>
</div>
</div>
</div>
<div
class=
"pageBottom"
style=
"width:
56.6%;background:rgba(241,241,241,1);text-align:center;position:fixed
;bottom:0;height:45px"
>
<div
class=
"pageBottom"
style=
"width:
100%;background:rgba(241,241,241,1);text-align:center;position:absolute
;bottom:0;height:45px"
>
<Page
:total=
"totalSize"
show-elevator
show-total
@
on-change=
"pageChange"
@
on-page-size-change=
"pageSizeChange"
:current=
'pageIndex'
:page-size=
'pageSize'
style=
"text-align:center;margin-top:4px"
></Page>
</div>
</div>
...
...
@@ -289,50 +293,52 @@
v-model=
"emailMOdal"
width=
'1000px'
:mask-closable=
'false'
:closable=
'false'
>
:closable=
'false'
:styles=
'
{top: "50px"}'>
<div
>
<h2
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==false"
>
发送邮件
</h2>
<h2
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==true"
>
新建面试
</h2>
<h3
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==true"
>
<span>
更改为
<span
style=
"color:blue"
>
“新建面试”
</span>
后,你需要从
<span
style=
"color:blue"
>
”面试管理“
</span>
中对该候选人进行后续的操作。
</span></h3>
<h3
style=
"text-align:center;color:black"
v-show=
"this.isShowAll==true"
>
<span>
新建面试后,你需要从
<span
style=
"color:#0092ff"
>
“面试管理”
</span>
中对该候选人进行后续的操作。
</span></h3>
</div>
<div
class=
"emailModal-title"
>
<div
class=
"emailModalTitle-left"
>
<p>
<Form
:label-width=
"70"
:model=
"emailInline"
label-position=
"left"
style=
"margin-left:5%"
ref=
"emailInline"
:rules=
"ruleInline"
class=
"emailForm"
>
<Form
:label-width=
"70"
:model=
"emailInline"
label-position=
"left"
style=
"margin-left:5%"
ref=
"emailInline"
:rules=
"
email
ruleInline"
class=
"emailForm"
>
<FormItem
label=
"选择模板"
style=
"margin-top:20px"
prop=
'moo'
>
<Select
style=
"width:95%"
@
on-change=
'getEmailContentValue'
v-model=
"emailInline.moo"
>
<Option
v-for=
"(item,index) in emailInline.modalArr"
:key=
"index"
:value=
"item.templateCode"
>
{{
item
.
templateName
}}
</Option>
</Select><br>
<!--
<span
v-show=
"emailMassage==true"
>
你尚未选择简历,请先选择简历
</span>
-->
</FormItem>
<FormItem
label=
"收件人"
style=
"margin-top:20px"
:show-massage=
'false
'
>
<Input
style=
"width:95%"
v-model=
"emailInline.receiveEmail"
@
on-blur=
'receiveEmail
'
/>
<span
style=
"position: absolute;left:0;top:30px;color:gray
"
>
输入多个邮箱地址以英文”;“分隔
</span>
<FormItem
label=
"收件人"
style=
"margin-top:20px"
prop=
'receiveEmail
'
>
<Input
style=
"width:95%"
v-model=
"emailInline.receiveEmail"
@
on-focus=
'getfocus("emailInline","receiveEmail")
'
/>
<span
style=
"position: absolute;left:0;top:30px;color:gray
;font-size:12px;"
v-show=
'!tip'
>
{{
tipInfo
}}
</span>
</FormItem>
<FormItem
label=
"抄送"
style=
"margin-top:20px"
>
<Input
style=
"width:95%"
v-model=
"emailInline.copyname"
@
on-
blur=
'copyname
'
/>
<FormItem
label=
"抄送"
style=
"margin-top:20px"
prop=
'copyname'
>
<Input
style=
"width:95%"
v-model=
"emailInline.copyname"
@
on-
focus=
'getfocus("emailInline","copyname")
'
/>
</FormItem>
<FormItem
label=
"主题"
style=
"margin-top:20px"
>
<Input
style=
"width:95%"
v-model=
"emailInline.theme"
@
on-
blur=
'theme
'
/>
<FormItem
label=
"主题"
style=
"margin-top:20px"
prop=
'theme'
>
<Input
style=
"width:95%"
v-model=
"emailInline.theme"
@
on-
focus=
'getfocus("emailInline","theme")
'
/>
</FormItem>
</Form>
</p>
</div>
<div
class=
"emailModalTitle-right"
v-show=
"interviewIsShow==true"
>
<h3
style=
"text-align:center;margin-top:20px"
>
请输入约面信息
</h3>
<Form
:label-width=
"
75"
ref=
"formInline"
:rules=
"ruleInline"
:model=
"formInline"
style=
"margin-top:35px"
label-position=
"left
"
>
<Form
:label-width=
"
85"
ref=
"formInline"
:rules=
"ruleInline"
:model=
"formInline"
style=
"margin-top:35px"
label-position=
"left"
class=
"emailForm
"
>
<FormItem
label=
"邀约人"
style=
"margin-top:20px"
prop=
"UpdateOWER"
>
<Input
v-model=
"formInline.UpdateOWER"
style=
"width:100%"
:maxlength=
"5"
@
on-
blur=
'UpdateOWER
'
/>
<Input
v-model=
"formInline.UpdateOWER"
style=
"width:100%"
:maxlength=
"5"
@
on-
focus=
'getfocus("formInline", "UpdateOWER")
'
/>
</FormItem>
<FormItem
label=
"面试时间"
style=
"margin-top:20px"
prop=
"UpdateTIME"
>
<DatePicker
type=
"datetime"
style=
"width:100%"
v-model=
"formInline.UpdateTIME"
format=
"yyyy-MM-dd HH:mm"
@
on-change=
"changeTime"
:options=
"options3"
:editable=
'false'
@
on-
blur=
'UpdateTIME
'
></DatePicker>
<DatePicker
type=
"datetime"
style=
"width:100%"
v-model=
"formInline.UpdateTIME"
format=
"yyyy-MM-dd HH:mm"
@
on-change=
"changeTime"
:options=
"options3"
:editable=
'false'
@
on-
open-change=
'getfocus("formInline", "UpdateTIME", $event)
'
></DatePicker>
</FormItem>
<FormItem
label=
"面试官"
style=
"margin-top:20px"
prop=
'UpdateVIEW'
>
<Input
v-model=
"formInline.UpdateVIEW"
style=
"width:100%"
:maxlength=
"5"
@
on-blur=
'UpdateVIEW'
/>
<Select
v-model =
'formInline.UpdateVIEW'
filterable
style=
'width:100%;'
remote
:remote-method=
"remoteMethod"
:loading=
"loading1"
placeholder=
'请输入面试官全名'
clearable
@
on-open-change=
'getfocus("formInline", "UpdateVIEW", $event)'
ref=
'selList'
>
<Option
v-for=
'(item, index) in options'
:key=
'index'
:value=
'item.name'
>
{{
item
.
name
}}
(
{{
item
.
email
}}
)
</Option>
</Select>
</FormItem>
<FormItem
label=
""
prop=
'sendWeixin'
>
<Checkbox
v-model=
"formInline.sendWeixin"
><span
style=
"margin-left:10px"
>
微信通知面试官
</span></Checkbox>
</FormItem>
</Form>
</div>
</div>
...
...
@@ -356,10 +362,11 @@
<span><Icon
type=
"md-close"
@
click=
"delateFile(index)"
style=
"font-size:16px;float:right;margin-right:80px"
/></span>
</p>
</div>
<div
slot=
'footer'
style=
"text-align:center"
class=
"Ubt"
>
<div
slot=
'footer'
style=
"text-align:center
;position: relative;
"
class=
"Ubt"
>
<Button
type=
'primary'
@
click=
'emailModalPush'
>
取消
</Button>
<Button
type=
'primary'
@
click=
'modal10=true'
v-show=
"this.isShowAll==false"
:disabled=
"!isDisable"
>
发送
</Button>
<Button
type=
'primary'
@
click=
'modal10=true'
v-show=
"this.isShowAll==true"
:disabled=
"!isDisable"
>
添加并发送
</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>
</div>
</Modal>
<Modal
...
...
@@ -408,51 +415,57 @@
<Button
type=
'primary'
@
click=
'modal8=false'
>
取消
</Button>
<Button
type=
'primary'
@
click=
"sendNotice"
>
发送
</Button>
</div>
</Modal>
<!-- 发送失败再次发送 -->
<Modal
v-model=
"modal11"
width=
'350px'
:closable=
'false'
>
<div
>
<h2
style=
"text-align: center;color:black"
>
提示
</h2>
<p
style=
"text-align:center;margin-top:10px;font-size: 14px;text-align:left;"
>
{{
errorInfo
}}
</p>
</div>
<div
slot=
'footer'
style=
"text-align:center"
>
<Button
type=
'primary'
@
click=
'cancelSubmit'
>
取消
</Button>
<Button
type=
'primary'
@
click=
"modal11=false"
>
确定
</Button>
</div>
</Modal>
</div>
</
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
{
Serchinterviewor
}
from
'
../../api/interview.server.js
'
import
{
sapi
}
from
'
../../config
'
import
{
_debounce
,
_throttle
}
from
'
../../service/util.js
'
import
{
_debounce
,
_throttle
,
emailValidata
,
emailRule
,
vidte
,
validator
}
from
'
../../service/util.js
'
import
ckeditor
from
'
../../components/ckeditor
'
import
{
mapState
}
from
'
vuex
'
import
localStorage
from
'
../../service/localstorage.service
'
export
default
{
data
(){
const
validator
=
(
rule
,
value
,
callback
)
=>
{
if
(
!
value
)
this
.
$Notice
.
warning
({
title
:
'
提示
'
,
desc
:
'
请输入您要通知的面试官
'
})
callback
()
}
const
vidte
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
emailMassage
==
true
){
callback
(
new
Error
(
'
你尚未选择简历,请先选择简历
'
))
}
else
if
(
this
.
allEmailVilitor
==
true
){
callback
(
new
Error
(
'
不能选择多份简历,请选择单份简历
'
))
}
else
{
callback
()
}
}
return
{
modal11
:
false
,
interviewee
:
[],
tip
:
false
,
tipInfo
:
'
输入多个邮箱地址以英文”;“分隔
'
,
errorInfo
:
''
,
ruleInline
:
{
UpdateOWER
:
[
{
required
:
true
,
message
:
'
邀约人不能为空
'
,
trigger
:
'
blur
'
}
],
UpdateTIME
:
[
{
required
:
true
,
message
:
'
面试时间不能为空
'
,
trigger
:
'
date
'
}
],
UpdateVIEW
:
[
{
required
:
true
,
message
:
'
面试官不能为空
'
,
trigger
:
'
blur
'
}
],
moo
:[
{
required
:
false
,
validator
:
vidte
,
trigger
:
'
change
'
},
],
UpdateOWER
:
[
{
required
:
true
,
message
:
'
邀约人不能为空
'
,
trigger
:
'
blur
'
,
validator
:
emailValidata
.
bind
(
this
)}
],
UpdateTIME
:
[
{
required
:
true
,
message
:
'
面试时间不能为空
'
,
trigger
:
'
change
'
,
type
:
'
date
'
,
validator
:
emailValidata
.
bind
(
this
)}
],
UpdateVIEW
:
[
{
required
:
true
,
message
:
'
面试官不能为空
'
,
trigger
:
'
change
'
,
validator
:
emailValidata
.
bind
(
this
)}
]
},
emailruleInline
:
{
receiveEmail
:
[{
required
:
true
,
trigger
:
'
blur
'
,
pattern
:
emailRule
,
validator
:
emailValidata
.
bind
(
this
)}],
theme
:
[{
required
:
true
,
trigger
:
'
blur
'
,
message
:
'
主题不能为空
'
,
validator
:
emailValidata
.
bind
(
this
)}],
copyname
:
[{
required
:
false
,
trigger
:
'
blur
'
,
pattern
:
emailRule
,
validator
:
emailValidata
.
bind
(
this
),
empty
:
true
}]
},
formInline
:{
UpdateOWER
:
''
,
...
...
@@ -474,7 +487,7 @@ export default {
interviewerName
:
''
},
transpondRule
:
{
interviewerName
:
[{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validator
}]
interviewerName
:
[{
required
:
true
,
trigger
:
'
blur
'
,
validator
:
validator
.
bind
(
this
)
}]
},
interviewerList
:
[{
name
:
'
test
'
,
value
:
'
1
'
}],
loading1
:
false
,
...
...
@@ -600,9 +613,6 @@ export default {
},
//全选与反选
checkedAll
:
function
()
{
// if(this.ajaxData.length==0){
// this.checkboxList=[]
// }
if
(
this
.
checked
)
{
//实现反选
this
.
checkboxList
=
[];
this
.
ajaxData
.
forEach
(
(
item
)
=>
{
...
...
@@ -632,6 +642,7 @@ export default {
selectFn1
(
e
,
SID
,
itemsta
)
{
this
.
toseeid
=
SID
this
.
emailId
=
SID
this
.
emailIdArr
=
[]
this
.
emailIdArr
.
push
(
SID
)
this
.
isShowTwo
=
true
this
.
ITEMSTA
=
itemsta
...
...
@@ -643,6 +654,7 @@ export default {
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
2
){
...
...
@@ -701,6 +713,7 @@ export default {
this
.
beforeBtu
=
true
this
.
modal2
=
false
this
.
emailMOdal
=
true
this
.
sendEmail
()
},
selectFn2
(
e
,
SID
,
itemsta
)
{
this
.
ITEMSTA
=
itemsta
...
...
@@ -714,6 +727,7 @@ export default {
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
3
){
...
...
@@ -763,6 +777,7 @@ export default {
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
3
){
...
...
@@ -812,6 +827,7 @@ export default {
this
.
emailMOdal
=
true
this
.
emailFlowStatus
=
'
TO_SEE
'
this
.
isShowTwo
=
true
this
.
sendEmail
()
}
// 简历PASS
if
(
e
.
target
.
value
==
1
){
...
...
@@ -849,8 +865,26 @@ export default {
})
}
},
changeTime
(
b
){
this
.
UpdateTIME
=
b
changeTime
(
b
){
this
.
UpdateTIME
=
b
if
(
!
b
){
this
.
editorObject
=
{
type
:
this
.
temp
,
value
:
this
.
emailInline
.
templateContent
}
return
}
var
reg
=
/<span id="email_seeTime"><span>/g
var
time
=
b
.
split
(
'
-
'
)
var
year
=
time
[
0
]
var
mon
=
time
[
1
]
var
day
=
time
[
2
].
split
(
'
'
)[
0
]
var
time
=
time
[
2
].
split
(
'
'
)[
1
]
var
content
=
`<span id="email_seeTime">
${
year
}
年
${
mon
}
月
${
day
}
日
${
time
}
<span>`
this
.
editorObject
=
{
type
:
this
.
temp
,
value
:
this
.
emailInline
.
templateContent
.
replace
(
reg
,
content
)
}
},
// 查看简历详情
Seedetail
(
Tid
){
...
...
@@ -915,6 +949,7 @@ export default {
// 选择input元素
selectInputElement
(
index
,
doID
,
doStatus
,
sss
,
item
){
sss
=!
sss
this
.
emailIdArr
=
[]
this
.
emailId
=
doID
this
.
ajaxData
[
index
].
STATES
=
sss
Array
.
prototype
.
indexOf
=
function
(
val
)
{
...
...
@@ -1152,7 +1187,7 @@ export default {
})
},
//搜索
SouSuo
(
page
){
SouSuo
(
page
,
status
){
page
=
typeof
(
page
)
==
'
number
'
?
page
:
1
this
.
searchInfo
.
pageIndex
=
page
this
.
pageIndex
=
page
...
...
@@ -1179,7 +1214,7 @@ export default {
});
return
}
sousuoList
(
parmars
).
then
(
res
=>
{
sousuoList
(
parmars
,
status
).
then
(
res
=>
{
let
Ishow
=
res
.
data
.
items
if
(
res
.
data
.
success
==
true
){
this
.
checkboxList
=
[]
...
...
@@ -1235,14 +1270,35 @@ export default {
this
.
ajaxData
[
index
].
isShow
=
false
},
// 发送邮件
sendEmail
(){
sendEmail
(
type
){
if
(
this
.
checkboxList
.
length
==
0
&&
type
)
{
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
你尚未选择简历,请先选择简历
'
})
return
}
if
(
this
.
checkboxList
.
length
>
1
&&
type
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
不能选择多份简历,请选择单份简历
'
})
return
}
this
.
emailInline
.
modalArr
=
[]
this
.
$refs
.
emailInline
.
resetFields
()
this
.
$refs
.
formInline
.
resetFields
()
this
.
emailMOdal
=
true
getEmailMoo
().
then
(
res
=>
{
this
.
emailInline
.
modalArr
=
res
.
data
.
body
})
this
.
emailInline
.
moo
=
'
TEMP_0001
'
this
.
getEmailContentValue
(
this
.
emailInline
.
moo
)
},
getEmailContentValue
(
value
){
if
(
!
value
){
return
}
this
.
isDisable
=
true
this
.
temp
=
value
if
(
this
.
isShowTwo
==
true
){
...
...
@@ -1298,9 +1354,10 @@ export default {
value
:
this
.
emailInline
.
templateContent
||
''
}
if
(
res
.
data
.
body
&&
res
.
data
.
body
.
resumeInterviewVO
){
this
.
formInline
.
UpdateOWER
=
res
.
data
.
body
.
resumeInterviewVO
.
in
terview
erName
this
.
formInline
.
UpdateVIEW
=
res
.
data
.
body
.
resumeInterviewVO
.
in
vit
erName
this
.
formInline
.
UpdateOWER
=
res
.
data
.
body
.
resumeInterviewVO
.
in
vit
erName
this
.
formInline
.
UpdateVIEW
=
res
.
data
.
body
.
resumeInterviewVO
.
in
terview
erName
this
.
formInline
.
UpdateTIME
=
res
.
data
.
body
.
resumeInterviewVO
.
seeTime
this
.
changeTime
(
this
.
formInline
.
UpdateTIME
)
}
else
{
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
...
...
@@ -1352,7 +1409,7 @@ export default {
this
.
isShowTwo
=
false
this
.
isLimitSize
=
false
this
.
uploadFileList
=
[]
this
.
SouSuo
(
this
.
pageT
)
this
.
clearInterviewee
(
)
},
getEditorValue
(){
// 调编辑器组件方法获取数据
return
this
.
$refs
.
editor
.
getValue
()
...
...
@@ -1364,14 +1421,14 @@ export default {
},
// 确认发送邮件
confireSendEmail
(){
this
.
sad
=
this
.
getEditorValue
()
this
.
sad
=
this
.
getEditorValue
()
if
(
this
.
sad
==
''
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
请填写完整的信息
'
});
return
}
title
:
'
提示
'
,
desc
:
'
请填写完整的信息
'
});
return
}
if
(
this
.
emailInline
.
moo
==
''
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
...
...
@@ -1443,17 +1500,20 @@ export default {
formData
.
append
(
'
resumeInterviewVO.resumeId
'
,
this
.
emailId
)
formData
.
append
(
'
resumeInterviewVO.inviterName
'
,
this
.
formInline
.
UpdateOWER
==
''
?
''
:
this
.
formInline
.
UpdateOWER
)
formData
.
append
(
'
resumeInterviewVO.interviewerName
'
,
this
.
formInline
.
UpdateVIEW
==
''
?
''
:
this
.
formInline
.
UpdateVIEW
)
let
info
=
this
.
options
.
find
(
item
=>
item
.
name
==
this
.
formInline
.
UpdateVIEW
)
formData
.
append
(
'
resumeInterviewVO.email
'
,(
info
&&
info
.
email
)
||
''
)
formData
.
append
(
'
sendWeixin
'
,
this
.
formInline
.
sendWeixin
==
true
?
1
:
0
)
formData
.
append
(
'
resumeInterviewVO.seeTime
'
,
moment
(
this
.
UpdateTIMETwo
).
format
(
'
YYYY/MM/DD HH:mm
'
))
formData
.
append
(
'
flowStatus
'
,
this
.
flowStatusTT
)
this
.
isDisable
=
false
sendEmail
(
formData
).
then
(
res
=>
{
this
.
isDisable
=
true
if
(
res
.
data
.
success
==
true
){
this
.
$Notice
.
success
({
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送邮件成功
'
});
})
},
500
)
this
.
emailMOdal
=
false
this
.
modal10
=
false
this
.
emailInline
.
modalArr
=
[]
...
...
@@ -1478,33 +1538,9 @@ export default {
this
.
SouSuo
(
this
.
pageT
)
}
if
(
res
.
data
.
success
==
false
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
发送邮件失败
'
});
this
.
emailMOdal
=
false
this
.
modal10
=
false
// this.isDisable=true
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
this
.
emailInline
.
templateContent
=
''
this
.
sad
=
''
this
.
fileList
=
[]
this
.
emailInline
.
moo
=
''
this
.
emailMOdal
=
false
this
.
emailMassage
=
false
this
.
emailIdArr
=
[]
this
.
emailFlowStatus
=
''
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
this
.
formInline
.
UpdateTIME
=
''
this
.
formInline
.
sendWeixin
=
true
this
.
emailInline
.
copyname
=
''
this
.
isShowTwo
=
false
this
.
uploadFileList
=
[]
this
.
clearInterviewee
()
this
.
SouSuo
(
this
.
pageT
)
this
.
modal10
=
false
this
.
modal11
=
true
this
.
errorInfo
=
res
.
data
.
body
.
message
}
})
}
else
{
...
...
@@ -1527,13 +1563,14 @@ export default {
sendEmail
(
formData
).
then
(
res
=>
{
this
.
isDisable
=
true
if
(
res
.
data
.
success
==
true
){
this
.
$Notice
.
success
({
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送邮件成功
'
})
})
},
500
)
this
.
emailMOdal
=
false
this
.
modal10
=
false
// this.isDisable=true
this
.
modal10
=
false
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
...
...
@@ -1557,34 +1594,9 @@ export default {
this
.
SouSuo
(
this
.
pageT
)
}
if
(
res
.
data
.
success
==
false
){
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
发送邮件失败
'
});
this
.
emailMOdal
=
false
this
.
modal10
=
false
// this.isDisable=true
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
this
.
emailInline
.
templateContent
=
''
this
.
sad
=
''
this
.
fileList
=
[]
this
.
emailInline
.
moo
=
''
this
.
emailMOdal
=
false
this
.
emailMassage
=
false
this
.
emailIdArr
=
[]
this
.
emailFlowStatus
=
''
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
this
.
formInline
.
UpdateTIME
=
''
this
.
formInline
.
sendWeixin
=
true
this
.
emailInline
.
copyname
=
''
this
.
isShowTwo
=
false
this
.
isLimitSize
=
false
this
.
uploadFileList
=
[]
this
.
clearInterviewee
()
this
.
SouSuo
(
this
.
pageT
)
this
.
modal10
=
false
this
.
modal11
=
true
this
.
errorInfo
=
res
.
data
.
body
.
message
}
})
}
...
...
@@ -1648,9 +1660,6 @@ export default {
this
.
isDisable
=
true
}
},
getEditorValue
(
value
){
console
.
log
(
value
,
3333333333
)
},
delateFile
(
index
){
this
.
fileList
.
splice
(
index
,
1
)
},
...
...
@@ -1686,28 +1695,32 @@ export default {
if
(
res
.
data
.
success
==
true
)
{
this
.
clearInterviewee
()
this
.
modal8
=
false
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送成功
'
})
},
500
)
}
else
{
setTimeout
(()
=>
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
发送成功
'
});
}
else
{
this
.
$Notice
.
error
({
title
:
'
提示
'
,
desc
:
'
发送失败
'
});
desc
:
'
发送失败
'
})
},
500
)
this
.
clearInterviewee
()
this
.
modal8
=
false
}
})
})
},
remoteMethod
:
_debounce
(
function
(
query
){
this
.
options
=
[]
remoteMethod
:
function
(
query
){
if
(
query
!==
''
)
{
this
.
loading1
=
true
;
setTimeout
(()
=>
{
this
.
loading1
=
false
;
let
list
=
[]
query
=
query
.
split
(
'
(
'
)[
0
]
findCompanyEmailByKey
(
query
).
then
(
res
=>
{
list
=
res
this
.
options
=
list
.
data
.
body
...
...
@@ -1716,7 +1729,7 @@ export default {
}
else
{
this
.
options
=
[];
}
},
500
),
},
removeInterviewee
(
value
)
{
this
.
interviewee
.
map
((
item
,
index
)
=>
{
if
(
value
&&
item
.
id
==
value
.
id
)
{
...
...
@@ -1744,10 +1757,103 @@ export default {
this
.
ajaxData
.
map
(
item
=>
{
item
.
STATES
=
false
})
},
getfocus
(
form
,
name
,
e
){
let
vm
=
this
;
let
value
=
this
[
form
][
name
]
if
(
name
==
'
receiveEmail
'
)
{
this
.
tip
&&
this
.
$refs
[
form
].
fields
.
forEach
(
function
(
e
)
{
if
(
e
.
prop
==
name
)
{
e
.
resetField
()
vm
[
form
][
name
]
=
value
vm
.
tip
=
false
}
})
}
else
{
if
(
name
==
'
UpdateTIME
'
&&
e
==
false
){
// 时间选择器关闭弹框的时候
this
.
$refs
.
formInline
.
validateField
(
'
UpdateTIME
'
,
(
e
)
=>
{})
return
}
if
(
name
==
'
UpdateVIEW
'
&&
e
==
false
){
// 选择关闭弹框的时候
this
.
$refs
.
formInline
.
validateField
(
'
UpdateVIEW
'
,
(
e
)
=>
{})
return
}
this
.
$refs
[
form
].
fields
.
forEach
(
function
(
e
)
{
if
(
e
.
prop
==
name
)
{
e
.
resetField
()
vm
[
form
][
name
]
=
value
}
})
}
},
submit
()
{
let
flag
=
false
this
.
$refs
.
emailInline
.
validate
(
val
=>
{
if
(
!
val
)
{
flag
=
true
return
}
})
this
.
$refs
.
formInline
.
validate
(
val
=>
{
if
(
!
val
)
{
flag
=
true
return
}
})
if
(
!
flag
){
this
.
modal10
=
true
}
},
cancelSubmit
(){
this
.
modal11
=
false
this
.
emailMOdal
=
false
this
.
emailInline
.
modalArr
=
[]
this
.
emailInline
.
theme
=
''
this
.
emailInline
.
receiveEmail
=
''
this
.
emailInline
.
templateContent
=
''
this
.
sad
=
''
this
.
fileList
=
[]
this
.
emailInline
.
moo
=
''
this
.
emailMOdal
=
false
this
.
emailMassage
=
false
this
.
emailIdArr
=
[]
this
.
emailFlowStatus
=
''
this
.
formInline
.
UpdateOWER
=
''
this
.
formInline
.
UpdateVIEW
=
''
this
.
formInline
.
UpdateTIME
=
''
this
.
formInline
.
sendWeixin
=
true
this
.
emailInline
.
copyname
=
''
this
.
isShowTwo
=
false
this
.
isLimitSize
=
false
this
.
uploadFileList
=
[]
this
.
clearInterviewee
()
}
},
watch
:
{
'
$route
'
(
to
,
from
)
{
this
.
searchInfo
=
{
pageSize
:
30
,
pageIndex
:
1
,
id
:
''
,
SEX
:
''
,
Edu
:
''
,
ccc
:
''
,
itemSelect
:
''
,
STA
:[],
status
:
""
,
ownerWorkYears1
:
''
,
ownerWorkYears2
:
''
,
}
this
.
activeClass
=
0
this
.
clickIndex1
=
0
this
.
clickIndex2
=
0
this
.
lickIndex3
=
0
this
.
keywords
=
''
this
.
lrgs
=
''
this
.
state
.
map
(
item
=>
{
item
.
sta
=
item
.
status3
==
'
不限
'
?
true
:
false
})
let
parmars
=
{
pageSize
:
this
.
searchInfo
.
pageSize
,
pageIndex
:
this
.
searchInfo
.
pageIndex
,
...
...
@@ -1813,11 +1919,11 @@ export default {
}
},
deep
:
true
}
,
}
},
mounted
(){
this
.
SouSuo
()
this
.
SouSuo
(
null
,
'
init
'
)
}
}
</
script
>
...
...
@@ -1826,28 +1932,48 @@ export default {
width: 100%;
height: 100%
}
.wechat{
position: absolute;
right: -5px;
top:30%;
span{
font-size: 13px;
}
}
.bar{
display:flex;
align-items: center;
position: relative;
.left{
position: absolute;
right: 10px;
}
.leftBtn{
right: 90px;
}
}
.channel-left{
height:100%;
width: 29%;
height: 100%;
width: 29.5%;
box-shadow:#dcdee2 0 0 6px 1px;
float: left;
box-shadow: #dcdee2 0 0 6px 1px;
/* border: 1px solid #999999; */
}
.channel-right{
height:
100%;
overflow: hidden;
width:
69
%;
height:
100%;
overflow: hidden;
width:
70.5
%;
float: left;
margin-left: 15px;
background:rgba(255,255,255,1);
position:relative;
}
.resumeRightContentTop{
width: 100%;
height: 90%
height: 100%;
overflow: auto;
}
.Resumecontent{
width: 100%;
margin-bottom:0px;
}
.red{
background: LightGray
...
...
@@ -1856,7 +1982,6 @@ export default {
height:25px;
font-size: 8px;
line-height: 25px;
margin-top:10px
}
.Recode span{
margin-left:20px
...
...
@@ -1874,34 +1999,26 @@ select{
.active3{
color:#2d8cf0;
}
.sex span:first-child{
margin-left: 0px
}
.sex span:not(:first-child){
margin-left: 30px
.sex span{
margin-right: 20px;
}
.Education{
width: 100%;
}
.Education span{
width: 87px;
display:inline-block;
}
.Education span:nth-child(1){
width: 45px;
margin-right: 20px;
display:inline-block;
}
.state{
width: 100%;
/* border:1px solid red */
margin-right: 20px;
}
.state span{
width: 60px;
/* border:1px solid black; */
margin-right: 20px;
display: inline-block;
}
.state span:nth-child(1){
width: 45
px;
margin-right: 20
px;
display:inline-block;
}
.text1{
...
...
@@ -1913,7 +2030,6 @@ select{
.text2{
width: 80%;
height: 60px;
background:rgb(253,85,83);
margin: 30px 0 0 30px
}
.text3{
...
...
@@ -1924,11 +2040,7 @@ select{
}
.detailResume{
width:100%;
/* border: 1px solid black; */
height:60px
}
.a div:nth-child(2n){
background:rgba(241,241,241,1);
height:60px;
}
.emailModal-title{
height: 280px;
...
...
@@ -1966,14 +2078,14 @@ select{
}
.badge{
position: absolute;
top: -
32
%;
right: -1
5
px;
top: -
50
%;
right: -1
8
px;
}
.badges {
right: -30px;
}
.badges1 {
right: -2
1
px;
right: -2
5
px;
}
.interviewee{
float:left;
...
...
@@ -2006,5 +2118,19 @@ select{
margin-bottom: 10px;
}
}
</
style
>
.grey{
background:rgba(241,241,241,1);
}
</
style
>
<
style
>
.emailForm
.ivu-form-item-label
{
font-size
:
14px
}
.ivu-form-item-content
{
font-size
:
14px
;
}
.ivu-form-item-error-tip
{
font-size
:
12px
;
}
</
style
>
src/page/resume/resumeDetail.vue
View file @
95e44856
...
...
@@ -124,6 +124,7 @@
</
template
>
<
script
>
import
{
seedetail
}
from
'
../../api/resume.server
'
import
localStorage
from
'
../../service/localstorage.service.js
'
import
{
sapi
}
from
'
../../config
'
...
...
@@ -144,9 +145,10 @@ export default {
getDETAIL
(){
this
.
detialID
=
this
.
$route
.
query
.
id
this
.
showBtn
=
this
.
$route
.
query
.
noShowBtn
console
.
log
(
this
.
showBtn
,
555555
)
let
token
=
this
.
$route
.
query
.
token
||
''
let
parmars
=
{
resumeId
:
this
.
$route
.
query
.
id
resumeId
:
this
.
$route
.
query
.
id
,
token
}
seedetail
(
parmars
).
then
(
res
=>
{
this
.
resume
=
res
.
data
.
body
.
resume
...
...
@@ -166,14 +168,13 @@ export default {
},
mounted
(){
this
.
getDETAIL
()
console
.
log
(
this
.
$route
.
query
.
noShowBtn
,
8888
)
}
}
</
script
>
<
style
scoped
>
.resumeDetail
{
width
:
860px
;
margin
:
30px
auto
margin
:
30px
auto
;
}
.personalInformation
{
width
:
860px
;
...
...
src/page/sweepCode/sweepCode.vue
View file @
95e44856
...
...
@@ -38,7 +38,7 @@
</Form>
</div>
<div
class=
"submission"
>
<Button
type=
'primary'
@
click=
"confirmSubmission"
>
提交
</Button>
<Button
type=
'primary'
@
click=
"confirmSubmission"
:loading=
"loading"
>
提交
</Button>
</div>
<Modal
v-model=
"modal3"
...
...
@@ -73,6 +73,7 @@ export default {
return
{
docmHeight
:
'
0
'
,
showHeight
:
'
0
'
,
loading
:
false
,
hidshow
:
true
,
isResize
:
false
,
modal3
:
false
,
...
...
@@ -193,8 +194,10 @@ export default {
mobile
:
this
.
formInline
.
phoneNUmber
,
takeResume
:
this
.
formInline
.
model2
}
this
.
loading
=
true
submitMassage
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
){
this
.
loading
=
false
this
.
formInline
.
model1
=
''
this
.
formInline
.
model2
=
''
this
.
formInline
.
Inviter
=
''
...
...
src/page/upload/upload.vue
View file @
95e44856
...
...
@@ -320,6 +320,7 @@ import {uploadFile} from '../../service/ajax'
return
}
this
.
uploadModal
=
true
this
.
filetile
=
'
上传中请稍后...
'
uploadFile
({
headers
:
this
.
headers
,
data
:
this
.
dataList
,
...
...
@@ -334,9 +335,10 @@ import {uploadFile} from '../../service/ajax'
},
200
)
},
onSuccess
:
res
=>
{
this
.
handleSuccess
(
res
,
this
.
files
);
this
.
activeT
=
true
this
.
filetile
=
'
上传完成
'
setTimeout
(()
=>
{
this
.
handleSuccess
(
res
,
this
.
files
);
this
.
activeT
=
true
},
1000
)
},
onError
:
(
err
,
response
)
=>
{
this
.
handleError
(
err
,
response
,
this
.
files
);
...
...
@@ -345,11 +347,12 @@ import {uploadFile} from '../../service/ajax'
},
handleProgress
(
e
)
{
this
.
dataList
.
map
(
item
=>
{
item
.
percentage
=
e
.
percent
item
.
percentage
=
e
.
percent
-
5
})
},
handleSuccess
(
res
,
files
)
{
let
data
=
res
.
body
this
.
filetile
=
'
上传完成
'
for
(
let
key
in
data
){
let
code
=
data
[
key
].
code
this
.
Code
=
data
[
key
].
code
...
...
@@ -360,7 +363,7 @@ import {uploadFile} from '../../service/ajax'
if
(
item
.
Code
==
2
){
progressStatus
=
{
'
2
'
:
'
wrong
'
}}
item
.
status
=
this
.
progressStatus
[
code
]
item
.
Code
=
this
.
Code
console
.
log
(
this
.
progressStatus
[
code
])
item
.
percentage
=
100
}
})
}
...
...
@@ -387,6 +390,7 @@ import {uploadFile} from '../../service/ajax'
this
.
dataList
=
[]
this
.
fileName
=
''
this
.
activeT
=
false
this
.
filetile
=
'
上传中请稍后...
'
this
.
serchlist
()
},
//下载单条简历
...
...
src/service/http.service.js
View file @
95e44856
...
...
@@ -11,11 +11,40 @@ instance.defaults.withCredentials = true;
instance
.
defaults
.
headers
.
post
[
'
Content-Type
'
]
=
'
application/x-www-form-urlencoded
'
;
instance
.
defaults
.
headers
[
'
X-Requested-With
'
]
=
'
XMLHttpRequest
'
let
needLoadingRequestCount
=
0
function
startLoading
()
{
store
.
state
.
loading
=
true
}
function
endLoading
()
{
store
.
state
.
loading
=
false
}
function
showFullScreenLoading
()
{
if
(
needLoadingRequestCount
===
0
)
{
startLoading
()
}
needLoadingRequestCount
++
}
function
tryHideFullScreenLoading
()
{
if
(
needLoadingRequestCount
<=
0
)
return
needLoadingRequestCount
--
if
(
needLoadingRequestCount
===
0
)
{
setTimeout
(()
=>
{
endLoading
()
},
200
)
}
}
let
needLoading
=
[
'
resume/findListByQueryVO
'
,
'
sendMail/sendEmailTemplate
'
,
'
resume/forwardResume
'
,
'
interview/findListByQueryVO
'
]
instance
.
interceptors
.
request
.
use
(
function
(
config
)
{
// 在发送请求之前做些什么
if
(
!
config
.
headers
[
'
Content-Type
'
])
{
config
.
headers
[
'
Content-Type
'
]
=
'
application/x-www-form-urlencoded
'
}
let
url
=
config
.
url
.
split
(
'
api/
'
)[
1
]
let
headers
=
config
.
headers
if
(
headers
.
status
!=
'
init
'
&&
needLoading
.
includes
(
url
)){
showFullScreenLoading
()
}
delete
headers
.
status
return
config
;
},
function
(
error
)
{
// 对请求错误做些什么
...
...
@@ -28,6 +57,7 @@ instance.interceptors.response.use(function (response) {
'
901
'
:
''
,
'
902
'
:
'
cookie已失效,请重新登录
'
}
tryHideFullScreenLoading
()
if
(
response
.
status
>=
200
&&
response
.
status
<
300
){
let
code
=
response
.
data
&&
response
.
data
.
body
&&
response
.
data
.
body
.
code
||
''
if
(
code
==
'
900
'
||
code
==
'
901
'
||
code
==
'
902
'
){
...
...
@@ -43,7 +73,7 @@ instance.interceptors.response.use(function (response) {
store
.
dispatch
(
'
cookieTipsHide
'
,
false
)
},
2000
)
}
//
router.replace({name: 'login'})
router
.
replace
({
name
:
'
login
'
})
}
if
(
response
.
data
.
success
){
return
Promise
.
resolve
(
response
)
...
...
src/service/util.js
View file @
95e44856
...
...
@@ -36,4 +36,91 @@ export function _throttle (fn, interval) {
fn
.
apply
(
self
,
args
)
}
}
}
\ No newline at end of file
}
export
function
emailValidata
(
rule
,
value
,
callback
){
let
field
=
rule
.
field
let
reg
=
rule
.
pattern
switch
(
field
){
case
'
receiveEmail
'
:
if
(
!
value
)
{
this
.
tip
=
true
this
.
isDisable
=
false
callback
(
new
Error
(
'
收件人不能为空
'
))
}
else
if
(
rule
.
pattern
&&!
rule
.
pattern
.
test
(
value
))
{
this
.
tip
=
true
this
.
isDisable
=
false
callback
(
new
Error
(
'
请输入正确收件人地址
'
))
}
else
{
this
.
tip
=
false
this
.
isDisable
=
true
callback
()
}
break
;
case
'
theme
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
callback
(
new
Error
(
'
主题能为空
'
))
}
else
{
this
.
isDisable
=
true
callback
()
}
break
;
case
'
copyname
'
:
if
(
value
&&
reg
&&!
reg
.
test
(
value
))
{
this
.
isDisable
=
false
callback
(
new
Error
(
'
请输入正确抄送地址
'
))
}
else
{
this
.
isDisable
=
true
callback
()
}
break
;
case
'
UpdateOWER
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
callback
(
new
Error
(
'
邀约人不能为空
'
))
}
else
{
this
.
isDisable
=
true
callback
()
}
break
;
case
'
UpdateTIME
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
callback
(
new
Error
(
'
面试时间不能为空
'
))
}
else
{
this
.
isDisable
=
true
callback
()
}
break
;
case
'
UpdateVIEW
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
callback
(
new
Error
(
'
面试官不能为空
'
))
}
else
{
this
.
isDisable
=
true
callback
()
}
break
;
default
:
callback
()
break
;
}
}
export
const
emailRule
=
/^
((([
a-z0-9_
\.
-
]
+
)
@
([\d
a-z
\.
-
]
+
)\.([
a-z
\.]{2,6}\;))
*
(([
a-z0-9_
\.
-
]
+
)
@
([\d
a-z
\.
-
]
+
)\.([
a-z
\.]{2,6})))
$/
export
function
vidte
(
rule
,
value
,
callback
){
if
(
this
.
emailMassage
==
true
){
callback
(
new
Error
(
'
你尚未选择简历,请先选择简历
'
))
}
else
if
(
this
.
allEmailVilitor
==
true
){
callback
(
new
Error
(
'
不能选择多份简历,请选择单份简历
'
))
}
else
{
callback
()
}
}
export
function
validator
(
rule
,
value
,
callback
){
if
(
!
value
)
this
.
$Notice
.
warning
({
title
:
'
提示
'
,
desc
:
'
请输入您要通知的面试官
'
})
callback
()
}
\ No newline at end of file
src/store/index.js
View file @
95e44856
...
...
@@ -9,6 +9,7 @@ const state = {
cookieTips
:
false
,
interviewee
:
[],
channelInterviewee
:
[],
loading
:
false
}
export
default
new
Vuex
.
Store
({
mutations
,
...
...
static/ckeditor/config.js
View file @
95e44856
...
...
@@ -23,7 +23,7 @@ CKEDITOR.editorConfig = function( config ) {
{
name
:
'
document
'
,
groups
:
[
'
mode
'
,
'
document
'
,
'
doctools
'
]
},
];
config
.
removeButtons
=
'
Cut,Copy,Paste,PasteText,PasteFromWord,Save,Templates,NewPage,Preview,Print,About,ShowBlocks,Flash,PageBreak,Iframe,Anchor,SelectAll,BidiLtr,BidiRtl,Language,CreateDiv,Superscript,Subscript,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,Find,Replace;Smiley,Smiley,Replace
'
;
config
.
removeButtons
=
'
Cut,Copy,Paste,PasteText,PasteFromWord,Save,Templates,NewPage,Preview,Print,About,ShowBlocks,Flash,PageBreak,Iframe,Anchor,SelectAll,BidiLtr,BidiRtl,Language,CreateDiv,Superscript,Subscript,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,Find,Replace;Smiley,Smiley,Replace
,Styles,Format,RemoveFormat,SpecialChar,Maximize,Scayt,Source
'
;
config
.
removeDialogTabs
=
'
image:advanced;link:advanced;flash:advanced;editdiv:advanced; creatediv:advanced;
'
;
config
.
removePlugins
=
'
elementspath,resize
'
;
// 移除编辑器底部状态栏显示的元素路径和调整编辑器大小的按钮
config
.
image_previewText
=
'
'
;
// 图片信息面板预览区内容的文字内容,默认显示CKEditor自带的内容
...
...
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