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
140cbb56
Commit
140cbb56
authored
Dec 25, 2019
by
郝聪敏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加prettierrc配置文件
parent
16973291
Changes
39
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
1249 additions
and
2467 deletions
+1249
-2467
.editorconfig
.editorconfig
+0
-9
.gitignore
.gitignore
+2
-0
.prettierrc.js
.prettierrc.js
+5
-0
App.vue
src/App.vue
+7
-7
home.server.js
src/api/home.server.js
+13
-13
interview.server.js
src/api/interview.server.js
+25
-25
login.server.js
src/api/login.server.js
+7
-7
resume.server.js
src/api/resume.server.js
+71
-92
stystem.server.js
src/api/stystem.server.js
+30
-34
sweepCode.server.js
src/api/sweepCode.server.js
+4
-4
upload.server.js
src/api/upload.server.js
+13
-13
editor.vue
src/components/editor.vue
+29
-42
getimage.vue
src/components/getimage.vue
+5
-11
home.vue
src/components/home.vue
+115
-155
loading.vue
src/components/loading.vue
+12
-46
env.config.js
src/config/env.config.js
+1
-1
index.js
src/config/index.js
+1
-4
prod.config.js
src/config/prod.config.js
+1
-1
interview.vue
src/page/interview/interview.vue
+234
-599
login.vue
src/page/login/login.vue
+29
-53
update.vue
src/page/login/update.vue
+28
-56
pdfdetail.vue
src/page/resume/pdfdetail.vue
+45
-135
sweepCode.vue
src/page/sweepCode/sweepCode.vue
+92
-187
QRcode.vue
src/page/system/QRcode.vue
+6
-6
account.vue
src/page/system/account.vue
+107
-210
emailMange.vue
src/page/system/emailMange.vue
+108
-250
upload.vue
src/page/upload/upload.vue
+108
-290
index.js
src/router/index.js
+69
-108
ajax.js
src/service/ajax.js
+9
-10
cookie.service.js
src/service/cookie.service.js
+2
-2
http.service.js
src/service/http.service.js
+29
-37
init.service.js
src/service/init.service.js
+5
-16
localstorage.service.js
src/service/localstorage.service.js
+1
-1
promise.service.js
src/service/promise.service.js
+1
-1
util.js
src/service/util.js
+16
-17
actions.js
src/store/actions.js
+2
-2
index.js
src/store/index.js
+6
-6
muationsType.js
src/store/muationsType.js
+5
-5
mutations.js
src/store/mutations.js
+6
-12
No files found.
.editorconfig
deleted
100644 → 0
View file @
16973291
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
.gitignore
View file @
140cbb56
...
...
@@ -12,3 +12,5 @@ yarn-error.log*
*.ntvs*
*.njsproj
*.sln
.eslintcache
\ No newline at end of file
.prettierrc.js
0 → 100644
View file @
140cbb56
module
.
exports
=
{
"
printWidth
"
:
200
,
"
trailingComma
"
:
"
es5
"
,
"
singleQuote
"
:
true
,
}
\ No newline at end of file
src/App.vue
View file @
140cbb56
...
...
@@ -6,27 +6,27 @@
<
script
>
window
.
onload
=
function
()
{
document
.
addEventListener
(
"
touchstart
"
,
function
(
event
)
{
document
.
addEventListener
(
'
touchstart
'
,
function
(
event
)
{
if
(
event
.
touches
.
length
>
1
)
{
event
.
preventDefault
();
}
});
document
.
addEventListener
(
"
gesturestart
"
,
function
(
event
)
{
document
.
addEventListener
(
'
gesturestart
'
,
function
(
event
)
{
event
.
preventDefault
();
});
};
export
default
{
name
:
"
App
"
,
name
:
'
App
'
,
data
()
{
return
{
appClass
:
"
pc
"
appClass
:
'
pc
'
,
};
},
created
:
function
()
{
if
(
document
.
documentElement
.
clientWidth
<=
640
)
{
this
.
appClass
=
"
mobile
"
;
this
.
appClass
=
'
mobile
'
;
}
}
}
,
};
</
script
>
...
...
@@ -38,7 +38,7 @@ export default {
width
:
100%
;
cursor
:
auto
;
text-align
:
left
;
font-family
:
"PingFangSC-Regular"
,
"Avenir"
,
Helvetica
,
Arial
,
sans-serif
;
font-family
:
'PingFangSC-Regular'
,
'Avenir'
,
Helvetica
,
Arial
,
sans-serif
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
color
:
#2c3e50
;
...
...
src/api/home.server.js
View file @
140cbb56
import
axios
from
"
../service/http.service
"
;
import
{
sapi
}
from
"
../config
"
;
import
qs
from
"
qs
"
;
import
axios
from
'
../service/http.service
'
;
import
{
sapi
}
from
'
../config
'
;
import
qs
from
'
qs
'
;
// 获取个人信息
export
function
getpersonMassage
(
params
)
{
// params=qs.stringify(params)
return
axios
.
get
(
`
${
sapi
}
/api/login/me`
,
params
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 用户退出
...
...
@@ -15,31 +15,31 @@ export function loginOUT() {
// params=qs.stringify(params)
return
axios
.
get
(
`
${
sapi
}
/api/login/logout`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 通过某一来源查询简历信息
export
function
adoptOneSeeResumeList
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/findListBySource`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 通过渠道机简历信息
export
function
getChannelMassage
()
{
return
axios
.
get
(
`
${
sapi
}
/api/resume/getSourceList`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 判断是否为超级管理员
export
function
judeAdmin
()
{
return
axios
.
get
(
`
${
sapi
}
/api/user/isAdmin`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
src/api/interview.server.js
View file @
140cbb56
import
axios
from
"
../service/http.service
"
;
import
{
sapi
}
from
"
../config
"
;
import
qs
from
"
qs
"
;
import
axios
from
'
../service/http.service
'
;
import
{
sapi
}
from
'
../config
'
;
import
qs
from
'
qs
'
;
// 更改约面信息
export
function
changeinterviewMassage
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeInterview/update`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json;
"
}
'
Content-Type
'
:
'
application/json;
'
,
}
,
});
}
// 重启面试
...
...
@@ -14,34 +14,34 @@ export function oppenInterview(tid, tstatus) {
console
.
log
(
tid
,
tstatus
);
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/reset/
${
tid
}
/
${
tstatus
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json;
"
}
'
Content-Type
'
:
'
application/json;
'
,
}
,
});
}
// 终止面试
export
function
SInterview
(
tid
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/end/
${
tid
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json;
"
}
'
Content-Type
'
:
'
application/json;
'
,
}
,
});
}
// 面试管理查询
export
function
SerchList
(
parmars
,
status
)
{
return
axios
.
post
(
`
${
sapi
}
/api/interview/findListByQueryVO`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json;
"
,
"
X-Requested-With
"
:
"
XMLHttpRequest
"
,
status
}
'
Content-Type
'
:
'
application/json;
'
,
'
X-Requested-With
'
:
'
XMLHttpRequest
'
,
status
,
}
,
});
}
// 查看简历详情页
export
function
seedetail
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/html/get/
${
parmars
.
uid
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 面试官查询
...
...
@@ -52,39 +52,39 @@ export function Serchinterviewor() {
export
function
SerchInvitationOwer
()
{
return
axios
.
post
(
`
${
sapi
}
/api/interview/findInviterList`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json;
"
}
'
Content-Type
'
:
'
application/json;
'
,
}
,
});
}
// 新增约面信息
export
function
NewAddInterview
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeInterview/add`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json;
"
}
'
Content-Type
'
:
'
application/json;
'
,
}
,
});
}
// 查询记录
export
function
recodeLIST
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/history/
${
parmars
.
resumeId
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 变更状态
export
function
changestatus
(
tid
,
tstatus
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
tid
}
/
${
tstatus
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 获取终止面试前的前一个状态
export
function
formstatus
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/getPreReset/
${
parmars
.
resumeId
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
src/api/login.server.js
View file @
140cbb56
import
axios
from
"
../service/http.service
"
;
import
{
sapi
}
from
"
../config
"
;
import
qs
from
"
qs
"
;
import
axios
from
'
../service/http.service
'
;
import
{
sapi
}
from
'
../config
'
;
import
qs
from
'
qs
'
;
// 登录
export
function
login
(
params
)
{
// params=qs.stringify(params)
return
axios
.
post
(
`
${
sapi
}
/api/login/doLogin`
,
params
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 修改密码
...
...
@@ -15,7 +15,7 @@ export function updatePsd(params) {
// params=qs.stringify(params)
return
axios
.
post
(
`
${
sapi
}
/api/login/modifyPassword`
,
params
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
src/api/resume.server.js
View file @
140cbb56
import
axios
from
"
../service/http.service
"
;
import
{
sapi
}
from
"
../config
"
;
import
qs
from
"
qs
"
;
import
axios
from
'
../service/http.service
'
;
import
{
sapi
}
from
'
../config
'
;
import
qs
from
'
qs
'
;
// 查询简历列表
export
function
serchList
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/findList`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 下载简历(单条)
...
...
@@ -14,88 +14,73 @@ export function downloadone(parmars) {
parmars
=
qs
.
stringify
(
parmars
);
return
axios
.
post
(
`
${
sapi
}
/api/resumeFile/download/formatted/one`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/x-www-form-urlencoded
"
}
'
Content-Type
'
:
'
application/x-www-form-urlencoded
'
,
}
,
});
}
// 搜索
export
function
sousuoList
(
parmars
,
status
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/findListByQueryVO`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
,
status
}
'
Content-Type
'
:
'
application/json
'
,
status
,
}
,
});
}
// 查看简历详情页
export
function
seedetail
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/html/get/
${
parmars
.
uid
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 简历pass
export
function
PASS
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
""
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
}
);
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
''
,
{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
},
});
}
// 待处理
export
function
TODORes
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
""
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
}
);
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
''
,
{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
},
});
}
// 备选
export
function
OPTION
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
""
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
}
);
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
''
,
{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
},
});
}
// 删除简历
export
function
deleteREsume
(
deleteallArr
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/delete`
,
JSON
.
stringify
(
deleteallArr
),
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 单条下载简历
export
function
downloadOne
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/resume/download/formatted/one?resumeId=
${
parmars
.
resumeId
}
`
,
{
headers
:
{
// 'Content-Type':'application/x-www-form-urlencoded'
}
}
);
return
axios
.
get
(
`
${
sapi
}
/api/resume/download/formatted/one?resumeId=
${
parmars
.
resumeId
}
`
,
{
headers
:
{
// 'Content-Type':'application/x-www-form-urlencoded'
},
});
}
// 批量下载简历
export
function
downloadALL
()
{
return
axios
.
get
(
`
${
sapi
}
/api/resumeFile/download/formatted/compress`
,
{
headers
:
{
"
Content-Type
"
:
"
application/x-www-form-urlencoded
"
}
'
Content-Type
'
:
'
application/x-www-form-urlencoded
'
,
}
,
});
}
// 导出列表
...
...
@@ -104,8 +89,8 @@ export function exportLIST(parmars) {
`
${
sapi
}
/api/excel/output?optSource=
${
parmars
.
optSource
}
&keywordString=
${
parmars
.
keywordString
}
&company=
${
parmars
.
company
}
&ownerSex=
${
parmars
.
ownerSex
}
&highestDegreeNum=
${
parmars
.
highestDegreeNum
}
&flowStatusList=
${
parmars
.
flowStatusList
}
&ownerWorkYears1=
${
parmars
.
ownerWorkYears1
}
&ownerWorkYears2=
${
parmars
.
ownerWorkYears2
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
}
);
}
...
...
@@ -113,69 +98,66 @@ export function exportLIST(parmars) {
export
function
recodeLIST
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/history/
${
parmars
.
resumeId
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 通过某一来源查询简历信息
export
function
adoptOneSeeResumeList
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/findListBySource`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 新增约面信息
export
function
addinterview
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeInterview/add`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 修改流程状态
export
function
updatastatus
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
}
);
return
axios
.
post
(
`
${
sapi
}
/api/resumeFlow/uploadStatus/
${
parmars
.
id
}
/
${
parmars
.
status
}
`
,
{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
},
});
}
// 获取邮件模板
export
function
getEmailMoo
()
{
return
axios
.
post
(
`
${
sapi
}
/api/emailTemplate/getAllTemplateList`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 根据获取id邮件模板内容
export
function
getEmailContent
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/emailTemplate/loadTemplate`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 上传图片
export
function
uploadimage
()
{
return
axios
.
get
(
`
${
sapi
}
/api/ckeditor/uploadImage`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 发送邮件
export
function
sendEmail
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/sendMail/sendEmailTemplate`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
multipart/form-data
"
'
Content-Type
'
:
'
multipart/form-data
'
,
// 'Content-Disposition':'multipart/form-data'
// 'Content-Type':'application/json'
}
}
,
});
}
export
function
findCompanyEmailByKey
(
key
)
{
...
...
@@ -186,41 +168,38 @@ export function findCompanyEmailByKey(key) {
export
function
forwardResume
(
params
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/forwardResume`
,
params
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
export
function
getPdf
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/resume/getResumePdfByResumeId/
${
parmars
.
uid
}
`
,
{
responseType
:
"
arraybuffer
"
,
responseType
:
'
arraybuffer
'
,
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 是否展示原件的PDF
export
function
isShowPDF
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/resume/isShowOriPdf/
${
parmars
.
uid
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
export
function
getpdfUrl
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/resume/getResumePdfUrl/
${
parmars
.
uid
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 获取职位列表
export
function
getlist
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/resume/findPositionList?optSourceCode=
${
parmars
.
optSourceCode
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
}
);
return
axios
.
get
(
`
${
sapi
}
/api/resume/findPositionList?optSourceCode=
${
parmars
.
optSourceCode
}
`
,
{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
},
});
}
src/api/stystem.server.js
View file @
140cbb56
import
axios
from
"
../service/http.service
"
;
import
{
sapi
}
from
"
../config
"
;
import
qs
from
"
qs
"
;
import
axios
from
'
../service/http.service
'
;
import
{
sapi
}
from
'
../config
'
;
import
qs
from
'
qs
'
;
// 账号列表查询
export
function
queryaccountList
(
params
)
{
return
axios
.
post
(
`
${
sapi
}
/api/user/findList`
,
params
,
{
headers
:
{
"
Content-Type
"
:
"
application/json;
"
}
'
Content-Type
'
:
'
application/json;
'
,
}
,
});
}
// 添加账户
export
function
addAccount
(
params
)
{
return
axios
.
post
(
`
${
sapi
}
/api/user/add`
,
params
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 删除单条账户
export
function
Delateaccount
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/user/delete/
${
parmars
.
id
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 批量删除
export
function
delateAllAccount
(
DelateARR
)
{
return
axios
.
post
(
`
${
sapi
}
//api/user/delete`
,
JSON
.
stringify
(
DelateARR
),
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 恢复初始密码
export
function
recoveryPassword
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/user/initial/
${
parmars
.
id
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 查询邮箱列表
export
function
queryemailList
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/email/list`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 同步邮箱
export
function
Synchronization
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/email/bindAndSync`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 解绑邮箱
export
function
jiebangEmail
(
id
)
{
return
axios
.
post
(
`
${
sapi
}
/api/email/unbind/
${
id
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/x-www-form-urlencoded
"
}
'
Content-Type
'
:
'
application/x-www-form-urlencoded
'
,
}
,
});
}
// 修改邮箱并重新绑定
export
function
updateemailTWO
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/email/modify`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 批量解绑邮箱
export
function
UntyingAll
(
UntyingAllARR
)
{
return
axios
.
post
(
`
${
sapi
}
/api/email/unbind/batch`
,
JSON
.
stringify
(
UntyingAllARR
),
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
}
);
return
axios
.
post
(
`
${
sapi
}
/api/email/unbind/batch`
,
JSON
.
stringify
(
UntyingAllARR
),
{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
},
});
}
// 获取二维码
export
function
getErcode
()
{
return
axios
.
get
(
`
${
sapi
}
/api/qrCode/getInterviewQrcode`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// //修改账户
export
function
updateAccount
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/user/modify/
${
parmars
.
id
}
`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
src/api/sweepCode.server.js
View file @
140cbb56
import
axios
from
"
../service/http.service
"
;
import
{
sapi
}
from
"
../config
"
;
import
qs
from
"
qs
"
;
import
axios
from
'
../service/http.service
'
;
import
{
sapi
}
from
'
../config
'
;
import
qs
from
'
qs
'
;
// 提交应聘登记表
export
function
submitMassage
(
params
)
{
// params=qs.stringify(params)
return
axios
.
post
(
`
${
sapi
}
/api/interview/arrive`
,
params
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
headers
:
{
'
Content-Type
'
:
'
application/json
'
},
});
}
src/api/upload.server.js
View file @
140cbb56
import
axios
from
"
../service/http.service
"
;
import
{
sapi
}
from
"
../config
"
;
import
qs
from
"
qs
"
;
import
axios
from
'
../service/http.service
'
;
import
{
sapi
}
from
'
../config
'
;
import
qs
from
'
qs
'
;
// 获取上传批次号
export
function
getuploadNumber
()
{
// params=qs.stringify(params)
return
axios
.
get
(
`
${
sapi
}
/api/resume/upload/batchNum`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 上传文件
...
...
@@ -17,31 +17,31 @@ export function uploadfile(parmars) {
// 'Content-Type':'multipart/form-data',
processData
:
false
,
contentType
:
false
,
async
:
false
}
async
:
false
,
}
,
});
}
// 查询上传列表记录
export
function
serchList
(
parmars
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/upload/history`
,
parmars
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 查询简历详情
export
function
serchRESUMEdetail
(
parmars
)
{
return
axios
.
get
(
`
${
sapi
}
/api/html/get/
${
parmars
.
uid
}
`
,
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
// 查询简历详情
export
function
deleteREsumeUPLOad
(
deleteallArr
)
{
return
axios
.
post
(
`
${
sapi
}
/api/resume/delete`
,
JSON
.
stringify
(
deleteallArr
),
{
headers
:
{
"
Content-Type
"
:
"
application/json
"
}
'
Content-Type
'
:
'
application/json
'
,
}
,
});
}
src/components/editor.vue
View file @
140cbb56
...
...
@@ -3,12 +3,7 @@
<!-- bidirectional data binding(双向数据绑定) -->
<Modal
v-model=
"modal"
:fullscreen=
"fullscreen"
>
<Input
v-model=
"value"
></Input>
<editor
@
getValue=
"getInfo"
:uploadUrl=
"uploadUrl"
:value=
"value"
height=
"400px"
></editor>
<editor
@
getValue=
"getInfo"
:uploadUrl=
"uploadUrl"
:value=
"value"
height=
"400px"
></editor>
<div
slot=
"footer"
>
<Button
@
click=
"getInfo"
>
获取内容
</Button>
</div>
...
...
@@ -20,77 +15,69 @@
</Input>
</FormItem>
<FormItem
prop=
"password"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"Password"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"Password"
>
<Icon
type=
"ios-lock-outline"
slot=
"prepend"
></Icon>
</Input>
</FormItem>
<FormItem>
<Button
type=
"primary"
@
click=
"handleSubmit('formInline')"
>
Signin
</Button
>
<Button
type=
"primary"
@
click=
"handleSubmit('formInline')"
>
Signin
</Button>
</FormItem>
</Form>
</div>
</
template
>
<
script
>
import
editor
from
"
./ckeditor.vue
"
;
import
{
sapi
}
from
"
../config/index.js
"
;
import
localStorage
from
"
../service/localstorage.service.js
"
;
import
editor
from
'
./ckeditor.vue
'
;
import
{
sapi
}
from
'
../config/index.js
'
;
import
localStorage
from
'
../service/localstorage.service.js
'
;
export
default
{
data
()
{
return
{
modal
:
true
,
fullscreen
:
true
,
content
:
"
<h2>I am Example</h2>
"
,
content1
:
"
<h2>I am Example</h2>
"
,
uploadUrl
:
`
${
sapi
}
/api/ckeditor/uploadImage?token=
${
localStorage
.
get
(
"
token
"
)}
&&backUrl=/getimage`
,
value
:
"
22
"
,
content
:
'
<h2>I am Example</h2>
'
,
content1
:
'
<h2>I am Example</h2>
'
,
uploadUrl
:
`
${
sapi
}
/api/ckeditor/uploadImage?token=
${
localStorage
.
get
(
'
token
'
)}
&&backUrl=/getimage`
,
value
:
'
22
'
,
editorOption
:
{
// some quill options
},
formInline
:
{
user
:
""
,
password
:
""
user
:
''
,
password
:
''
,
},
ruleInline
:
{
user
:
[
{
required
:
false
,
message
:
"
Please fill in the user name
"
,
trigger
:
"
blur
"
,
message
:
'
Please fill in the user name
'
,
trigger
:
'
blur
'
,
pattern
:
/^1
[
3456789
]\d{9}
$/
,
validator
:
function
(
rule
,
value
,
call
)
{
console
.
log
(
rule
,
value
);
return
call
(
new
Error
());
}
}
}
,
}
,
],
password
:
[
{
required
:
true
,
message
:
"
Please fill in the password.
"
,
trigger
:
"
blur
"
message
:
'
Please fill in the password.
'
,
trigger
:
'
blur
'
,
},
{
type
:
"
string
"
,
type
:
'
string
'
,
min
:
6
,
message
:
"
The password length cannot be less than 6 bits
"
,
trigger
:
"
blur
"
}
]
}
message
:
'
The password length cannot be less than 6 bits
'
,
trigger
:
'
blur
'
,
}
,
]
,
}
,
};
},
watch
:
{},
components
:
{
editor
editor
,
},
// manually control the data synchronization
// 如果需要手动控制数据同步,父组件需要显式地处理changed事件
...
...
@@ -106,12 +93,12 @@ export default {
// this.$Message.error('Fail!');
// }
// })
this
.
$refs
[
name
].
validateField
(
"
user
"
,
error
=>
{
console
.
log
(
"
------
"
,
error
);
this
.
$refs
[
name
].
validateField
(
'
user
'
,
error
=>
{
console
.
log
(
'
------
'
,
error
);
});
}
}
,
},
computed
:
{},
mounted
()
{}
mounted
()
{}
,
};
</
script
>
src/components/getimage.vue
View file @
140cbb56
...
...
@@ -3,17 +3,15 @@
</
template
>
<
script
>
function
GetQueryString
(
name
)
{
var
reg
=
new
RegExp
(
"
(^|&)
"
+
name
+
"
=([^&]*)(&|$)
"
,
"
i
"
);
var
reg
=
new
RegExp
(
'
(^|&)
'
+
name
+
'
=([^&]*)(&|$)
'
,
'
i
'
);
var
r
=
window
.
location
.
search
.
substr
(
1
).
match
(
reg
);
// 获取url中"?"符后的字符串并正则匹配
var
context
=
""
;
var
context
=
''
;
if
(
r
!=
null
)
{
context
=
r
[
2
];
}
reg
=
null
;
r
=
null
;
return
context
==
null
||
context
==
""
||
context
==
"
undefined
"
?
""
:
decodeURIComponent
(
context
);
return
context
==
null
||
context
==
''
||
context
==
'
undefined
'
?
''
:
decodeURIComponent
(
context
);
}
export
default
{
data
()
{
...
...
@@ -21,11 +19,7 @@ export default {
},
mounted
()
{
console
.
log
(
777
);
window
.
parent
.
CKEDITOR
.
tools
.
callFunction
(
GetQueryString
(
"
CKEditorFuncNum
"
),
GetQueryString
(
"
ImageUrl
"
),
GetQueryString
(
"
Message
"
)
);
}
window
.
parent
.
CKEDITOR
.
tools
.
callFunction
(
GetQueryString
(
'
CKEditorFuncNum
'
),
GetQueryString
(
'
ImageUrl
'
),
GetQueryString
(
'
Message
'
));
},
};
</
script
>
src/components/home.vue
View file @
140cbb56
...
...
@@ -2,36 +2,15 @@
<Row
id=
"home"
class=
"home"
>
<loading
v-show=
"showLoading"
></loading>
<Col
span=
"3"
class=
"aside"
style=
"width:17%;height:100%;overflow: auto;"
>
<img
src=
"http://xyqbui.lkbang.net/image/homelogo.png"
alt=
""
style=
"height:70px"
/>
<Menu
style=
"width: 100%;"
ref=
"subMenu"
:active-name=
"levelThreeName"
:open-names=
"levelTwoName"
@
on-select=
"go"
>
<img
src=
"http://xyqbui.lkbang.net/image/homelogo.png"
alt=
""
style=
"height:70px"
/>
<Menu
style=
"width: 100%;"
ref=
"subMenu"
:active-name=
"levelThreeName"
:open-names=
"levelTwoName"
@
on-select=
"go"
>
<template
v-for=
"menu in childMenu"
>
<Submenu
:name=
"menu.name"
:key=
"menu.name"
v-show=
"!(isAdmin == false && menu.item == '账户管理')"
>
<Submenu
:name=
"menu.name"
:key=
"menu.name"
v-show=
"!(isAdmin == false && menu.item == '账户管理')"
>
<template
slot=
"title"
>
<Icon
:type=
"menu.icon"
style=
"font-size:20px;font-weight:bold"
/>
{{
menu
.
item
}}
</
template
>
<MenuItem
v-for=
"(child, index) in menu.child"
:key=
"index"
:name=
"child.name"
@
click=
"go"
:active-name=
"levelThreeName"
>
{{ child.item }}
</MenuItem
>
<MenuItem
v-for=
"(child, index) in menu.child"
:key=
"index"
:name=
"child.name"
@
click=
"go"
:active-name=
"levelThreeName"
>
{{ child.item }}
</MenuItem>
</Submenu>
</template>
</Menu>
...
...
@@ -39,24 +18,14 @@
<Col
span=
"21"
class=
"content"
style=
"width:83%;height:100%;"
>
<Row
class=
"header"
style=
"height:50px;"
>
<Col
span=
"20"
>
<Menu
mode=
"horizontal"
:active-name=
"levelOneName"
@
on-select=
"selectMenu"
>
<MenuItem
v-for=
"menu in menuList"
:name=
"menu.name"
:key=
"menu.name"
>
<Menu
mode=
"horizontal"
:active-name=
"levelOneName"
@
on-select=
"selectMenu"
>
<MenuItem
v-for=
"menu in menuList"
:name=
"menu.name"
:key=
"menu.name"
>
{{ menu.item }}
</MenuItem>
</Menu>
</Col>
<Col
span=
"2"
class=
"account"
style=
"text-align:right;"
>
<span
style=
"display:inline-block;line-height:6%;margin-left:30%;"
>
{{
massage
}}
</span>
<span
style=
"display:inline-block;line-height:6%;margin-left:30%;"
>
{{ massage }}
</span>
</Col>
<Col
span=
"1"
class=
"sign-out"
>
<a
@
click=
"loginOut"
style=
"float:right"
>
退出
</a>
...
...
@@ -69,142 +38,136 @@
</Row>
</template>
<
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
"
;
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
{
massage
:
""
,
massage
:
''
,
isAdmin
:
false
,
arr
:
[],
biaoshi
:
""
,
biaoshi
:
''
,
channelARR
:
[],
isadmin
:
""
,
isadmin
:
''
,
pageindex
:
0
,
pageSize
:
10
,
condition
:
""
,
xiabiao
:
""
,
itemSelect
:
""
,
type
:
""
,
levelOneName
:
"
1
"
,
levelTwoName
:
[
"
1-1
"
,
"
2-1
"
,
"
3-1
"
,
"
4-1
"
],
levelThreeName
:
"
1-1-1
"
,
condition
:
''
,
xiabiao
:
''
,
itemSelect
:
''
,
type
:
''
,
levelOneName
:
'
1
'
,
levelTwoName
:
[
'
1-1
'
,
'
2-1
'
,
'
3-1
'
,
'
4-1
'
],
levelThreeName
:
'
1-1-1
'
,
menuList
:
[
{
name
:
"
1
"
,
item
:
"
简历管理
"
,
name
:
'
1
'
,
item
:
'
简历管理
'
,
loadMenu
:
true
,
child
:
[
{
name
:
"
1-1
"
,
item
:
"
全部管理
"
,
icon
:
"
ios-apps-outline
"
,
name
:
'
1-1
'
,
item
:
'
全部管理
'
,
icon
:
'
ios-apps-outline
'
,
child
:
[
{
name
:
"
1-1-1
"
,
item
:
"
全部简历
"
,
route
:
"
/allResume
"
}
]
name
:
'
1-1-1
'
,
item
:
'
全部简历
'
,
route
:
'
/allResume
'
,
}
,
]
,
},
{
name
:
"
1-2
"
,
item
:
"
渠道简历
"
,
icon
:
"
ios-list
"
,
child
:
[]
}
]
name
:
'
1-2
'
,
item
:
'
渠道简历
'
,
icon
:
'
ios-list
'
,
child
:
[]
,
}
,
]
,
},
{
name
:
"
2
"
,
item
:
"
面试管理
"
,
name
:
'
2
'
,
item
:
'
面试管理
'
,
child
:
[
{
name
:
"
2-1
"
,
item
:
"
面试管理
"
,
icon
:
"
ios-paper-outline
"
,
name
:
'
2-1
'
,
item
:
'
面试管理
'
,
icon
:
'
ios-paper-outline
'
,
child
:
[
{
name
:
"
2-1-1
"
,
item
:
"
全部简历
"
,
route
:
"
/interview
"
}
]
}
]
name
:
'
2-1-1
'
,
item
:
'
全部简历
'
,
route
:
'
/interview
'
,
}
,
]
,
}
,
]
,
},
{
name
:
"
3
"
,
item
:
"
上传简历
"
,
name
:
'
3
'
,
item
:
'
上传简历
'
,
child
:
[
{
name
:
"
3-1
"
,
item
:
"
上传简历
"
,
icon
:
"
ios-cloud-upload-outline
"
,
name
:
'
3-1
'
,
item
:
'
上传简历
'
,
icon
:
'
ios-cloud-upload-outline
'
,
child
:
[
{
name
:
"
3-1-1
"
,
item
:
"
上传简历
"
,
route
:
"
/upload
"
}
]
}
]
name
:
'
3-1-1
'
,
item
:
'
上传简历
'
,
route
:
'
/upload
'
,
}
,
]
,
}
,
]
,
},
{
name
:
"
4
"
,
item
:
"
系统管理
"
,
name
:
'
4
'
,
item
:
'
系统管理
'
,
isAdmin
:
true
,
child
:
[
{
name
:
"
4-1
"
,
item
:
"
账户管理
"
,
icon
:
"
ios-contact-outline
"
,
name
:
'
4-1
'
,
item
:
'
账户管理
'
,
icon
:
'
ios-contact-outline
'
,
show
:
true
,
child
:
[
{
name
:
"
4-1-1
"
,
item
:
"
账户管理
"
,
route
:
"
/account
"
}
]
name
:
'
4-1-1
'
,
item
:
'
账户管理
'
,
route
:
'
/account
'
,
}
,
]
,
},
{
name
:
"
4-2
"
,
item
:
"
邮箱管理
"
,
icon
:
"
ios-mail-outline
"
,
name
:
'
4-2
'
,
item
:
'
邮箱管理
'
,
icon
:
'
ios-mail-outline
'
,
child
:
[
{
name
:
"
4-2-1
"
,
item
:
"
邮箱管理
"
,
route
:
"
/emailMange
"
}
]
name
:
'
4-2-1
'
,
item
:
'
邮箱管理
'
,
route
:
'
/emailMange
'
,
}
,
]
,
},
{
name
:
"
4-3
"
,
item
:
"
二维码管理
"
,
icon
:
"
ios-qr-scanner
"
,
name
:
'
4-3
'
,
item
:
'
二维码管理
'
,
icon
:
'
ios-qr-scanner
'
,
child
:
[
{
name
:
"
4-3-1
"
,
item
:
"
二维码管理
"
,
route
:
"
/QRcode
"
}
]
}
]
}
name
:
'
4-3-1
'
,
item
:
'
二维码管理
'
,
route
:
'
/QRcode
'
,
}
,
]
,
}
,
]
,
}
,
],
childMenu
:
[]
childMenu
:
[]
,
};
},
watch
:
{
...
...
@@ -212,15 +175,15 @@ export default {
if
(
to
.
params
.
fromInterview
)
{
this
.
getActiveName
();
}
}
}
,
},
computed
:
{
...
mapState
({
showLoading
:
state
=>
state
.
loading
})
showLoading
:
state
=>
state
.
loading
,
})
,
},
components
:
{
loading
loading
,
},
methods
:
{
go
(
name
)
{
...
...
@@ -237,8 +200,7 @@ export default {
// // refesh是否为刷新页面
this
.
levelOneName
=
name
;
const
menus
=
this
.
menuList
.
filter
(
v
=>
name
===
v
.
name
);
this
.
childMenu
=
menus
.
length
>
0
?
menus
[
0
].
child
:
this
.
menuList
[
0
].
child
;
this
.
childMenu
=
menus
.
length
>
0
?
menus
[
0
].
child
:
this
.
menuList
[
0
].
child
;
if
(
!
refesh
)
{
// 点击菜单默认展示第一个菜单
this
.
levelTwoName
=
[];
...
...
@@ -250,8 +212,8 @@ export default {
// 简历管理模块需要加载渠道简历
await
this
.
getChannelMenu
();
}
if
(
refesh
&&
this
.
$route
.
path
.
indexOf
(
"
channel
"
)
>
-
1
)
{
this
.
levelThreeName
=
this
.
$route
.
path
.
split
(
"
/
"
)[
2
];
if
(
refesh
&&
this
.
$route
.
path
.
indexOf
(
'
channel
'
)
>
-
1
)
{
this
.
levelThreeName
=
this
.
$route
.
path
.
split
(
'
/
'
)[
2
];
}
this
.
$nextTick
(()
=>
{
this
.
$refs
.
subMenu
.
updateOpened
();
...
...
@@ -262,16 +224,16 @@ export default {
// 获取个人信息
getmassage
()
{
getpersonMassage
().
then
(
res
=>
{
this
.
massage
=
(
res
.
data
.
body
&&
res
.
data
.
body
.
userName
)
||
""
;
this
.
massage
=
(
res
.
data
.
body
&&
res
.
data
.
body
.
userName
)
||
''
;
});
},
// 用户退出
loginOut
()
{
loginOUT
().
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
localstorage
.
remove
(
"
token
"
);
localstorage
.
remove
(
"
isADMIN
"
);
this
.
$router
.
replace
(
"
/login
"
);
localstorage
.
remove
(
'
token
'
);
localstorage
.
remove
(
'
isADMIN
'
);
this
.
$router
.
replace
(
'
/login
'
);
}
});
},
...
...
@@ -286,9 +248,7 @@ export default {
var
obj
=
{
name
:
`
${
item
.
sourceName
}
`
,
item
:
item
.
sourceName
,
route
:
`/channel/
${
item
.
sourceCode
}
?handUpload=
${
item
.
handUpload
==
null
?
""
:
item
.
handUpload
}
`
route
:
`/channel/
${
item
.
sourceCode
}
?handUpload=
${
item
.
handUpload
==
null
?
''
:
item
.
handUpload
}
`
,
};
this
.
menuList
[
0
].
child
[
1
].
child
.
push
(
obj
);
});
...
...
@@ -296,12 +256,12 @@ export default {
},
getActiveName
(
change
)
{
const
pathName
=
this
.
$route
.
path
;
if
(
pathName
.
indexOf
(
"
channel
"
)
>
-
1
)
{
this
.
levelOneName
=
"
1
"
;
this
.
levelThreeName
=
pathName
.
split
(
"
/
"
)[
2
];
if
(
pathName
.
indexOf
(
'
channel
'
)
>
-
1
)
{
this
.
levelOneName
=
'
1
'
;
this
.
levelThreeName
=
pathName
.
split
(
'
/
'
)[
2
];
this
.
levelTwoName
=
[];
this
.
levelTwoName
.
push
(
"
1-2
"
);
this
.
selectMenu
(
this
.
levelOneName
,
"
refresh
"
);
this
.
levelTwoName
.
push
(
'
1-2
'
);
this
.
selectMenu
(
this
.
levelOneName
,
'
refresh
'
);
return
;
}
this
.
menuList
.
map
(
parent
=>
{
...
...
@@ -316,14 +276,14 @@ export default {
});
});
});
this
.
selectMenu
(
this
.
levelOneName
,
"
refresh
"
);
this
.
selectMenu
(
this
.
levelOneName
,
'
refresh
'
);
},
getInitName
(
name
,
menu
,
child
)
{
// 超级管理员
const
isAdmin
=
menu
.
isAdmin
;
const
hightMenu
=
{
levelTwoName
:
""
,
levelThreeName
:
""
levelTwoName
:
''
,
levelThreeName
:
''
,
};
if
(
isAdmin
||
isAdmin
==
undefined
)
{
// 默认展示一级菜单
...
...
@@ -345,7 +305,7 @@ export default {
},
goBack
()
{
this
.
getActiveName
();
}
}
,
},
mounted
()
{
this
.
getmassage
();
...
...
@@ -353,12 +313,12 @@ export default {
this
.
judgeadmin
();
if
(
window
.
history
&&
window
.
history
.
pushState
)
{
history
.
pushState
(
null
,
null
,
document
.
URL
);
window
.
addEventListener
(
"
popstate
"
,
this
.
goBack
,
false
);
window
.
addEventListener
(
'
popstate
'
,
this
.
goBack
,
false
);
}
},
destroyed
()
{
window
.
removeEventListener
(
"
popstate
"
,
this
.
goBack
,
false
);
}
window
.
removeEventListener
(
'
popstate
'
,
this
.
goBack
,
false
);
}
,
};
</
script
>
...
...
src/components/loading.vue
View file @
140cbb56
<
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"
>
<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"
/>
<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"
/>
<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"
/>
<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"
/>
<circle
cx=
"0"
cy=
"0"
r=
"7"
fill=
"#11a181"
transform=
"scale(0.113418 0.113418)"
class=
"circle3"
/>
</g>
</svg>
</div>
...
...
@@ -55,25 +21,25 @@
</
template
>
<
script
>
export
default
{
name
:
"
loading
"
,
name
:
'
loading
'
,
props
:
{
width
:
{
type
:
Number
,
default
:
80
default
:
80
,
},
height
:
{
type
:
Number
,
default
:
80
}
default
:
80
,
}
,
},
created
()
{
this
.
viewBox
=
"
0 0
"
+
"
"
+
(
this
.
width
+
10
)
+
"
"
+
this
.
height
;
this
.
viewBox
=
'
0 0
'
+
'
'
+
(
this
.
width
+
10
)
+
'
'
+
this
.
height
;
},
data
()
{
return
{
viewBox
:
""
viewBox
:
''
,
};
}
}
,
};
</
script
>
<
style
lang=
"less"
scoped
>
...
...
src/config/env.config.js
View file @
140cbb56
const
sapi
=
"
http://recruitapi-ai3.liangkebang.net
"
;
const
sapi
=
'
http://recruitapi-ai3.liangkebang.net
'
;
export
{
sapi
};
src/config/index.js
View file @
140cbb56
module
.
exports
=
process
.
env
.
NODE_ENV
===
"
production
"
?
require
(
"
./prod.config.js
"
)
:
require
(
"
./env.config.js
"
);
module
.
exports
=
process
.
env
.
NODE_ENV
===
'
production
'
?
require
(
'
./prod.config.js
'
)
:
require
(
'
./env.config.js
'
);
src/config/prod.config.js
View file @
140cbb56
const
sapi
=
"
//api.stantoo.com
"
;
const
sapi
=
'
//api.stantoo.com
'
;
export
{
sapi
};
src/page/interview/interview.vue
View file @
140cbb56
...
...
@@ -3,233 +3,68 @@
<!--
<Spin
size=
"large"
fix
v-if=
"spinShow"
style=
"font-size:25px"
>
加载中...
</Spin>
-->
<div
class=
"interview-left"
>
<div
class=
"leftcontentTop"
style=
"height:100px;display:none"
>
<div
style=
"height:90%;float:left;width:30%;background:rgb(0,146,255);margin-left:1%;margin-top:10px"
></div>
<div
style=
"height:90%;float:left;width:30%;background:rgb(253,85,83);margin-left:3%;margin-top:10px"
></div>
<div
style=
"height:90%;float:left;width:30%;background:rgb(0,176,160);margin-left:3%;margin-top:10px"
></div>
<div
style=
"height:90%;float:left;width:30%;background:rgb(0,146,255);margin-left:1%;margin-top:10px"
></div>
<div
style=
"height:90%;float:left;width:30%;background:rgb(253,85,83);margin-left:3%;margin-top:10px"
></div>
<div
style=
"height:90%;float:left;width:30%;background:rgb(0,176,160);margin-left:3%;margin-top:10px"
></div>
</div>
<div
style=
"float:left;margin-left:1%;width:99%;overflow-y: auto;height:95%;margin-bottom:40px"
>
<div
style=
"margin:50px auto;width:300px;height:200px;line-height:200px;text-align:center;font-size:20px;color:LightGray"
v-show=
"Essentialinformation.length == 0"
>
<div
style=
"float:left;margin-left:1%;width:99%;overflow-y: auto;height:95%;margin-bottom:40px"
>
<div
style=
"margin:50px auto;width:300px;height:200px;line-height:200px;text-align:center;font-size:20px;color:LightGray"
v-show=
"Essentialinformation.length == 0"
>
暂无数据
</div>
<div
class=
"leftcontentContent"
v-for=
"(item, index) in Essentialinformation"
:key=
"index"
>
<div
class=
"leftcontentContent"
v-for=
"(item, index) in Essentialinformation"
:key=
"index"
>
<div
class=
"contentMassage"
>
<p
style=
"margin-top:7px"
>
<span
style=
"margin-left:10px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer"
@
click=
"Seedetail(item.id, item.uid, item.flowStatus)"
<span
style=
"margin-left:10px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer"
@
click=
"Seedetail(item.id, item.uid, item.flowStatus)"
>
{{
item
.
ownerName
}}
|
</span
>
<span
@
click=
"Seedetail(item.id, item.uid, item.flowStatus)"
style=
"overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer"
<span
@
click=
"Seedetail(item.id, item.uid, item.flowStatus)"
style=
"overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer"
>
{{
item
.
ownerMobile
}}
|
</span
>
<span
@
click=
"Seedetail(item.id, item.uid, item.flowStatus)"
style=
"overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;width:20%;cursor:pointer"
>
{{
item
.
ownerExpectTitles
}}
</span
>
<span
style=
"color:#2d8cf0;float:right;margin-right:5%;cursor:pointer"
@
click=
"
updateInterview(
item.id,
item.interviewerName,
item.seeTime,
item.inviterName
)
"
>
更改约面信息
</span
>
<span
@
click=
"Seedetail(item.id, item.uid, item.flowStatus)"
style=
"overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;width:20%;cursor:pointer"
>
{{
item
.
ownerExpectTitles
}}
</span>
<span
style=
"color:#2d8cf0;float:right;margin-right:5%;cursor:pointer"
@
click=
"updateInterview(item.id, item.interviewerName, item.seeTime, item.inviterName)"
>
更改约面信息
</span>
</p>
<p
style=
"margin-top:8px;color:Grey"
>
<span
style=
"margin-left:10px;display:inline-block;width:22%;"
>
邀约人:
{{
item
.
inviterName
}}
</span>
<span
style=
"margin-left:7%;display:inline-block;width:22%;"
>
面试官:
{{
item
.
interviewerName
}}
</span
>
<span
style=
"float:right;margin-right:5%"
>
面试时间:
{{
item
.
seeTime
}}
</span
>
<span
style=
"margin-left:10px;display:inline-block;width:22%;"
>
邀约人:
{{
item
.
inviterName
}}
</span>
<span
style=
"margin-left:7%;display:inline-block;width:22%;"
>
面试官:
{{
item
.
interviewerName
}}
</span>
<span
style=
"float:right;margin-right:5%"
>
面试时间:
{{
item
.
seeTime
}}
</span>
</p>
</div>
<div
class=
"contentState"
>
<p
style=
"margin-top:8px"
>
<span
style=
"margin-left:20px"
@
click=
"modal4 = true"
>
当前状态
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'OPTION'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'TO_SEE'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'HAS_SEE'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'SEE_FAIL'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'INTERVIEW_FAIL'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'TO_SENT_OFFER'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'TO_ENTRY'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'HAS_ENTRY'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'NO_ENTRY'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'PASS'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'HAS_SENT_OFFER'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'ARRIVED'"
>
终止面试
</span
>
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0;cursor:pointer"
@
click=
"OPPeninterview(item.id, item.flowStatus)"
v-if=
"item.flowStatus == 'END'"
>
重启面试
</span
>
<span
style=
"margin-left:20px"
@
click=
"modal4 = true"
>
当前状态
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'OPTION'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'TO_SEE'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'HAS_SEE'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'SEE_FAIL'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'INTERVIEW_FAIL'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'TO_SENT_OFFER'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'TO_ENTRY'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'HAS_ENTRY'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'NO_ENTRY'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'PASS'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'HAS_SENT_OFFER'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@
click=
"Stopinterview(item.id)"
v-if=
"item.flowStatus == 'ARRIVED'"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0;cursor:pointer"
@
click=
"OPPeninterview(item.id, item.flowStatus)"
v-if=
"item.flowStatus == 'END'"
>
重启面试
</span>
</p>
<p
class=
"nowstatus"
style=
"margin-top:8px;color:Grey"
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'OPTION'"
>
备选
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_SEE'"
>
准备约面
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'HAS_SEE'"
>
已邀约
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'SEE_FAIL'"
>
邀约失败
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'INTERVIEW_FAIL'"
>
面试淘汰
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_SENT_OFFER'"
>
待offer
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_ENTRY'"
>
待入职
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'HAS_ENTRY'"
>
已入职
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'NO_ENTRY'"
>
未入职
</span
>
<span
style=
"margin:0 20px 0 20px;color:red"
v-if=
"item.flowStatus == 'END'"
>
终止面试
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'PASS'"
>
PASS
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'HAS_SENT_OFFER'"
>
已发offer
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_RESULT'"
>
面试结果待定
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'ARRIVED'"
>
已到达
</span
>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'OPTION'"
>
备选
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_SEE'"
>
准备约面
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'HAS_SEE'"
>
已邀约
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'SEE_FAIL'"
>
邀约失败
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'INTERVIEW_FAIL'"
>
面试淘汰
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_SENT_OFFER'"
>
待offer
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_ENTRY'"
>
待入职
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'HAS_ENTRY'"
>
已入职
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'NO_ENTRY'"
>
未入职
</span>
<span
style=
"margin:0 20px 0 20px;color:red"
v-if=
"item.flowStatus == 'END'"
>
终止面试
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'PASS'"
>
PASS
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'HAS_SENT_OFFER'"
>
已发offer
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'TO_RESULT'"
>
面试结果待定
</span>
<span
style=
"margin:0 20px 0 20px"
v-if=
"item.flowStatus == 'ARRIVED'"
>
已到达
</span>
<span
v-show=
"item.flowStatus !== 'END'"
>
<select
style=
"border:0;margin-right:10px;float:right;cursor:pointer"
@
change=
"selectchangeElement($event, item.id)"
v-model=
"statusValue"
>
<select
style=
"border:0;margin-right:10px;float:right;cursor:pointer"
@
change=
"selectchangeElement($event, item.id)"
v-model=
"statusValue"
>
<option
value=
"0"
style=
"color:#2d8cf0"
>
变更状态 ∨
</option>
<option
value=
"1"
style=
"color:#2d8cf0"
>
已邀约
</option>
<option
value=
"3"
style=
"color:#2d8cf0"
>
邀约失败
</option>
...
...
@@ -240,26 +75,17 @@
<option
value=
"9"
style=
"color:#2d8cf0"
>
已入职
</option>
</select>
</span>
<span
v-show=
"item.flowStatus == 'END'"
style=
"float:right;margin-right:10px;"
>
<span
v-show=
"item.flowStatus == 'END'"
style=
"float:right;margin-right:10px;"
>
变更状态 ∨
</span>
</p>
</div>
<div
class=
"contentRecord"
style=
"text-align:center"
>
<p
style=
"margin-top:3px"
>
<span
style=
"color:#2d8cf0;cursor:pointer"
@
click=
"RecordSEE(item.id, item.ownerName)"
>
操作记录
</span
>
<span
style=
"color:#2d8cf0;cursor:pointer"
@
click=
"RecordSEE(item.id, item.ownerName)"
>
操作记录
</span>
</p>
<p
style=
"font-size:12px;color:Grey"
>
最后操作人|
<span
style=
"margin-left:8px;text-align:center"
>
{{
item
.
d
}}
</span>
最后操作人|
<span
style=
"margin-left:8px;text-align:center"
>
{{
item
.
d
}}
</span>
</p>
<p
style=
"color:Grey"
>
{{
item
.
modifyTime
}}
</p>
</div>
...
...
@@ -281,12 +107,7 @@
<div
class=
"interview-right"
>
<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()"
/>
<Input
placeholder=
"请输入关键词"
style=
"width:80%"
v-model=
"keywords"
@
keyup.enter.native=
"Sousuo()"
/>
</FormItem>
<FormItem
label=
"学历:"
class=
"Education2"
>
<span
...
...
@@ -301,18 +122,8 @@
>
</FormItem>
<FormItem
label=
"邀约人:"
style=
"margin-top:20px"
>
<Select
style=
"width:80%"
placeholder=
"请选择"
:label-in-value=
"true"
@
on-change=
"selectinterviewElement2"
>
<Option
v-for=
"(item, index) in Inviter"
:key=
"index"
:value=
"index"
>
{{
item
}}
</Option
>
<Select
style=
"width:80%"
placeholder=
"请选择"
:label-in-value=
"true"
@
on-change=
"selectinterviewElement2"
>
<Option
v-for=
"(item, index) in Inviter"
:key=
"index"
:value=
"index"
>
{{
item
}}
</Option>
</Select>
</FormItem>
<FormItem
label=
"面试官:"
style=
"margin-top:20px"
>
...
...
@@ -327,207 +138,70 @@
placeholder=
"请输入面试官全名"
clearable
>
<Option
v-for=
"(item, index) in options"
:key=
"index"
:value=
"item.name"
>
{{
item
.
name
}}
(
{{
item
.
email
}}
)
</Option
>
<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"
>
<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
>
</FormItem>
</Form>
<Button
type=
"primary"
size=
"small"
style=
"width:150px;margin-left:150px;font-size:15px"
@
click=
"Sousuo"
>
搜索
</Button
>
<Button
type=
"primary"
size=
"small"
style=
"width:150px;margin-left:150px;font-size:15px"
@
click=
"Sousuo"
>
搜索
</Button>
</div>
<!-- 操作记录弹出框 -->
<Modal
v-model=
"recordModal"
width=
"550px"
:footer-hide=
"true"
:closable=
"false"
>
<Modal
v-model=
"recordModal"
width=
"550px"
:footer-hide=
"true"
:closable=
"false"
>
<div>
<h2
style=
"text-align: center;color:black"
>
操作记录
</h2>
<h2
style=
"text-align: center;color:#999999;margin-top:10px"
>
候选人:
{{
toseename
}}
</h2>
<h2
style=
"text-align: center;color:#999999;margin-top:10px"
>
候选人:
{{
toseename
}}
</h2>
<div
v-for=
"(item, index) in recordList"
:key=
"index"
>
<p
style=
"margin-top:30px;"
class=
"Recode"
>
<span
style=
"display:inline-block;width:70px;margin-left:15px;"
>
{{
item
.
approveUserName
}}
</span>
<span
style=
"display:inline-block;width:140px"
>
{{
item
.
dateTime
}}
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'INTERVIEW_OK'"
>
面试合适
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'INTERVIEW_FAIL'"
>
面试淘汰
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'END'"
>
终止面试
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'SEE_FAIL'"
>
约面失败
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'NO_ENTRY'"
>
未入职
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_SEE'"
>
准备约面
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'HAS_SEE'"
>
已邀约
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'OPTION'"
>
备选
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_SENT_OFFER'"
>
待Offer
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'HAS_SENT_OFFER'"
>
已发offer
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_ENTRY'"
>
待入职
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'HAS_ENTRY'"
>
已入职
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'PASS'"
>
PASS
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_DO'"
>
待处理
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'RESET'"
>
重启面试
</span
>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'ARRIVED'"
>
已到达
</span
>
<span
style=
"display:inline-block;width:70px;margin-left:15px;"
>
{{
item
.
approveUserName
}}
</span>
<span
style=
"display:inline-block;width:140px"
>
{{
item
.
dateTime
}}
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'INTERVIEW_OK'"
>
面试合适
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'INTERVIEW_FAIL'"
>
面试淘汰
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'END'"
>
终止面试
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'SEE_FAIL'"
>
约面失败
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'NO_ENTRY'"
>
未入职
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_SEE'"
>
准备约面
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'HAS_SEE'"
>
已邀约
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'OPTION'"
>
备选
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_SENT_OFFER'"
>
待Offer
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'HAS_SENT_OFFER'"
>
已发offer
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_ENTRY'"
>
待入职
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'HAS_ENTRY'"
>
已入职
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'PASS'"
>
PASS
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'TO_DO'"
>
待处理
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'RESET'"
>
重启面试
</span>
<span
style=
"color:#0092FF;display:inline-block;width:70px;"
v-if=
"item.previousState == 'ARRIVED'"
>
已到达
</span>
<span
style=
"display:inline-block;width:50px;"
>
变更为
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'INTERVIEW_OK'"
>
面试合适
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'INTERVIEW_FAIL'"
>
面试淘汰
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'END'"
>
终止面试
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'SEE_FAIL'"
>
约面失败
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'NO_ENTRY'"
>
未入职
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_SEE'"
>
准备约面
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'HAS_SEE'"
>
已邀约
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'OPTION'"
>
备选
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_SENT_OFFER'"
>
待Offer
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'HAS_SENT_OFFER'"
>
已发offer
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_ENTRY'"
>
待入职
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'HAS_ENTRY'"
>
已入职
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'PASS'"
>
PASS
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_DO'"
>
待处理
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'RESET'"
>
重启面试
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'ARRIVED'"
>
已到达
</span
>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'INTERVIEW_OK'"
>
面试合适
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'INTERVIEW_FAIL'"
>
面试淘汰
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'END'"
>
终止面试
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'SEE_FAIL'"
>
约面失败
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'NO_ENTRY'"
>
未入职
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_SEE'"
>
准备约面
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'HAS_SEE'"
>
已邀约
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'OPTION'"
>
备选
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_SENT_OFFER'"
>
待Offer
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'HAS_SENT_OFFER'"
>
已发offer
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_ENTRY'"
>
待入职
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'HAS_ENTRY'"
>
已入职
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'PASS'"
>
PASS
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'TO_DO'"
>
待处理
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'RESET'"
>
重启面试
</span>
<span
style=
"color:#0092FF"
v-if=
"item.afterState == 'ARRIVED'"
>
已到达
</span>
</p>
</div>
</div>
<div
style=
"height:30px;width:100%;text-align:center;margin-top:30px"
>
<Button
type=
"primary"
size=
"small"
@
click=
"recordModal = false"
>
关闭
</Button
>
<Button
type=
"primary"
size=
"small"
@
click=
"recordModal = false"
>
关闭
</Button>
</div>
</Modal>
<!-- 更改面试信息弹出框 -->
<Modal
v-model=
"modal2"
:closable=
"false"
width=
"400px"
>
<h3
style=
"text-align:center"
>
更改约面信息
</h3>
<Form
:label-width=
"80"
ref=
"formInline"
:rules=
"ruleInline"
:model=
"formInline"
>
<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>
...
...
@@ -544,22 +218,8 @@
></DatePicker>
</FormItem>
<FormItem
label=
"面试官"
style=
"margin-top:20px"
prop=
"UpdateVIEW"
>
<Select
v-model=
"formInline.UpdateVIEW"
filterable
style=
"width:100%;"
remote
:remote-method=
"remoteMethod"
:loading=
"loading1"
placeholder=
"请输入面试官全名"
clearable
>
<Option
v-for=
"(item, index) in options"
:key=
"index"
:value=
"item.name"
>
{{
item
.
name
}}
(
{{
item
.
email
}}
)
</Option
>
<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>
...
...
@@ -580,17 +240,9 @@
<!-- 重启面试弹出框 -->
<Modal
v-model=
"modal4"
:closable=
"false"
width=
"240px"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<p
style=
"text-align:center"
>
终止面试时的简历状态为:
{{
OPPeninterviewSTA
}}
,
<br
/>
请选择重启后的状态
</p>
<p
style=
"text-align:center"
>
终止面试时的简历状态为:
{{
OPPeninterviewSTA
}}
,
<br
/>
请选择重启后的状态
</p>
<div
style=
"text-align:center;margin-top:15px;"
>
<select
name=
"a"
id=
"333333"
@
change=
"selectFnelement($event)"
style=
"text-align:center;margin-top:15px;display:inline-block"
>
<select
name=
"a"
id=
"333333"
@
change=
"selectFnelement($event)"
style=
"text-align:center;margin-top:15px;display:inline-block"
>
<option
value=
"1"
>
待处理 ∨
</option>
<option
value=
"2"
>
Pass
</option>
<option
value=
"3"
>
备选
</option>
...
...
@@ -610,7 +262,7 @@
</div>
</
template
>
<
script
>
import
moment
from
"
moment
"
;
import
moment
from
'
moment
'
;
import
{
changeinterviewMassage
,
SerchList
,
...
...
@@ -622,117 +274,111 @@ import {
recodeLIST
,
changestatus
,
seedetail
,
formstatus
}
from
"
../../api/interview.server.js
"
;
import
{
findCompanyEmailByKey
}
from
"
../../api/resume.server.js
"
;
formstatus
,
}
from
'
../../api/interview.server.js
'
;
import
{
findCompanyEmailByKey
}
from
'
../../api/resume.server.js
'
;
export
default
{
data
()
{
return
{
pageT
:
""
,
statusValue
:
"
0
"
,
pageT
:
''
,
statusValue
:
'
0
'
,
ruleInline
:
{
UpdateOWER
:
[
{
required
:
true
,
message
:
"
邀约人不能为空
"
,
trigger
:
"
blur
"
}
],
UpdateTIME
:
[
{
required
:
true
,
message
:
"
面试时间不能为空
"
,
trigger
:
"
date
"
}
],
UpdateVIEW
:
[
{
required
:
true
,
message
:
"
面试官不能为空
"
,
trigger
:
"
blur
"
}
]
UpdateOWER
:
[{
required
:
true
,
message
:
'
邀约人不能为空
'
,
trigger
:
'
blur
'
}],
UpdateTIME
:
[{
required
:
true
,
message
:
'
面试时间不能为空
'
,
trigger
:
'
date
'
}],
UpdateVIEW
:
[{
required
:
true
,
message
:
'
面试官不能为空
'
,
trigger
:
'
blur
'
}],
},
formInline
:
{
UpdateOWER
:
""
,
UpdateTIME
:
""
,
UpdateVIEW
:
""
UpdateOWER
:
''
,
UpdateTIME
:
''
,
UpdateVIEW
:
''
,
},
recordModal
:
false
,
modal2
:
false
,
modal3
:
false
,
modal4
:
false
,
modal5
:
false
,
interdeTailSta
:
""
,
changestatuss
:
""
,
interdeTailSta
:
''
,
changestatuss
:
''
,
spinShow
:
true
,
Ishow
:
[],
aaaaa
:
""
,
detailID
:
""
,
aaaaa
:
''
,
detailID
:
''
,
nowstate
:
[
{
value
:
"
已邀约
"
,
label
:
"
已邀约
"
},
{
value
:
"
邀约失败
"
,
label
:
"
邀约失败
"
},
{
value
:
"
面试淘汰
"
,
label
:
"
面试淘汰
"
},
{
value
:
"
待offer
"
,
label
:
"
待offer
"
},
{
value
:
"
已发offer
"
,
label
:
"
已发offer
"
},
{
value
:
"
待入职
"
,
label
:
"
待入职
"
},
{
value
:
"
未入职
"
,
label
:
"
未入职
"
},
{
value
:
"
已入职
"
,
label
:
"
已入职
"
}
{
value
:
'
已邀约
'
,
label
:
'
已邀约
'
},
{
value
:
'
邀约失败
'
,
label
:
'
邀约失败
'
},
{
value
:
'
面试淘汰
'
,
label
:
'
面试淘汰
'
},
{
value
:
'
待offer
'
,
label
:
'
待offer
'
},
{
value
:
'
已发offer
'
,
label
:
'
已发offer
'
},
{
value
:
'
待入职
'
,
label
:
'
待入职
'
},
{
value
:
'
未入职
'
,
label
:
'
未入职
'
},
{
value
:
'
已入职
'
,
label
:
'
已入职
'
},
],
keywords
:
""
,
keywords
:
''
,
recordList
:
[],
oppenInterviewStatus
:
"
TO_DO
"
,
oppenInterviewID
:
""
,
OPPeninterviewSTA
:
""
,
toseename
:
""
,
oppenInterviewStatus
:
'
TO_DO
'
,
oppenInterviewID
:
''
,
OPPeninterviewSTA
:
''
,
toseename
:
''
,
clickIndex1
:
0
,
clickIndex2
:
0
,
clickIndex3
:
0
,
// UpdateOWER:'',
// UpdateTIME:'',
// UpdateVIEW:'',
UpdateID
:
""
,
UpdateID
:
''
,
options3
:
{
disabledDate
(
date
)
{
return
date
&&
date
.
valueOf
()
<
Date
.
now
()
-
3600
*
24
*
1000
;
}
}
,
},
Interviewer
:
[],
Inviter
:
[],
stopinterviewID
:
""
,
stopinterviewID
:
''
,
Interviewoperation
:
0
,
UpdateOWERNEW
:
""
,
UpdateTIMENEW
:
""
,
UpdateVIEWNEW
:
""
,
highestDegreeNum
:
""
,
emailName
:
""
,
UpdateOWERNEW
:
''
,
UpdateTIMENEW
:
''
,
UpdateVIEWNEW
:
''
,
highestDegreeNum
:
''
,
emailName
:
''
,
flowStatusList
:
[],
inviterName
:
""
,
// 邀约人
interviewerName
:
""
,
// 面试官
changestatusSTATUS
:
""
,
inviterName
:
''
,
// 邀约人
interviewerName
:
''
,
// 面试官
changestatusSTATUS
:
''
,
pageIndex
:
1
,
pageSize
:
30
,
totalSize
:
null
,
searchInfo
:
{
pageSize
:
30
,
pageIndex
:
1
,
STA
:
[]
STA
:
[]
,
},
Education2
:
[
{
Num2
:
""
,
status2
:
"
不限
"
},
{
Num2
:
"
0
"
,
status2
:
"
专科以下
"
},
{
Num2
:
"
1
"
,
status2
:
"
专科及以上
"
},
{
Num2
:
"
2
"
,
status2
:
"
本科及以上
"
},
{
Num2
:
"
3
"
,
status2
:
"
硕士及以上
"
},
{
Num2
:
"
4
"
,
status2
:
"
博士及以上
"
},
{
Num2
:
"
99
"
,
status2
:
"
985/211
"
}
{
Num2
:
''
,
status2
:
'
不限
'
},
{
Num2
:
'
0
'
,
status2
:
'
专科以下
'
},
{
Num2
:
'
1
'
,
status2
:
'
专科及以上
'
},
{
Num2
:
'
2
'
,
status2
:
'
本科及以上
'
},
{
Num2
:
'
3
'
,
status2
:
'
硕士及以上
'
},
{
Num2
:
'
4
'
,
status2
:
'
博士及以上
'
},
{
Num2
:
'
99
'
,
status2
:
'
985/211
'
},
],
state
:
[
{
Num3
:
[],
status3
:
"
不限
"
,
sta
:
true
},
{
Num3
:
"
HAS_SEE
"
,
status3
:
"
已邀约
"
,
sta
:
false
},
{
Num3
:
"
SEE_FAIL
"
,
status3
:
"
邀约失败
"
,
sta
:
false
},
{
Num3
:
"
INTERVIEW_FAIL
"
,
status3
:
"
面试淘汰
"
,
sta
:
false
},
{
Num3
:
"
TO_SENT_OFFER
"
,
status3
:
"
待Offer
"
,
sta
:
false
},
{
Num3
:
"
HAS_SENT_OFFER
"
,
status3
:
"
已发offer
"
,
sta
:
false
},
{
Num3
:
"
HAS_ENTRY
"
,
status3
:
"
已入职
"
,
sta
:
false
},
{
Num3
:
"
NO_ENTRY
"
,
status3
:
"
未入职
"
,
sta
:
false
},
{
Num3
:
"
END
"
,
status3
:
"
终止面试
"
,
sta
:
false
}
{
Num3
:
[],
status3
:
'
不限
'
,
sta
:
true
},
{
Num3
:
'
HAS_SEE
'
,
status3
:
'
已邀约
'
,
sta
:
false
},
{
Num3
:
'
SEE_FAIL
'
,
status3
:
'
邀约失败
'
,
sta
:
false
},
{
Num3
:
'
INTERVIEW_FAIL
'
,
status3
:
'
面试淘汰
'
,
sta
:
false
},
{
Num3
:
'
TO_SENT_OFFER
'
,
status3
:
'
待Offer
'
,
sta
:
false
},
{
Num3
:
'
HAS_SENT_OFFER
'
,
status3
:
'
已发offer
'
,
sta
:
false
},
{
Num3
:
'
HAS_ENTRY
'
,
status3
:
'
已入职
'
,
sta
:
false
},
{
Num3
:
'
NO_ENTRY
'
,
status3
:
'
未入职
'
,
sta
:
false
},
{
Num3
:
'
END
'
,
status3
:
'
终止面试
'
,
sta
:
false
},
],
OPtionData
:
[{
value
:
"
0
"
,
label
:
"
面试淘汰
"
}],
activeName
:
""
,
OPtionData
:
[{
value
:
'
0
'
,
label
:
'
面试淘汰
'
}],
activeName
:
''
,
Essentialinformation
:
[],
serchData
:
[],
serchData2
:
[],
options
:
[],
loading1
:
false
loading1
:
false
,
};
},
methods
:
{
...
...
@@ -747,7 +393,7 @@ export default {
this
.
toseename
=
sname
;
this
.
recordModal
=
true
;
const
parmars
=
{
resumeId
:
RID
resumeId
:
RID
,
};
recodeLIST
(
parmars
).
then
(
res
=>
{
this
.
ownerName
=
res
.
data
.
body
.
ownerName
;
...
...
@@ -763,10 +409,7 @@ export default {
},
// 更改面试信息弹出框
updateInterview
(
InterID
,
InterOWOR
,
InterTime
,
InterVIEW
)
{
(
this
.
formInline
.
UpdateOWER
=
InterVIEW
),
(
this
.
formInline
.
UpdateVIEW
=
InterOWOR
),
(
this
.
formInline
.
UpdateTIME
=
InterTime
),
(
this
.
UpdateID
=
InterID
);
(
this
.
formInline
.
UpdateOWER
=
InterVIEW
),
(
this
.
formInline
.
UpdateVIEW
=
InterOWOR
),
(
this
.
formInline
.
UpdateTIME
=
InterTime
),
(
this
.
UpdateID
=
InterID
);
this
.
modal2
=
true
;
},
selectTime
(
b
)
{
...
...
@@ -786,7 +429,7 @@ export default {
OPPeninterview
(
tid
,
sta4
)
{
this
.
oppenInterviewID
=
tid
;
const
parmars
=
{
resumeId
:
tid
resumeId
:
tid
,
};
formstatus
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
...
...
@@ -799,10 +442,10 @@ export default {
UpdateStatus
(
LLL
)
{
const
STATUS
=
LLL
;
if
(
this
.
STATUS
==
"
终止面试
"
)
{
if
(
this
.
STATUS
==
'
终止面试
'
)
{
this
.
modal3
=
true
;
}
if
(
this
.
STATUS
==
"
重启面试
"
)
{
if
(
this
.
STATUS
==
'
重启面试
'
)
{
this
.
modal4
=
true
;
}
},
...
...
@@ -811,26 +454,22 @@ export default {
const
parmars
=
{
resumeId
:
this
.
UpdateID
,
inviterName
:
this
.
formInline
.
UpdateOWER
,
seeTime
:
moment
(
this
.
formInline
.
UpdateTIME
).
format
(
"
YYYY-MM-DD HH:mm
"
),
seeTime
:
moment
(
this
.
formInline
.
UpdateTIME
).
format
(
'
YYYY-MM-DD HH:mm
'
),
interviewerName
:
this
.
formInline
.
UpdateVIEW
,
email
:
this
.
emailName
email
:
this
.
emailName
,
};
if
(
this
.
formInline
.
UpdateOWER
==
""
||
this
.
formInline
.
UpdateTIME
==
""
||
this
.
formInline
.
UpdateVIEW
==
""
)
{
if
(
this
.
formInline
.
UpdateOWER
==
''
||
this
.
formInline
.
UpdateTIME
==
''
||
this
.
formInline
.
UpdateVIEW
==
''
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写完整的约面信息
"
title
:
'
提示
'
,
desc
:
'
请您填写完整的约面信息
'
,
});
return
;
}
changeinterviewMassage
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
formInline
.
UpdateTIME
==
""
;
this
.
formInline
.
UpdateVIEW
==
""
;
this
.
formInline
.
UpdateOWER
==
""
;
this
.
formInline
.
UpdateTIME
==
''
;
this
.
formInline
.
UpdateVIEW
==
''
;
this
.
formInline
.
UpdateOWER
==
''
;
this
.
modal2
=
false
;
this
.
Sousuo
(
this
.
pageT
);
}
...
...
@@ -838,19 +477,19 @@ export default {
},
// 查询面试信息
serchListInterview
(
page
,
status
)
{
page
=
typeof
page
===
"
number
"
?
page
:
1
;
page
=
typeof
page
===
'
number
'
?
page
:
1
;
this
.
searchInfo
.
pageIndex
=
page
;
this
.
pageIndex
=
page
;
const
parmars
=
{
pageSize
:
this
.
searchInfo
.
pageSize
,
pageIndex
:
this
.
searchInfo
.
pageIndex
,
parameter
:
{
keywordString
:
""
,
highestDegreeNum
:
""
,
keywordString
:
''
,
highestDegreeNum
:
''
,
flowStatusList
:
[],
interviewerName
:
""
,
inviterName
:
""
}
interviewerName
:
''
,
inviterName
:
''
,
}
,
};
SerchList
(
parmars
,
status
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
...
...
@@ -862,8 +501,7 @@ export default {
item
.
interviewerName
=
item
.
interviewerName
;
item
.
inviterName
=
item
.
inviterName
;
item
.
modifier
=
item
.
modifier
;
item
.
c
=
item
.
modifier
==
""
?
item
.
modifier
:
item
.
modifier
.
split
(
"
_
"
);
item
.
c
=
item
.
modifier
==
''
?
item
.
modifier
:
item
.
modifier
.
split
(
'
_
'
);
item
.
d
=
item
.
c
[
0
];
item
.
modifyTime
=
item
.
modifyTime
;
item
.
ownerExpectTitles
=
item
.
ownerExpectTitles
;
...
...
@@ -880,7 +518,7 @@ export default {
SerchlistinterviewList
()
{
Serchinterviewor
().
then
(
res
=>
{
this
.
Interviewer
=
res
.
data
.
body
;
this
.
Interviewer
.
unshift
(
"
不限
"
);
this
.
Interviewer
.
unshift
(
'
不限
'
);
});
},
// 邀约人查询
...
...
@@ -890,7 +528,7 @@ export default {
return
;
}
this
.
Inviter
=
res
.
data
.
body
;
this
.
Inviter
.
unshift
(
"
不限
"
);
this
.
Inviter
.
unshift
(
'
不限
'
);
});
},
// 新增约面信息
...
...
@@ -899,11 +537,11 @@ export default {
resumeId
:
this
.
UpdateOWERNEW
,
inviterName
:
this
.
UpdateTIMENEW
,
interviewerName
:
this
.
UpdateVIEWNEW
,
seeTime
:
this
.
UpdateTIMENEW
seeTime
:
this
.
UpdateTIMENEW
,
};
NewAddInterview
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Message
.
success
(
"
新增约面信息成功
"
);
this
.
$Message
.
success
(
'
新增约面信息成功
'
);
}
});
},
...
...
@@ -919,108 +557,106 @@ export default {
// 操作重启时选择的状态
selectFnelement
(
e
)
{
if
(
e
.
target
.
value
==
1
)
{
this
.
oppenInterviewStatus
=
"
TO_DO
"
;
this
.
oppenInterviewStatus
=
'
TO_DO
'
;
}
if
(
e
.
target
.
value
==
2
)
{
this
.
oppenInterviewStatus
=
"
PASS
"
;
this
.
oppenInterviewStatus
=
'
PASS
'
;
}
if
(
e
.
target
.
value
==
3
)
{
this
.
oppenInterviewStatus
=
"
OPTION
"
;
this
.
oppenInterviewStatus
=
'
OPTION
'
;
}
if
(
e
.
target
.
value
==
4
)
{
this
.
oppenInterviewStatus
=
"
OPTION
"
;
this
.
oppenInterviewStatus
=
'
OPTION
'
;
}
if
(
e
.
target
.
value
==
5
)
{
this
.
oppenInterviewStatus
=
"
HAS_SEE
"
;
this
.
oppenInterviewStatus
=
'
HAS_SEE
'
;
}
if
(
e
.
target
.
value
==
6
)
{
this
.
oppenInterviewStatus
=
"
SEE_FAIL
"
;
this
.
oppenInterviewStatus
=
'
SEE_FAIL
'
;
}
if
(
e
.
target
.
value
==
10
)
{
this
.
oppenInterviewStatus
=
"
INTERVIEW_FAIL
"
;
this
.
oppenInterviewStatus
=
'
INTERVIEW_FAIL
'
;
}
if
(
e
.
target
.
value
==
11
)
{
this
.
oppenInterviewStatus
=
"
TO_SENT_OFFER
"
;
this
.
oppenInterviewStatus
=
'
TO_SENT_OFFER
'
;
}
if
(
e
.
target
.
value
==
12
)
{
this
.
oppenInterviewStatus
=
"
HAS_SENT_OFFER
"
;
this
.
oppenInterviewStatus
=
'
HAS_SENT_OFFER
'
;
}
if
(
e
.
target
.
value
==
13
)
{
this
.
oppenInterviewStatus
=
"
TO_ENTRY
"
;
this
.
oppenInterviewStatus
=
'
TO_ENTRY
'
;
}
},
// 重启面试
OPPinterview
()
{
oppenInterview
(
this
.
oppenInterviewID
,
this
.
oppenInterviewStatus
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
已成功重启流程
"
});
this
.
serchListInterview
();
}
oppenInterview
(
this
.
oppenInterviewID
,
this
.
oppenInterviewStatus
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
'
提示
'
,
desc
:
'
已成功重启流程
'
,
});
this
.
serchListInterview
();
}
);
}
);
this
.
modal4
=
false
;
},
// 选择变更状态时的元素
selectchangeElement
(
e
,
SID
)
{
if
(
e
.
target
.
value
==
1
)
{
this
.
changestatusSTATUS
=
"
HAS_SEE
"
;
this
.
changestatusSTATUS
=
'
HAS_SEE
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
2
)
{
this
.
changestatusSTATUS
=
"
HAS_SEE
"
;
this
.
changestatusSTATUS
=
'
HAS_SEE
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
3
)
{
this
.
changestatusSTATUS
=
"
SEE_FAIL
"
;
this
.
changestatusSTATUS
=
'
SEE_FAIL
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
4
)
{
this
.
changestatusSTATUS
=
"
INTERVIEW_FAIL
"
;
this
.
changestatusSTATUS
=
'
INTERVIEW_FAIL
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
5
)
{
this
.
changestatusSTATUS
=
"
TO_SENT_OFFER
"
;
this
.
changestatusSTATUS
=
'
TO_SENT_OFFER
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
6
)
{
this
.
changestatusSTATUS
=
"
HAS_SENT_OFFER
"
;
this
.
changestatusSTATUS
=
'
HAS_SENT_OFFER
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
7
)
{
this
.
changestatusSTATUS
=
"
TO_ENTRY
"
;
this
.
changestatusSTATUS
=
'
TO_ENTRY
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
8
)
{
this
.
changestatusSTATUS
=
"
NO_ENTRY
"
;
this
.
changestatusSTATUS
=
'
NO_ENTRY
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
if
(
e
.
target
.
value
==
9
)
{
this
.
changestatusSTATUS
=
"
HAS_ENTRY
"
;
this
.
changestatusSTATUS
=
'
HAS_ENTRY
'
;
changestatus
(
SID
,
this
.
changestatusSTATUS
).
then
(
res
=>
{
this
.
serchListInterview
(
this
.
pageT
,
"
init
"
);
this
.
serchListInterview
(
this
.
pageT
,
'
init
'
);
});
}
this
.
statusValue
=
"
0
"
;
this
.
statusValue
=
'
0
'
;
},
selectElement3
(
tItem
,
Tindex
,
status3
,
sta3
)
{
sta3
=
!
sta3
;
...
...
@@ -1065,20 +701,20 @@ export default {
this
.
detailID
=
Tid
;
this
.
interdeTailSta
=
sta
;
const
newpage
=
this
.
$router
.
resolve
({
name
:
"
resumeDetail
"
,
name
:
'
resumeDetail
'
,
params
:
{},
query
:
{
id
:
this
.
DOWNID
,
noShowBtn
:
""
,
noShowBtn
:
''
,
ID
:
this
.
detailID
,
status
:
this
.
interdeTailSta
}
status
:
this
.
interdeTailSta
,
}
,
});
window
.
open
(
newpage
.
href
,
"
_blank
"
);
window
.
open
(
newpage
.
href
,
'
_blank
'
);
},
// 搜索
Sousuo
(
page
)
{
page
=
typeof
page
===
"
number
"
?
page
:
1
;
page
=
typeof
page
===
'
number
'
?
page
:
1
;
this
.
searchInfo
.
pageIndex
=
page
;
this
.
pageIndex
=
page
;
const
parmars
=
{
...
...
@@ -1090,8 +726,8 @@ export default {
flowStatusList
:
this
.
searchInfo
.
STA
,
interviewerName
:
this
.
interviewerName
,
inviterName
:
this
.
inviterName
,
handUpload
:
""
}
handUpload
:
''
,
}
,
};
SerchList
(
parmars
).
then
(
res
=>
{
const
Ishow
=
res
.
data
.
items
;
...
...
@@ -1104,8 +740,7 @@ export default {
item
.
interviewerName
=
item
.
interviewerName
;
item
.
inviterName
=
item
.
inviterName
;
item
.
modifier
=
item
.
modifier
;
item
.
c
=
item
.
modifier
==
""
?
item
.
modifier
:
item
.
modifier
.
split
(
"
_
"
);
item
.
c
=
item
.
modifier
==
''
?
item
.
modifier
:
item
.
modifier
.
split
(
'
_
'
);
item
.
d
=
item
.
c
[
0
];
item
.
modifyTime
=
item
.
modifyTime
;
item
.
ownerExpectTitles
=
item
.
ownerExpectTitles
;
...
...
@@ -1124,15 +759,15 @@ export default {
this
.
clickIndex1
=
Tindex
;
},
selectinterviewElement
(
e
)
{
if
(
e
.
value
==
"
不限
"
)
{
this
.
interviewerName
=
""
;
if
(
e
.
value
==
'
不限
'
)
{
this
.
interviewerName
=
''
;
}
else
{
this
.
interviewerName
=
e
.
value
;
}
},
selectinterviewElement2
(
e
)
{
if
(
e
.
label
==
"
不限
"
)
{
this
.
inviterName
=
""
;
if
(
e
.
label
==
'
不限
'
)
{
this
.
inviterName
=
''
;
}
else
{
this
.
inviterName
=
e
.
label
;
}
...
...
@@ -1148,12 +783,12 @@ export default {
this
.
Sousuo
();
},
remoteMethod
:
function
(
query
)
{
if
(
query
!==
""
)
{
if
(
query
!==
''
)
{
this
.
loading1
=
true
;
setTimeout
(()
=>
{
this
.
loading1
=
false
;
let
list
=
[];
query
=
query
.
split
(
"
(
"
)[
0
];
query
=
query
.
split
(
'
(
'
)[
0
];
findCompanyEmailByKey
(
query
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
list
=
res
;
...
...
@@ -1170,14 +805,14 @@ export default {
}
else
{
this
.
options
=
[];
}
}
}
,
},
mounted
()
{
this
.
serchListInterview
(
null
,
"
init
"
);
this
.
serchListInterview
(
null
,
'
init
'
);
// this.Serchlistinterview()
this
.
SerchInvitation
();
this
.
SerchlistinterviewList
();
}
}
,
};
</
script
>
<
style
>
...
...
src/page/login/login.vue
View file @
140cbb56
...
...
@@ -12,44 +12,20 @@
<h3>
登录
</h3>
</div>
<div
class=
"login_content"
>
<Form
ref=
"formInline"
:model=
"formInline"
:rules=
"ruleInline"
style=
"height:161px"
>
<Form
ref=
"formInline"
:model=
"formInline"
:rules=
"ruleInline"
style=
"height:161px"
>
<FormItem
prop=
"user"
style=
"height:60px"
>
<Input
type=
"text"
v-model=
"formInline.user"
placeholder=
"请输入企业邮箱账号"
class=
"wordStyle"
size=
"large"
>
<Input
type=
"text"
v-model=
"formInline.user"
placeholder=
"请输入企业邮箱账号"
class=
"wordStyle"
size=
"large"
>
<Icon
type=
"ios-person-outline"
slot=
"prepend"
></Icon>
</Input>
</FormItem>
<FormItem
prop=
"password"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"请输入密码"
class=
"wordStyle"
@
keyup.enter.native=
"login"
size=
"large"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"请输入密码"
class=
"wordStyle"
@
keyup.enter.native=
"login"
size=
"large"
>
<Icon
type=
"ios-lock-outline"
slot=
"prepend"
></Icon>
</Input>
<span
style=
"color:red;margin-top;5px"
v-show=
"noteconTime == true"
>
{{
notecontent
}}
</span
>
<span
style=
"color:red;margin-top;5px"
v-show=
"noteconTime == true"
>
{{
notecontent
}}
</span>
</FormItem>
</Form>
<Button
type=
"primary"
class=
"loginBtu"
@
click.prevent=
"login"
>
登录
</Button
>
<Button
type=
"primary"
class=
"loginBtu"
@
click.prevent=
"login"
>
登录
</Button>
</div>
<div
class=
"copy"
>
...
...
@@ -61,66 +37,66 @@
</div>
</
template
>
<
script
>
import
{
login
}
from
"
../../api/login.server.js
"
;
import
localstorage
from
"
../../service/localstorage.service.js
"
;
import
{
login
}
from
'
../../api/login.server.js
'
;
import
localstorage
from
'
../../service/localstorage.service.js
'
;
export
default
{
data
()
{
return
{
channelarr
:
[],
notecontent
:
""
,
notecontent
:
''
,
noteconTime
:
false
,
ISIDMIN
:
""
,
ISIDMIN
:
''
,
formInline
:
{
user
:
""
,
password
:
""
user
:
''
,
password
:
''
,
},
ruleInline
:
{
user
:
[
{
required
:
true
,
pattern
:
/
\w[
-
\w
.+
]
*@
([
A-Za-z0-9
][
-A-Za-z0-9
]
+
\.)
+
[
A-Za-z
]{2,14}
/
,
message
:
"
请输入正确的邮箱账号
"
,
trigger
:
"
blur
"
}
message
:
'
请输入正确的邮箱账号
'
,
trigger
:
'
blur
'
,
}
,
],
password
:
[
{
required
:
true
,
message
:
"
请输入正确的密码
"
,
trigger
:
"
blur
"
}
{
required
:
true
,
message
:
'
请输入正确的密码
'
,
trigger
:
'
blur
'
},
// { type: 'string', min: 4, message: '请输入正确的密码', trigger: 'blur' }
]
}
]
,
}
,
};
},
methods
:
{
handleSubmit
(
name
)
{
this
.
$refs
[
name
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
$Message
.
success
(
"
Success!
"
);
this
.
$Message
.
success
(
'
Success!
'
);
}
else
{
this
.
$Message
.
error
(
"
Fail!
"
);
this
.
$Message
.
error
(
'
Fail!
'
);
}
});
},
login
()
{
const
params
=
{
userCode
:
this
.
formInline
.
user
,
password
:
this
.
formInline
.
password
password
:
this
.
formInline
.
password
,
};
if
(
this
.
formInline
.
user
==
""
||
this
.
formInline
.
password
==
""
)
{
if
(
this
.
formInline
.
user
==
''
||
this
.
formInline
.
password
==
''
)
{
return
;
}
login
(
params
).
then
(
res
=>
{
if
(
res
.
data
.
body
.
code
==
"
100
"
)
{
if
(
res
.
data
.
body
.
code
==
'
100
'
)
{
this
.
$router
.
push
({
name
:
"
update
"
,
params
:
{
userCode
:
this
.
formInline
.
user
}
name
:
'
update
'
,
params
:
{
userCode
:
this
.
formInline
.
user
}
,
});
return
;
}
if
(
res
.
data
.
success
==
true
)
{
this
.
ISIDMIN
=
res
.
data
.
body
;
localstorage
.
set
(
"
token
"
,
res
.
data
.
body
.
token
);
this
.
$router
.
push
({
name
:
"
allResume
"
});
localstorage
.
set
(
"
isADMIN
"
,
JSON
.
stringify
(
this
.
ISIDMIN
));
localstorage
.
set
(
'
token
'
,
res
.
data
.
body
.
token
);
this
.
$router
.
push
({
name
:
'
allResume
'
});
localstorage
.
set
(
'
isADMIN
'
,
JSON
.
stringify
(
this
.
ISIDMIN
));
return
;
}
if
(
res
.
data
.
success
==
false
)
{
...
...
@@ -131,8 +107,8 @@ export default {
},
3000
);
}
});
}
}
}
,
}
,
};
</
script
>
<
style
scoped
>
...
...
src/page/login/update.vue
View file @
140cbb56
...
...
@@ -14,44 +14,19 @@
<div
class=
"updatePsd_content"
>
<Form
ref=
"formInline"
:model=
"formInline"
class=
"formcontent"
>
<FormItem
class=
"formitemcontent"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"Password"
class=
"wordStyle2"
@
on-change=
"verification"
size=
"large"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"Password"
class=
"wordStyle2"
@
on-change=
"verification"
size=
"large"
>
<Icon
type=
"ios-lock-outline"
slot=
"prepend"
></Icon>
</Input>
<span
style=
"color:Grey;margin-left:30px"
v-show=
"fistcontent"
>
4-20位且不得与默认密码相同
</span
>
<span
style=
"color:Grey;margin-left:30px"
v-show=
"fistcontent"
>
4-20位且不得与默认密码相同
</span>
</FormItem>
<FormItem
style=
"margin-top:-20px"
class=
"formitemcontent"
>
<Input
type=
"password"
v-model=
"formInline.passwordTwo"
placeholder=
"Password"
class=
"wordStyle2"
@
keyup.enter.native=
"loginT"
size=
"large"
>
<Input
type=
"password"
v-model=
"formInline.passwordTwo"
placeholder=
"Password"
class=
"wordStyle2"
@
keyup.enter.native=
"loginT"
size=
"large"
>
<Icon
type=
"ios-lock-outline"
slot=
"prepend"
></Icon>
</Input>
<span
style=
"color:Grey;margin-left:30px;color:red"
v-show=
"twocontent"
>
{{
twocontentmessage
}}
</span
>
<span
style=
"color:Grey;margin-left:30px;color:red"
v-show=
"twocontent"
>
{{
twocontentmessage
}}
</span>
</FormItem>
</Form>
<Button
type=
"primary"
style=
"height:40px;width:100%;border-radius: 5px;background:rgb(0, 146, 255);color:rgb(255,255,255);font-size:18px;margin-top:10px"
@
click=
"loginT"
>
登录
</Button
>
<Button
type=
"primary"
style=
"height:40px;width:100%;border-radius: 5px;background:rgb(0, 146, 255);color:rgb(255,255,255);font-size:18px;margin-top:10px"
@
click=
"loginT"
>
登录
</Button>
</div>
<div
class=
"copy"
>
<p>
量化派为你提供全程服务
</p>
...
...
@@ -62,29 +37,29 @@
</div>
</
template
>
<
script
>
import
{
updatePsd
}
from
"
../../api/login.server.js
"
;
import
{
updatePsd
}
from
'
../../api/login.server.js
'
;
export
default
{
data
()
{
return
{
formInline
:
{
passwordTwo
:
""
,
password
:
""
passwordTwo
:
''
,
password
:
''
,
},
fistcontent
:
true
,
twocontent
:
false
,
twocontentmessage
:
""
,
twocontentmessage
:
''
,
channelarr
:
[],
Massage
:
""
,
ISIDMIN
:
""
Massage
:
''
,
ISIDMIN
:
''
,
};
},
methods
:
{
handleSubmit
(
name
)
{
this
.
$refs
[
name
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
$Message
.
success
(
"
Success!
"
);
this
.
$Message
.
success
(
'
Success!
'
);
}
else
{
this
.
$Message
.
error
(
"
Fail!
"
);
this
.
$Message
.
error
(
'
Fail!
'
);
}
});
},
...
...
@@ -92,21 +67,18 @@ export default {
const
params
=
{
userCode
:
this
.
$route
.
params
.
userCode
,
password
:
this
.
formInline
.
password
,
confirmPassWord
:
this
.
formInline
.
passwordTwo
confirmPassWord
:
this
.
formInline
.
passwordTwo
,
};
if
(
this
.
formInline
.
passwordTwo
!==
this
.
formInline
.
password
)
{
this
.
twocontentmessage
=
"
输入密码不一致,请重新输入
"
;
this
.
twocontentmessage
=
'
输入密码不一致,请重新输入
'
;
this
.
twocontent
=
true
;
setTimeout
(()
=>
{
this
.
twocontent
=
false
;
},
3000
);
return
;
}
if
(
this
.
formInline
.
passwordTwo
.
length
<
4
||
this
.
formInline
.
password
.
length
<
4
)
{
this
.
twocontentmessage
=
"
请输入4-20位密码
"
;
if
(
this
.
formInline
.
passwordTwo
.
length
<
4
||
this
.
formInline
.
password
.
length
<
4
)
{
this
.
twocontentmessage
=
'
请输入4-20位密码
'
;
this
.
twocontent
=
true
;
setTimeout
(()
=>
{
this
.
twocontent
=
false
;
...
...
@@ -114,28 +86,28 @@ export default {
return
;
}
if
(
this
.
formInline
.
password
.
length
>
20
)
{
this
.
twocontentmessage
=
"
请输入4-20位密码
"
;
this
.
twocontentmessage
=
'
请输入4-20位密码
'
;
setTimeout
(()
=>
{
this
.
twocontent
=
false
;
},
3000
);
return
;
}
if
(
this
.
formInline
.
password
.
length
<
4
)
{
this
.
twocontentmessage
=
"
请输入4-20位密码
"
;
this
.
twocontentmessage
=
'
请输入4-20位密码
'
;
setTimeout
(()
=>
{
this
.
twocontent
=
false
;
},
3000
);
return
;
}
if
(
this
.
formInline
.
password
.
length
==
0
)
{
this
.
twocontentmessage
=
"
密码不能为空
"
;
this
.
twocontentmessage
=
'
密码不能为空
'
;
setTimeout
(()
=>
{
this
.
twocontent
=
false
;
},
3000
);
return
;
}
if
(
this
.
formInline
.
passwordTwo
.
length
==
0
)
{
this
.
twocontentmessage
=
"
请输入相同的确认密码
"
;
this
.
twocontentmessage
=
'
请输入相同的确认密码
'
;
setTimeout
(()
=>
{
this
.
twocontent
=
false
;
},
3000
);
...
...
@@ -144,9 +116,9 @@ export default {
updatePsd
(
params
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
ISIDMIN
=
res
.
data
.
body
;
localStorage
.
setItem
(
"
isADMIN
"
,
JSON
.
stringify
(
this
.
ISIDMIN
));
localStorage
.
setItem
(
"
token
"
,
res
.
data
.
body
.
token
);
this
.
$router
.
replace
({
name
:
"
allResume
"
});
localStorage
.
setItem
(
'
isADMIN
'
,
JSON
.
stringify
(
this
.
ISIDMIN
));
localStorage
.
setItem
(
'
token
'
,
res
.
data
.
body
.
token
);
this
.
$router
.
replace
({
name
:
'
allResume
'
});
}
if
(
res
.
data
.
success
==
false
)
{
this
.
Massage
=
res
.
data
.
body
.
message
;
...
...
@@ -160,7 +132,7 @@ export default {
},
verification
()
{
if
(
this
.
formInline
.
password
==
123456
)
{
this
.
twocontentmessage
=
"
输入密码与初始密码相同,请重新输入
"
;
this
.
twocontentmessage
=
'
输入密码与初始密码相同,请重新输入
'
;
setTimeout
(()
=>
{
this
.
twocontent
=
false
;
},
3000
);
...
...
@@ -168,7 +140,7 @@ export default {
if
(
this
.
formInline
.
password
.
length
==
0
)
{
this
.
fistcontent
=
true
;
}
if
(
this
.
formInline
.
password
==
""
)
{
if
(
this
.
formInline
.
password
==
''
)
{
this
.
fistcontent
=
true
;
}
if
(
this
.
formInline
.
password
.
length
<
4
)
{
...
...
@@ -180,8 +152,8 @@ export default {
if
(
this
.
formInline
.
password
.
length
>
20
)
{
this
.
fistcontent
=
true
;
}
}
}
}
,
}
,
};
</
script
>
<
style
scoped
>
...
...
src/page/resume/pdfdetail.vue
View file @
140cbb56
...
...
@@ -3,94 +3,52 @@
<div
class=
"personalInformation"
v-show=
"JSON.stringify(resume) !== '
{}'">
<p
class=
"detailTitel"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/>
</span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
基本信息
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
基本信息
</span>
</p>
<div
class=
"massageTitle"
>
<p>
<span
class=
"bassMassage"
>
姓名:
{{
resume
&&
resume
.
ownerName
}}
</span
>
<span
class=
"bassMassageRight"
>
年龄:
{{
resume
&&
resume
.
ownerAge
}}
岁
</span
>
<span
class=
"bassMassage"
>
姓名:
{{
resume
&&
resume
.
ownerName
}}
</span>
<span
class=
"bassMassageRight"
>
年龄:
{{
resume
&&
resume
.
ownerAge
}}
岁
</span>
</p>
<p>
<span
class=
"bassMassage"
>
联系电话:
{{
resume
&&
resume
.
ownerMobile
}}
</span
>
<span
class=
"bassMassageRight"
>
职位:
{{
resume
&&
resume
.
ownerExpectTitles
}}
</span
>
<span
class=
"bassMassage"
>
联系电话:
{{
resume
&&
resume
.
ownerMobile
}}
</span>
<span
class=
"bassMassageRight"
>
职位:
{{
resume
&&
resume
.
ownerExpectTitles
}}
</span>
</p>
<p>
<span
class=
"bassMassage"
>
电子邮箱:
{{
resume
&&
resume
.
email
}}
</span
>
<span
class=
"bassMassageRight"
>
学历:
{{
resume
&&
resume
.
ownerHighestDegree
}}
</span
>
<span
class=
"bassMassage"
>
电子邮箱:
{{
resume
&&
resume
.
email
}}
</span>
<span
class=
"bassMassageRight"
>
学历:
{{
resume
&&
resume
.
ownerHighestDegree
}}
</span>
</p>
<p>
<span
class=
"bassMassage"
>
所在地:
{{
resume
&&
resume
.
locationCity
}}
</span
>
<span
class=
"bassMassageRight"
>
经验:
{{
resume
&&
resume
.
workYearsOriginal
}}
年
</span
>
<span
class=
"bassMassage"
>
所在地:
{{
resume
&&
resume
.
locationCity
}}
</span>
<span
class=
"bassMassageRight"
>
经验:
{{
resume
&&
resume
.
workYearsOriginal
}}
年
</span>
</p>
<p>
<span
class=
"bassMassage"
>
求职状态:
{{
resume
&&
resume
.
statusMessage
}}
</span
>
<span
class=
"bassMassage"
>
求职状态:
{{
resume
&&
resume
.
statusMessage
}}
</span>
<span
class=
"bassMassageRight"
></span>
</p>
<p>
<span
class=
"bassMassage"
>
期望行业:
{{
resume
&&
resume
.
industries
}}
</span
>
<span
class=
"bassMassageRight"
>
期望薪资:
{{
resume
&&
resume
.
expectSalary
}}
</span
>
<span
class=
"bassMassage"
>
期望行业:
{{
resume
&&
resume
.
industries
}}
</span>
<span
class=
"bassMassageRight"
>
期望薪资:
{{
resume
&&
resume
.
expectSalary
}}
</span>
</p>
<p>
<span
class=
"bassMassage"
>
期望职位:
{{
resume
&&
resume
.
expectTitles
}}
</span
>
<span
class=
"bassMassageRight"
>
期望地区:
{{
resume
&&
resume
.
city
}}
</span
>
<span
class=
"bassMassage"
>
期望职位:
{{
resume
&&
resume
.
expectTitles
}}
</span>
<span
class=
"bassMassageRight"
>
期望地区:
{{
resume
&&
resume
.
city
}}
</span>
</p>
</div>
</div>
<div
class=
"workExperience"
v-show=
"roList.length !== 0"
>
<p
class=
"detailTitel"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png"
style=
"height:16px;width:23px;vertical-align: middle;margin-top:-4px"
/>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png"
style=
"height:16px;width:23px;vertical-align: middle;margin-top:-4px"
/>
</span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF;"
>
工作经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF;"
>
工作经历
</span>
</p>
<div
class=
"workExperience-detail"
v-for=
"(item, index) in roList"
:key=
"index"
>
<div
class=
"workExperience-detail"
v-for=
"(item, index) in roList"
:key=
"index"
>
<div
class=
"workExperience-top"
>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"margin-left:30px"
>
{{
item
.
startTime
}}
-
{{
item
.
endTime
}}
</span
>
<span
style=
"margin-left:30px"
>
{{
item
.
startTime
}}
-
{{
item
.
endTime
}}
</span>
<span
style=
"margin-left:18px"
><span
>
{{
item
.
company
}}
<span>
(
{{
item
.
workTime
}}
)
</span></span
...
...
@@ -102,9 +60,7 @@
</span>
</p>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"float:right;margin-right:30px"
>
{{
item
.
department
}}
</span>
<span
style=
"float:right;margin-right:30px"
>
{{
item
.
department
}}
</span>
</p>
</div>
<div
class=
"workExperience-bottom"
>
{{
item
.
desc
}}
</div>
...
...
@@ -113,27 +69,15 @@
<div
class=
"projectExperience"
v-show=
"rpList.length !== 0"
>
<p
class=
"detailTitel"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png"
style=
"height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png"
style=
"height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
项目经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
项目经历
</span>
</p>
<div
class=
"projectExperience-detail"
v-for=
"(item, index) in rpList"
:key=
"index"
>
<div
class=
"projectExperience-detail"
v-for=
"(item, index) in rpList"
:key=
"index"
>
<div
class=
"projectExperience-top"
>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span>
<span
style=
"margin-left:18px"
><span>
{{
item
.
name
}}
<span></span></span
></span>
...
...
@@ -147,28 +91,14 @@
</div>
<div
class=
"internshipExperience"
v-show=
"riList.length !== 0"
>
<p
class=
"detailTitel"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
实习经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
实习经历
</span>
</p>
<div
class=
"internshipExperience-detail"
v-for=
"(item, index) in riList"
:key=
"index"
>
<div
class=
"internshipExperience-detail"
v-for=
"(item, index) in riList"
:key=
"index"
>
<div
class=
"internshipExperience-top"
>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span>
<span
style=
"margin-left:18px"
><span>
{{
item
.
company
}}
<span></span></span
></span>
...
...
@@ -186,28 +116,14 @@
</div>
<div
class=
"educationalExperience"
v-show=
"reList.length !== 0"
>
<p
class=
"detailTitel"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
教育经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
教育经历
</span>
</p>
<div
class=
"educationalExperience-detail"
v-for=
"(item, index) in reList"
:key=
"index"
>
<div
class=
"educationalExperience-detail"
v-for=
"(item, index) in reList"
:key=
"index"
>
<div
class=
"educationalExperience-content"
>
<div
class=
"educationalExperience-left"
>
<p
style=
"line-height:25px;margin-top:20px"
>
{{
item
.
school
}}
((
{{
item
.
startYear
}}
.
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
.
{{
item
.
endMonth
}}
))
</p>
<p
style=
"line-height:25px;margin-top:20px"
>
{{
item
.
school
}}
((
{{
item
.
startYear
}}
.
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
.
{{
item
.
endMonth
}}
))
</p>
<p
style=
"margin-top:20px;"
>
专业:
{{
item
.
major
}}
</p>
</div>
<div
class=
"educationalExperience-right"
>
...
...
@@ -218,15 +134,9 @@
</div>
<div
class=
"Self-evaluation"
v-show=
"JSON.stringify(resume) !== '
{}'">
<p
class=
"detailTitel"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
自我评价
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
自我评价
</span>
</p>
<div
class=
"evaluation-content"
>
{{
resume
&&
resume
.
selfEvaluate
}}
...
...
@@ -235,9 +145,9 @@
</div>
</
template
>
<
script
>
import
{
seedetail
}
from
"
../../api/resume.server
"
;
import
localStorage
from
"
../../service/localstorage.service.js
"
;
import
{
sapi
}
from
"
../../config
"
;
import
{
seedetail
}
from
'
../../api/resume.server
'
;
import
localStorage
from
'
../../service/localstorage.service.js
'
;
import
{
sapi
}
from
'
../../config
'
;
export
default
{
data
()
{
return
{
...
...
@@ -246,18 +156,18 @@ export default {
roList
:
[],
rpList
:
[],
reList
:
[],
downresume
:
""
,
detialID
:
""
,
showBtn
:
""
downresume
:
''
,
detialID
:
''
,
showBtn
:
''
,
};
},
methods
:
{
getDETAIL
()
{
this
.
detialID
=
this
.
$route
.
query
.
ID
;
this
.
showBtn
=
this
.
$route
.
query
.
noShowBtn
;
const
token
=
this
.
$route
.
query
.
token
||
""
;
const
token
=
this
.
$route
.
query
.
token
||
''
;
const
parmars
=
{
uid
:
this
.
$route
.
query
.
id
uid
:
this
.
$route
.
query
.
id
,
// uid:"0646215721cc43ccb51ff3e979959e35"
};
seedetail
(
parmars
).
then
(
res
=>
{
...
...
@@ -267,11 +177,11 @@ export default {
this
.
rpList
=
res
.
data
.
body
.
rpList
;
this
.
reList
=
res
.
data
.
body
.
reList
;
});
}
}
,
},
mounted
()
{
this
.
getDETAIL
();
}
}
,
};
</
script
>
<
style
scoped
>
...
...
@@ -279,7 +189,7 @@ export default {
width
:
860px
;
margin
:
30px
auto
;
color
:
#000000
;
font-family
:
"\5FAE\8F6F\96C5\9ED1"
;
font-family
:
'\5FAE\8F6F\96C5\9ED1'
;
}
.personalInformation
{
width
:
860px
;
...
...
src/page/sweepCode/sweepCode.vue
View file @
140cbb56
...
...
@@ -4,49 +4,16 @@
<h3
style=
"margin-top:5px;font-size:0.35rem"
>
应聘登记表
</h3>
</div>
<div
class=
"sweepcode_content"
>
<Form
:label-width=
"120"
:model=
"formInline"
:rules=
"ruleInline"
ref=
"formInline"
class=
"fontsize"
label-position=
"left"
style=
"margin-left:3%"
>
<FormItem
label=
"邀约人"
prop=
"Inviter"
style=
"margin-top:10px;font-size:15px"
>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.Inviter"
size=
"large"
/>
<Form
:label-width=
"120"
:model=
"formInline"
:rules=
"ruleInline"
ref=
"formInline"
class=
"fontsize"
label-position=
"left"
style=
"margin-left:3%"
>
<FormItem
label=
"邀约人"
prop=
"Inviter"
style=
"margin-top:10px;font-size:15px"
>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.Inviter"
size=
"large"
/>
</FormItem>
<FormItem
label=
"邀约人手机"
style=
""
class=
"phone"
>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.InviterPhoneNumber"
size=
"large"
@
on-blur=
"jedugePhone"
/><br
/>
<span
style=
"position: absolute;top: 100%;left: 0;line-height: 1;padding-top: 6px;color:#ed4014;display:inline-block;height:30px;"
v-show=
"isV == true"
>
请输入正确的手机号码
</span
>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.InviterPhoneNumber"
size=
"large"
@
on-blur=
"jedugePhone"
/><br
/>
<span
style=
"position: absolute;top: 100%;left: 0;line-height: 1;padding-top: 6px;color:#ed4014;display:inline-block;height:30px;"
v-show=
"isV == true"
>
请输入正确的手机号码
</span>
</FormItem>
<FormItem
label=
"面试时间"
prop=
"time"
class=
"dateTime"
>
<Input
placeholder=
"请输入"
style=
"width:40%;"
v-model=
"formInline.date"
:readonly=
"true"
size=
"large"
/>
<Input
placeholder=
"请输入"
style=
"width:40%;"
v-model=
"formInline.date"
:readonly=
"true"
size=
"large"
/>
<TimePicker
type=
"time"
placeholder=
"请选择时间"
...
...
@@ -60,55 +27,28 @@
></TimePicker>
</FormItem>
<FormItem
label=
"应聘职位"
prop=
"position"
class=
"position"
>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.position"
size=
"large"
/>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.position"
size=
"large"
/>
</FormItem>
<FormItem
label=
"应聘来源"
prop=
"model1"
class=
"model1"
>
<Select
v-model=
"formInline.model1"
style=
"width:85%;"
size=
"large"
>
<Option
v-for=
"item in origen"
:value=
"item.value"
:key=
"item.value"
>
{{
item
.
label
}}
</Option
>
<Option
v-for=
"item in origen"
:value=
"item.value"
:key=
"item.value"
>
{{
item
.
label
}}
</Option>
</Select>
</FormItem>
<FormItem
label=
"姓名"
prop=
"name"
class=
"name"
>
<Input
placeholder=
"请与简历保持一致"
style=
"width:85%;"
v-model=
"formInline.name"
size=
"large"
/>
<Input
placeholder=
"请与简历保持一致"
style=
"width:85%;"
v-model=
"formInline.name"
size=
"large"
/>
</FormItem>
<FormItem
label=
"手机号码"
prop=
"phoneNUmber"
class=
"phoneNUmber"
>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.phoneNUmber"
size=
"large"
/>
<Input
placeholder=
"请输入"
style=
"width:85%;"
v-model=
"formInline.phoneNUmber"
size=
"large"
/>
</FormItem>
<FormItem
label=
"是否携带简历"
prop=
"model2"
class=
"model2"
>
<Select
v-model=
"formInline.model2"
style=
"width:85%;"
size=
"large"
>
<Option
v-for=
"item in isGET"
:value=
"item.value"
:key=
"item.value"
>
{{
item
.
label
}}
</Option
>
<Option
v-for=
"item in isGET"
:value=
"item.value"
:key=
"item.value"
>
{{
item
.
label
}}
</Option>
</Select>
</FormItem>
</Form>
</div>
<div
class=
"submission"
>
<Button
type=
"primary"
@
click=
"confirmSubmission"
:loading=
"loading"
>
提交
</Button
>
<Button
type=
"primary"
@
click=
"confirmSubmission"
:loading=
"loading"
>
提交
</Button>
</div>
<Modal
v-model=
"modal3"
width=
"200px"
:closable=
"false"
>
<div>
...
...
@@ -134,177 +74,147 @@
</div>
</
template
>
<
script
>
import
moment
from
"
moment
"
;
import
{
submitMassage
}
from
"
../../api/sweepCode.server.js
"
;
import
moment
from
'
moment
'
;
import
{
submitMassage
}
from
'
../../api/sweepCode.server.js
'
;
export
default
{
data
()
{
return
{
docmHeight
:
"
0
"
,
showHeight
:
"
0
"
,
docmHeight
:
'
0
'
,
showHeight
:
'
0
'
,
loading
:
false
,
hidshow
:
true
,
isResize
:
false
,
modal3
:
false
,
modal4
:
false
,
ruleInline
:
{
Inviter
:
[{
required
:
true
,
message
:
"
请输入邀约人
"
,
trigger
:
"
blur
"
}],
time
:
[
{
required
:
true
,
message
:
"
面试时间不能为空
"
,
trigger
:
"
date
"
}
],
Inviter
:
[{
required
:
true
,
message
:
'
请输入邀约人
'
,
trigger
:
'
blur
'
}],
time
:
[{
required
:
true
,
message
:
'
面试时间不能为空
'
,
trigger
:
'
date
'
}],
// InviterPhoneNumber: [
// { required: false, pattern:/^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
// ],
position
:
[
{
required
:
true
,
message
:
"
请输入应聘职位
"
,
trigger
:
"
blur
"
}
],
model1
:
[
{
required
:
true
,
message
:
"
请输入应聘来源
"
,
trigger
:
"
blur
"
}
],
name
:
[{
required
:
true
,
message
:
"
请输入姓名
"
,
trigger
:
"
blur
"
}],
position
:
[{
required
:
true
,
message
:
'
请输入应聘职位
'
,
trigger
:
'
blur
'
}],
model1
:
[{
required
:
true
,
message
:
'
请输入应聘来源
'
,
trigger
:
'
blur
'
}],
name
:
[{
required
:
true
,
message
:
'
请输入姓名
'
,
trigger
:
'
blur
'
}],
phoneNUmber
:
[
{
required
:
true
,
message
:
"
请输入正确的手机号码
"
,
trigger
:
"
blur
"
},
{
required
:
true
,
message
:
'
请输入正确的手机号码
'
,
trigger
:
'
blur
'
},
{
required
:
true
,
pattern
:
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
,
message
:
"
请输入正确的手机号
"
,
trigger
:
"
blur
"
}
message
:
'
请输入正确的手机号
'
,
trigger
:
'
blur
'
,
}
,
],
model2
:
[
{
required
:
true
,
message
:
"
请选择是否携带简历
"
,
trigger
:
"
blur
"
}
]
model2
:
[{
required
:
true
,
message
:
'
请选择是否携带简历
'
,
trigger
:
'
blur
'
}],
},
saleDate
:
""
,
saleDate
:
''
,
isV
:
false
,
options3
:
{
disabledDate
(
date
)
{
return
(
(
date
&&
date
.
valueOf
()
<
Date
.
now
()
-
3600
*
24
*
1000
)
||
date
.
valueOf
()
>
Date
.
now
()
);
}
return
(
date
&&
date
.
valueOf
()
<
Date
.
now
()
-
3600
*
24
*
1000
)
||
date
.
valueOf
()
>
Date
.
now
();
},
},
origen
:
[
{
value
:
"
智联招聘
"
,
label
:
"
智联招聘
"
value
:
'
智联招聘
'
,
label
:
'
智联招聘
'
,
},
{
value
:
"
51Job
"
,
label
:
"
51Job
"
value
:
'
51Job
'
,
label
:
'
51Job
'
,
},
{
value
:
"
boss直聘
"
,
label
:
"
boss直聘
"
value
:
'
boss直聘
'
,
label
:
'
boss直聘
'
,
},
{
value
:
"
拉勾网
"
,
label
:
"
拉勾网
"
value
:
'
拉勾网
'
,
label
:
'
拉勾网
'
,
},
{
value
:
"
内部推荐
"
,
label
:
"
内部推荐
"
value
:
'
内部推荐
'
,
label
:
'
内部推荐
'
,
},
{
value
:
"
猎聘网
"
,
label
:
"
猎聘网
"
value
:
'
猎聘网
'
,
label
:
'
猎聘网
'
,
},
{
value
:
"
其他
"
,
label
:
"
其他
"
}
value
:
'
其他
'
,
label
:
'
其他
'
,
}
,
],
isGET
:
[
{
value
:
"
是
"
,
label
:
"
是
"
value
:
'
是
'
,
label
:
'
是
'
,
},
{
value
:
"
否
"
,
label
:
"
否
"
}
value
:
'
否
'
,
label
:
'
否
'
,
}
,
],
formInline
:
{
model1
:
""
,
model2
:
""
,
Inviter
:
""
,
InviterPhoneNumber
:
""
,
date
:
""
,
time
:
""
,
position
:
""
,
phoneNUmber
:
""
,
name
:
""
model1
:
''
,
model2
:
''
,
Inviter
:
''
,
InviterPhoneNumber
:
''
,
date
:
''
,
time
:
''
,
position
:
''
,
phoneNUmber
:
''
,
name
:
''
,
},
isV
:
false
,
hh
:
[
"
01
"
,
"
02
"
,
"
03
"
,
"
04
"
,
"
05
"
,
"
06
"
,
"
07
"
,
"
08
"
,
"
09
"
,
"
10
"
,
"
11
"
,
"
12
"
],
mm
:
[
"
00
"
,
"
10
"
,
"
20
"
,
"
30
"
,
"
40
"
,
"
50
"
,
"
60
"
]
hh
:
[
'
01
'
,
'
02
'
,
'
03
'
,
'
04
'
,
'
05
'
,
'
06
'
,
'
07
'
,
'
08
'
,
'
09
'
,
'
10
'
,
'
11
'
,
'
12
'
],
mm
:
[
'
00
'
,
'
10
'
,
'
20
'
,
'
30
'
,
'
40
'
,
'
50
'
,
'
60
'
],
};
},
methods
:
{
// 确认提交
confirmSubmission
()
{
if
(
this
.
formInline
.
model1
==
""
||
this
.
formInline
.
model2
==
""
||
this
.
formInline
.
Inviter
==
""
||
this
.
formInline
.
date
==
""
||
this
.
formInline
.
time
===
""
||
this
.
formInline
.
position
==
""
||
this
.
formInline
.
phoneNUmber
==
""
||
this
.
formInline
.
name
==
""
this
.
formInline
.
model1
==
''
||
this
.
formInline
.
model2
==
''
||
this
.
formInline
.
Inviter
==
''
||
this
.
formInline
.
date
==
''
||
this
.
formInline
.
time
===
''
||
this
.
formInline
.
position
==
''
||
this
.
formInline
.
phoneNUmber
==
''
||
this
.
formInline
.
name
==
''
)
{
this
.
$Message
.
error
(
"
请填写完整的信息
"
);
this
.
$Message
.
error
(
'
请填写完整的信息
'
);
return
;
}
if
(
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
phoneNUmber
))
{
this
.
$Message
.
error
(
"
请输入正确的手机号
"
);
this
.
$Message
.
error
(
'
请输入正确的手机号
'
);
return
;
}
if
(
this
.
formInline
.
InviterPhoneNumber
!==
""
&&
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
InviterPhoneNumber
)
)
{
this
.
$Message
.
error
(
"
请输入正确的手机号
"
);
if
(
this
.
formInline
.
InviterPhoneNumber
!==
''
&&
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
InviterPhoneNumber
))
{
this
.
$Message
.
error
(
'
请输入正确的手机号
'
);
return
;
}
const
parmars
=
{
invitePerson
:
this
.
formInline
.
Inviter
,
inviterMobile
:
this
.
formInline
.
InviterPhoneNumber
,
dateTime
:
moment
(
this
.
formInline
.
date
).
format
(
"
YYYY-MM-DD
"
)
+
"
"
+
this
.
formInline
.
time
,
dateTime
:
moment
(
this
.
formInline
.
date
).
format
(
'
YYYY-MM-DD
'
)
+
'
'
+
this
.
formInline
.
time
,
interviewTitle
:
this
.
formInline
.
position
,
source
:
this
.
formInline
.
model1
,
name
:
this
.
formInline
.
name
,
mobile
:
this
.
formInline
.
phoneNUmber
,
takeResume
:
this
.
formInline
.
model2
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
=
""
;
this
.
formInline
.
InviterPhoneNumber
=
""
;
this
.
formInline
.
time
=
""
;
this
.
formInline
.
position
=
""
;
this
.
formInline
.
name
=
""
;
this
.
formInline
.
phoneNUmber
=
""
;
this
.
formInline
.
model1
=
''
;
this
.
formInline
.
model2
=
''
;
this
.
formInline
.
Inviter
=
''
;
this
.
formInline
.
InviterPhoneNumber
=
''
;
this
.
formInline
.
time
=
''
;
this
.
formInline
.
position
=
''
;
this
.
formInline
.
name
=
''
;
this
.
formInline
.
phoneNUmber
=
''
;
this
.
modal4
=
true
;
}
...
...
@@ -320,25 +230,21 @@ export default {
this
.
modal3
=
true
;
},
jedugePhone
()
{
if
(
this
.
formInline
.
InviterPhoneNumber
==
""
)
{
if
(
this
.
formInline
.
InviterPhoneNumber
==
''
)
{
this
.
isV
=
false
;
return
;
}
if
(
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
InviterPhoneNumber
)
)
{
if
(
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
InviterPhoneNumber
))
{
this
.
isV
=
true
;
}
if
(
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
InviterPhoneNumber
)
)
{
if
(
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
InviterPhoneNumber
))
{
this
.
isV
=
false
;
}
},
// 阻止弹出键盘
defaultRRRR
()
{
document
.
activeElement
.
blur
();
}
}
,
},
mounted
()
{
this
.
welconme
();
...
...
@@ -349,10 +255,9 @@ export default {
this
.
saleDate
=
`
${
year
}
/
${
month
}
/
${
day
}
`
;
this
.
formInline
.
date
=
this
.
saleDate
;
function
getRem
()
{
var
html
=
document
.
getElementsByTagName
(
"
html
"
)[
0
];
var
oWidth
=
document
.
body
.
clientWidth
||
document
.
documentElement
.
clientWidth
;
html
.
style
.
fontSize
=
oWidth
/
7.5
+
"
px
"
;
var
html
=
document
.
getElementsByTagName
(
'
html
'
)[
0
];
var
oWidth
=
document
.
body
.
clientWidth
||
document
.
documentElement
.
clientWidth
;
html
.
style
.
fontSize
=
oWidth
/
7.5
+
'
px
'
;
}
this
.
$nextTick
(()
=>
{
getRem
();
...
...
@@ -369,7 +274,7 @@ export default {
};
},
beforeDestroy
()
{
document
.
getElementsByTagName
(
"
html
"
)[
0
].
removeAttribute
(
"
style
"
);
document
.
getElementsByTagName
(
'
html
'
)[
0
].
removeAttribute
(
'
style
'
);
},
watch
:
{
showHeight
:
function
()
{
...
...
@@ -378,8 +283,8 @@ export default {
}
else
{
this
.
hidshow
=
true
;
}
}
}
}
,
}
,
};
</
script
>
...
...
src/page/system/QRcode.vue
View file @
140cbb56
...
...
@@ -18,13 +18,13 @@
</div>
</
template
>
<
script
>
import
{
getErcode
,
downloadErcode
}
from
"
../../api/stystem.server.js
"
;
import
{
sapi
}
from
"
../../config
"
;
import
{
getErcode
,
downloadErcode
}
from
'
../../api/stystem.server.js
'
;
import
{
sapi
}
from
'
../../config
'
;
export
default
{
data
()
{
return
{
url
:
""
,
url2
:
""
url
:
''
,
url2
:
''
,
};
},
methods
:
{
...
...
@@ -38,11 +38,11 @@ export default {
},
downPic
(
img
)
{
window
.
location
.
href
=
`
${
sapi
}
/api/qrCode/downQrCode`
;
}
}
,
},
mounted
()
{
this
.
getercode
();
}
}
,
};
</
script
>
<
style
>
...
...
src/page/system/account.vue
View file @
140cbb56
...
...
@@ -2,77 +2,37 @@
<div
class=
"account"
>
<div
class=
"addAcount"
>
<p
style=
"margin-top:0.5%"
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px;"
>
新增账户
</span
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px;"
>
新增账户
</span>
<span
style=
"margin-left:10px;color:Grey"
>
以下内容均为必填项
</span>
</p>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
>
<FormItem
label=
"登录账号"
style=
"margin-top:1%"
prop=
"emailNumber"
>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.emailNumber"
/>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.emailNumber"
/>
</FormItem>
<FormItem
label=
"手机号码"
style=
"margin-top:1%"
prop=
"PhoneNumber"
>
<Input
placeholder=
"请输入正确的手机号"
style=
"width:300px"
v-model=
"formInline.PhoneNumber"
/>
<Input
placeholder=
"请输入正确的手机号"
style=
"width:300px"
v-model=
"formInline.PhoneNumber"
/>
</FormItem>
<FormItem
label=
"真实姓名"
style=
"margin-top:1%"
prop=
"PerName"
>
<Input
placeholder=
"请输入真实姓名"
style=
"width:300px"
v-model=
"formInline.PerName"
:maxlength=
"5"
/>
<Input
placeholder=
"请输入真实姓名"
style=
"width:300px"
v-model=
"formInline.PerName"
:maxlength=
"5"
/>
</FormItem>
</Form>
<p>
<span
style=
"margin-left:25px;fnt-size:14px"
>
初始登录密码
</span>
<span
style=
"margin-left:10px"
>
默认是"123456",新用户首次登录需修改后才能进入系统。
</span
>
<span
style=
"margin-left:30px"
><Button
type=
"primary"
size=
"small"
style=
"color:#ffffff;margin-left:20px;width:60px"
@
click=
"addacount"
>
添加
</Button
></span
>
<span
style=
"margin-left:10px"
>
默认是"123456",新用户首次登录需修改后才能进入系统。
</span>
<span
style=
"margin-left:30px"
><Button
type=
"primary"
size=
"small"
style=
"color:#ffffff;margin-left:20px;width:60px"
@
click=
"addacount"
>
添加
</Button></span>
</p>
</div>
<div
class=
"accountMange"
>
<div
class=
"accountMange-top"
>
<p
style=
"height:40px;line-height:40px"
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px"
>
账户管理
</span
>
<span
style=
"margin-left:10px;color:Grey"
>
删除后该用户将无法登录,该账户上传的简历仍然保留。
</span
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px"
>
账户管理
</span>
<span
style=
"margin-left:10px;color:Grey"
>
删除后该用户将无法登录,该账户上传的简历仍然保留。
</span>
</p>
<p
style=
"border-bottom:1px solid black;line-height:30px;margin-bottom:10px"
>
<input
type=
"checkbox"
class=
"input-checkbox"
v-model=
"checked"
v-on:click=
"checkedAll(checkboxList)"
style=
"margin-left:25px;margin-top:15px;cursor:pointer"
/><span
style=
"margin-left:10px"
>
全选
</span>
<span
style=
"margin-left:40px;color:#2d8cf0;cursor:pointer"
@
click=
"delateall"
>
删除
</span
<p
style=
"border-bottom:1px solid black;line-height:30px;margin-bottom:10px"
>
<input
type=
"checkbox"
class=
"input-checkbox"
v-model=
"checked"
v-on:click=
"checkedAll(checkboxList)"
style=
"margin-left:25px;margin-top:15px;cursor:pointer"
/><span
style=
"margin-left:10px"
>
全选
</span
>
<span
style=
"margin-left:40px;color:#2d8cf0;cursor:pointer"
@
click=
"delateall"
>
删除
</span>
</p>
</div>
<!--
<Table
ref=
"selection"
:columns=
"columns4"
:data=
"data1"
></Table>
-->
...
...
@@ -80,34 +40,14 @@
<!--
<Spin
size=
"large"
fix
v-if=
"spinShow"
style=
"font-size:25px"
>
加载中...
</Spin>
-->
<div
v-for=
"item in ajaxData"
:key=
"item.id"
style=
""
>
<div
class=
"detailQQ"
>
<input
type=
"checkbox"
name=
"checkboxinput"
class=
"input-checkbox"
v-model=
"checkboxList"
:value=
"item.id"
style=
"margin-left:25px;cursor:pointer"
@
click=
"delateArr(item.id)"
/>
<input
type=
"checkbox"
name=
"checkboxinput"
class=
"input-checkbox"
v-model=
"checkboxList"
:value=
"item.id"
style=
"margin-left:25px;cursor:pointer"
@
click=
"delateArr(item.id)"
/>
<span
style=
"margin-left:5px"
>
{{
item
.
userName
}}
</span>
<span
style=
"margin-left:35px"
>
{{
item
.
userCode
}}
</span>
<span
style=
"margin-left:35px"
>
{{
item
.
phone
}}
</span>
<span
style=
"margin-left:35px"
>
{{
item
.
createTime
}}
</span>
<span
style=
"margin-left:35px;color:#2d8cf0;cursor:pointer"
@
click=
"recoveryModal(item.id)"
>
恢复初始密码
</span
>
<span
style=
"margin-left:35px;color:#2d8cf0;cursor:pointer"
@
click=
"updateModal(item)"
>
修改
</span
>
<span
style=
"margin-left:35px;color:#2d8cf0;cursor:pointer"
@
click=
"delateMaodal(item.id)"
>
删除
</span
>
<span
style=
"margin-left:35px;color:#2d8cf0;cursor:pointer"
@
click=
"recoveryModal(item.id)"
>
恢复初始密码
</span>
<span
style=
"margin-left:35px;color:#2d8cf0;cursor:pointer"
@
click=
"updateModal(item)"
>
修改
</span>
<span
style=
"margin-left:35px;color:#2d8cf0;cursor:pointer"
@
click=
"delateMaodal(item.id)"
>
删除
</span>
</div>
<div
style=
"height:10px;background:white;width:100%;"
></div>
</div>
...
...
@@ -137,38 +77,15 @@
</Modal>
<Modal
v-model=
"modal6"
:closable=
"false"
width=
"450px"
>
<h3
style=
"text-align:center;font-size:14px"
>
修改信息
</h3>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
class=
"updateClassModal"
>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
class=
"updateClassModal"
>
<FormItem
label=
"登录账号"
style=
"margin-top:1%"
prop=
"emailNumber"
>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px;"
v-model=
"formInline.updateemailNumber"
disabled
/>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px;"
v-model=
"formInline.updateemailNumber"
disabled
/>
</FormItem>
<FormItem
label=
"手机号码"
style=
"margin-top:1%"
prop=
"updatePhoneNumber"
>
<Input
placeholder=
"请输入正确的手机号"
style=
"width:300px;"
v-model=
"formInline.updatePhoneNumber"
/>
<FormItem
label=
"手机号码"
style=
"margin-top:1%"
prop=
"updatePhoneNumber"
>
<Input
placeholder=
"请输入正确的手机号"
style=
"width:300px;"
v-model=
"formInline.updatePhoneNumber"
/>
</FormItem>
<FormItem
label=
"真实姓名"
style=
"margin-top:1%"
prop=
"updatePerName"
>
<Input
placeholder=
"请输入真实姓名"
style=
"width:300px;"
v-model=
"formInline.updatePerName"
:maxlength=
"5"
/>
<Input
placeholder=
"请输入真实姓名"
style=
"width:300px;"
v-model=
"formInline.updatePerName"
:maxlength=
"5"
/>
</FormItem>
</Form>
<div
slot=
"footer"
style=
"text-align:center"
>
...
...
@@ -203,14 +120,7 @@
</div>
</
template
>
<
script
>
import
{
queryaccountList
,
addAccount
,
Delateaccount
,
delateAllAccount
,
recoveryPassword
,
updateAccount
}
from
"
../../api/stystem.server.js
"
;
import
{
queryaccountList
,
addAccount
,
Delateaccount
,
delateAllAccount
,
recoveryPassword
,
updateAccount
}
from
'
../../api/stystem.server.js
'
;
export
default
{
data
()
{
return
{
...
...
@@ -221,67 +131,67 @@ export default {
modal6
:
false
,
checkboxList
:
[],
checked
:
false
,
updateAccountId
:
""
,
pageT
:
""
,
userName
:
""
,
userCode
:
""
,
Massage
:
""
,
updateAccountId
:
''
,
pageT
:
''
,
userName
:
''
,
userCode
:
''
,
Massage
:
''
,
spinShow
:
true
,
delateARR
:
[],
id
:
""
,
I
:
""
,
id
:
''
,
I
:
''
,
pageIndex
:
1
,
pageSize
:
30
,
totalSize
:
null
,
searchInfo
:
{
pageSize
:
30
,
pageIndex
:
1
,
id
:
""
id
:
''
,
},
formInline
:
{
PhoneNumber
:
""
,
PerName
:
""
,
emailNumber
:
""
,
updatePhoneNumber
:
""
,
updatePerName
:
""
,
updateemailNumber
:
""
PhoneNumber
:
''
,
PerName
:
''
,
emailNumber
:
''
,
updatePhoneNumber
:
''
,
updatePerName
:
''
,
updateemailNumber
:
''
,
},
ruleInline
:
{
PhoneNumber
:
[
{
required
:
true
,
pattern
:
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
,
message
:
"
请输入正确的手机号
"
,
trigger
:
"
blur
"
}
message
:
'
请输入正确的手机号
'
,
trigger
:
'
blur
'
,
}
,
],
PerName
:
[
{
required
:
true
,
message
:
"
请输入真实的姓名
"
,
trigger
:
"
blur
"
},
{
type
:
"
string
"
,
message
:
""
,
trigger
:
"
blur
"
}
{
required
:
true
,
message
:
'
请输入真实的姓名
'
,
trigger
:
'
blur
'
},
{
type
:
'
string
'
,
message
:
''
,
trigger
:
'
blur
'
},
],
updateemailNumber
:
[
{
required
:
true
,
pattern
:
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
,
message
:
"
请输入正确的手机号
"
,
trigger
:
"
blur
"
}
message
:
'
请输入正确的手机号
'
,
trigger
:
'
blur
'
,
}
,
],
updatePerName
:
[
{
required
:
true
,
message
:
"
请输入真实的姓名
"
,
trigger
:
"
blur
"
},
{
type
:
"
string
"
,
message
:
""
,
trigger
:
"
blur
"
}
{
required
:
true
,
message
:
'
请输入真实的姓名
'
,
trigger
:
'
blur
'
},
{
type
:
'
string
'
,
message
:
''
,
trigger
:
'
blur
'
},
],
emailNumber
:
[
{
required
:
true
,
pattern
:
/
\w[
-
\w
.+
]
*@
([
A-Za-z0-9
][
-A-Za-z0-9
]
+
\.)
+
[
A-Za-z
]{2,14}
/
,
message
:
"
请输入正确的邮箱账号
"
,
trigger
:
"
blur
"
}
]
message
:
'
请输入正确的邮箱账号
'
,
trigger
:
'
blur
'
,
}
,
]
,
},
ajaxData
:
[],
checkData
:
[]
// 双向数据绑定的数组
checkData
:
[]
,
// 双向数据绑定的数组
};
},
methods
:
{
...
...
@@ -289,10 +199,10 @@ export default {
this
.
$refs
.
selection
.
selectAll
(
status
);
},
ok
()
{
this
.
$Message
.
info
(
"
Clicked ok
"
);
this
.
$Message
.
info
(
'
Clicked ok
'
);
},
cancel
()
{
this
.
$Message
.
info
(
"
Clicked cancel
"
);
this
.
$Message
.
info
(
'
Clicked cancel
'
);
},
//
delateArr
(
DElateID
)
{
...
...
@@ -328,44 +238,39 @@ export default {
id
:
this
.
updateAccountId
,
userCode
:
this
.
formInline
.
updateemailNumber
,
userName
:
this
.
formInline
.
updatePerName
,
phone
:
this
.
formInline
.
updatePhoneNumber
phone
:
this
.
formInline
.
updatePhoneNumber
,
};
if
(
this
.
formInline
.
updatePhoneNumber
==
""
||
this
.
formInline
.
updatePerName
==
""
)
{
if
(
this
.
formInline
.
updatePhoneNumber
==
''
||
this
.
formInline
.
updatePerName
==
''
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写正确的手机号码或姓名
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
请您填写正确的手机号码或姓名
'
,
duration
:
2
,
});
return
;
}
if
(
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
updatePhoneNumber
)
)
{
if
(
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
updatePhoneNumber
))
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写正确的手机号
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
请您填写正确的手机号
'
,
duration
:
2
,
});
return
;
}
updateAccount
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
修改成功
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
修改成功
'
,
duration
:
2
,
});
this
.
modal6
=
false
;
this
.
SearchList
();
}
if
(
res
.
data
.
success
==
false
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
title
:
'
提示
'
,
desc
:
res
.
data
.
body
.
message
,
duration
:
2
duration
:
2
,
});
this
.
modal6
=
false
;
}
...
...
@@ -376,74 +281,66 @@ export default {
const
parmars
=
{
userCode
:
this
.
formInline
.
emailNumber
,
userName
:
this
.
formInline
.
PerName
,
phone
:
this
.
formInline
.
PhoneNumber
phone
:
this
.
formInline
.
PhoneNumber
,
};
if
(
this
.
formInline
.
PhoneNumber
==
""
||
this
.
formInline
.
PerName
==
""
||
this
.
formInline
.
emailNumber
==
""
)
{
if
(
this
.
formInline
.
PhoneNumber
==
''
||
this
.
formInline
.
PerName
==
''
||
this
.
formInline
.
emailNumber
==
''
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写正确的账号或姓名
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
请您填写正确的账号或姓名
'
,
duration
:
2
,
});
return
;
}
if
(
!
/^
[
1
][
3,4,5,7,8,6,9
][
0-9
]{9}
$/
.
test
(
this
.
formInline
.
PhoneNumber
))
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写正确的手机号
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
请您填写正确的手机号
'
,
duration
:
2
,
});
return
;
}
if
(
!
/
\w[
-
\w
.+
]
*@
([
A-Za-z0-9
][
-A-Za-z0-9
]
+
\.)
+
[
A-Za-z
]{2,14}
/
.
test
(
this
.
formInline
.
emailNumber
)
)
{
if
(
!
/
\w[
-
\w
.+
]
*@
([
A-Za-z0-9
][
-A-Za-z0-9
]
+
\.)
+
[
A-Za-z
]{2,14}
/
.
test
(
this
.
formInline
.
emailNumber
))
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写正确邮箱账号
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
请您填写正确邮箱账号
'
,
duration
:
2
,
});
return
;
}
addAccount
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
添加成功
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
添加成功
'
,
duration
:
2
,
});
this
.
SearchList
();
this
.
formInline
.
PhoneNumber
=
""
;
this
.
formInline
.
PerName
=
""
;
this
.
formInline
.
emailNumber
=
""
;
this
.
formInline
.
PhoneNumber
=
''
;
this
.
formInline
.
PerName
=
''
;
this
.
formInline
.
emailNumber
=
''
;
}
if
(
res
.
data
.
body
.
code
==
0
)
{
this
.
Massage
=
res
.
data
.
body
.
message
;
this
.
$Notice
.
error
({
title
:
"
提示
"
,
title
:
'
提示
'
,
desc
:
this
.
Massage
,
duration
:
2
duration
:
2
,
});
this
.
formInline
.
PhoneNumber
=
""
;
this
.
formInline
.
PerName
=
""
;
this
.
formInline
.
emailNumber
=
""
;
this
.
formInline
.
PhoneNumber
=
''
;
this
.
formInline
.
PerName
=
''
;
this
.
formInline
.
emailNumber
=
''
;
}
});
},
// 查询账户列表
SearchList
(
page
)
{
page
=
typeof
page
===
"
number
"
?
page
:
1
;
page
=
typeof
page
===
'
number
'
?
page
:
1
;
this
.
searchInfo
.
pageIndex
=
page
;
this
.
pageIndex
=
page
;
const
parmars
=
{
pageSize
:
this
.
searchInfo
.
pageSize
,
pageIndex
:
this
.
searchInfo
.
pageIndex
pageIndex
:
this
.
searchInfo
.
pageIndex
,
};
queryaccountList
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
...
...
@@ -467,7 +364,7 @@ export default {
// 删除单条账户
delateAccount
()
{
const
parmars
=
{
id
:
this
.
I
id
:
this
.
I
,
};
Delateaccount
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
...
...
@@ -481,9 +378,9 @@ export default {
delateall
()
{
if
(
this
.
checkboxList
.
length
==
0
||
this
.
delateArr
.
length
==
0
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
选项不能为空
"
,
duration
:
"
2
"
title
:
'
提示
'
,
desc
:
'
选项不能为空
'
,
duration
:
'
2
'
,
});
return
;
}
...
...
@@ -494,9 +391,9 @@ export default {
delateAllAccount
(
this
.
delateARR
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
删除成功
"
,
duration
:
"
2
"
title
:
'
提示
'
,
desc
:
'
删除成功
'
,
duration
:
'
2
'
,
});
this
.
modal3
=
false
;
this
.
SearchList
(
this
.
pageT
);
...
...
@@ -511,14 +408,14 @@ export default {
// 确认恢复初始密码
recovery
()
{
const
parmars
=
{
id
:
this
.
I
id
:
this
.
I
,
};
recoveryPassword
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
恢复密码成功
"
,
duration
:
"
2
"
title
:
'
提示
'
,
desc
:
'
恢复密码成功
'
,
duration
:
'
2
'
,
});
this
.
modal1
=
false
;
}
...
...
@@ -533,7 +430,7 @@ export default {
this
.
searchInfo
.
pageSize
=
page
;
this
.
pageSize
=
page
;
this
.
SearchList
();
}
}
,
},
watch
:
{
checkboxList
:
{
...
...
@@ -548,12 +445,12 @@ export default {
this
.
checked
=
false
;
}
},
deep
:
true
}
deep
:
true
,
}
,
},
mounted
()
{
this
.
SearchList
();
}
}
,
};
</
script
>
<
style
scoped
>
...
...
src/page/system/emailMange.vue
View file @
140cbb56
...
...
@@ -2,26 +2,14 @@
<div
class=
"emailMange"
>
<div
class=
"addEmail"
>
<p
style=
"margin-top:10px"
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px"
>
新增接收邮箱
</span
>
<span
style=
"margin-left:10px;color:Grey"
>
绑定邮箱以接收简历,仅可绑定一个邮箱
</span
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px"
>
新增接收邮箱
</span>
<span
style=
"margin-left:10px;color:Grey"
>
绑定邮箱以接收简历,仅可绑定一个邮箱
</span>
</p>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
>
<FormItem
label=
"邮箱账号"
style=
"margin-top:20px"
prop=
"emailNumber"
>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.emailNumber"
/>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.emailNumber"
/>
</FormItem>
<FormItem
label=
"请选择开始同步的时间"
style=
"margin-top:20px; position: absolute;top:30px;left: 490px"
:label-width=
"180"
>
<FormItem
label=
"请选择开始同步的时间"
style=
"margin-top:20px; position: absolute;top:30px;left: 490px"
:label-width=
"180"
>
<DatePicker
type=
"datetime"
format=
"yyyy-MM-dd HH:mm:ss"
...
...
@@ -33,78 +21,28 @@
:editable=
"false"
></DatePicker
><br
/>
<span
style=
"font-size:8px;margin-left:0px;"
><Icon
type=
"md-information-circle"
/>
最长可同步30天
</span
>
<span
style=
"font-size:8px;margin-left:0px;"
><Icon
type=
"md-information-circle"
/>
最长可同步30天
</span>
</FormItem>
<FormItem
label=
"邮箱密码"
style=
"margin-top:20px; position: absolute;top:110px;left: -80px"
prop=
"emailPsd"
:label-width=
"180"
>
<Input
placeholder=
"请输入企业邮箱密码"
style=
"width:300px"
v-model=
"formInline.emailPsd"
type=
"password"
/><br
/>
<span
style=
"font-size:8px;position: relative;top:0px left:30px"
><Icon
type=
"md-information-circle"
/>
邮箱密码在绑定后再次修改,请及时点击修改来更新。
</span
>
<FormItem
label=
"邮箱密码"
style=
"margin-top:20px; position: absolute;top:110px;left: -80px"
prop=
"emailPsd"
:label-width=
"180"
>
<Input
placeholder=
"请输入企业邮箱密码"
style=
"width:300px"
v-model=
"formInline.emailPsd"
type=
"password"
/><br
/>
<span
style=
"font-size:8px;position: relative;top:0px left:30px"
><Icon
type=
"md-information-circle"
/>
邮箱密码在绑定后再次修改,请及时点击修改来更新。
</span>
</FormItem>
<FormItem
label=
"所属人"
style=
"margin-top:20px; position: absolute;top:110px;left: 410px"
prop=
"UserName"
:label-width=
"180"
>
<Input
placeholder=
"请输入所属者正确姓名"
style=
"width:300px"
v-model=
"formInline.UserName"
:maxlength=
"5"
/>
<FormItem
label=
"所属人"
style=
"margin-top:20px; position: absolute;top:110px;left: 410px"
prop=
"UserName"
:label-width=
"180"
>
<Input
placeholder=
"请输入所属者正确姓名"
style=
"width:300px"
v-model=
"formInline.UserName"
:maxlength=
"5"
/>
</FormItem>
<Button
type=
"primary"
style=
"position: absolute;top:130px;left: 910px;"
:disabled=
"disabled"
@
click=
"bindingSynchronizat"
>
绑定并开始同步
</Button
>
<Button
type=
"primary"
style=
"position: absolute;top:130px;left: 910px;"
:disabled=
"disabled"
@
click=
"bindingSynchronizat"
>
绑定并开始同步
</Button>
</Form>
</div>
<div
class=
"Emailmange"
>
<p
style=
"height:40px;line-height:40px"
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px"
>
邮箱管理
</span
>
<span
style=
"margin-left:10px;color:Grey"
>
解绑后不再接受该邮箱下的简历,之前接收的简历仍然保留。
</span
>
<span
style=
"font-size:18px;color:#2d8cf0;margin-left:18px"
>
邮箱管理
</span>
<span
style=
"margin-left:10px;color:Grey"
>
解绑后不再接受该邮箱下的简历,之前接收的简历仍然保留。
</span>
</p>
<p
style=
"border-bottom:1px solid black;line-height:30px"
>
<input
type=
"checkbox"
class=
"input-checkbox"
v-model=
"checked"
v-on:click=
"checkedAll"
style=
"margin-left:25px;cursor:pointer"
v-show=
"idAdmin == true"
/>
<span
style=
"margin-left:5px;cursor:pointer"
v-show=
"idAdmin == true"
>
全选
</span
>
<span
style=
"margin-left:40px;color:#2d8cf0;cursor:pointer"
@
click=
"UntyingAllmodeal"
v-show=
"idAdmin == true"
>
解绑
</span
>
<input
type=
"checkbox"
class=
"input-checkbox"
v-model=
"checked"
v-on:click=
"checkedAll"
style=
"margin-left:25px;cursor:pointer"
v-show=
"idAdmin == true"
/>
<span
style=
"margin-left:5px;cursor:pointer"
v-show=
"idAdmin == true"
>
全选
</span>
<span
style=
"margin-left:40px;color:#2d8cf0;cursor:pointer"
@
click=
"UntyingAllmodeal"
v-show=
"idAdmin == true"
>
解绑
</span>
</p>
<!--
<Spin
size=
"large"
fix
v-if=
"spinShow"
style=
"font-size:25px"
v-show=
"idAdmin==true"
>
加载中...
</Spin>
-->
<div
v-for=
"item in ajaxData"
:key=
"item.id"
class=
"emailList"
>
...
...
@@ -119,26 +57,12 @@
/>
<span
style=
"margin-left:0.3%"
>
{{
item
.
belongs
}}
</span>
<span
style=
"margin-left:0.5%;"
>
{{
item
.
emailName
}}
</span>
<span
style=
"margin-left:0.5%;"
>
同步时间 |
{{
item
.
syncStartDate
}}
</span
>
<span
style=
"margin-left:0.5%;"
>
同步时间 |
{{
item
.
syncStartDate
}}
</span>
<span
style=
"margin-left:2%;"
>
新建时间 |
{{
item
.
createTime
}}
</span>
<span
style=
"margin-left:1%;color:#2d8cf0;cursor:pointer"
@
click=
"UpdateEMAIL(item.emailName, item.belongs, item.id)"
>
修改
</span
>
<span
style=
"margin-left:1%;color:#2d8cf0;cursor:pointer"
@
click=
"UnbindingModal(item.id)"
>
解绑
</span
>
<span
style=
"margin-left:5%;"
v-if=
"item.c == '正常'"
>
{{
item
.
syncMailMsg
}}
</span>
<span
style=
"margin-left:5%;color:red"
v-if=
"item.c == '系统'"
>
{{
item
.
syncMailMsg
}}
</span>
<span
style=
"margin-left:1%;color:#2d8cf0;cursor:pointer"
@
click=
"UpdateEMAIL(item.emailName, item.belongs, item.id)"
>
修改
</span>
<span
style=
"margin-left:1%;color:#2d8cf0;cursor:pointer"
@
click=
"UnbindingModal(item.id)"
>
解绑
</span>
<span
style=
"margin-left:5%;"
v-if=
"item.c == '正常'"
>
{{
item
.
syncMailMsg
}}
</span>
<span
style=
"margin-left:5%;color:red"
v-if=
"item.c == '系统'"
>
{{
item
.
syncMailMsg
}}
</span>
</div>
<div
class=
"pageBottom"
v-show=
"this.idAdmin == true"
>
<Page
...
...
@@ -157,23 +81,16 @@
<Modal
v-model=
"modal1"
:closable=
"false"
:footer-hide=
"true"
width=
"250px"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<p
style=
"text-align:center"
>
系统错误,请联系开发者!
</p>
<h2
style=
"text-align:center;font-size:18px;color:#2d8cf0"
@
click=
"modal1 = false"
>
<h2
style=
"text-align:center;font-size:18px;color:#2d8cf0"
@
click=
"modal1 = false"
>
确定
</h2>
</Modal>
<!-- 同步成功 -->
<Modal
v-model=
"modal2"
:closable=
"false"
:footer-hide=
"true"
width=
"270px"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<p
style=
"height:30px;line-height:30px"
>
同步完成,如密码发生改变,请及时点击
<br
/><span>
修改
</span>
来重置密码
</p>
<p
style=
"height:30px;line-height:30px"
>
同步完成,如密码发生改变,请及时点击
<br
/><span>
修改
</span>
来重置密码
</p>
<!--
<h2
style=
"text-align:center;font-size:18px;color:#2d8cf0;height:40px;line-height:40px;margin-top:30px"
@
click=
"pushlist"
>
我已知晓
</h2>
-->
<Button
type=
"primary"
style=
"margin:40px 0 0 80px"
@
click=
"iKnow"
>
我已知晓
</Button
>
<Button
type=
"primary"
style=
"margin:40px 0 0 80px"
@
click=
"iKnow"
>
我已知晓
</Button>
</Modal>
<!-- 同步绑定 -->
<Modal
v-model=
"modal3"
:closable=
"false"
:footer-hide=
"true"
width=
"250px"
>
...
...
@@ -186,45 +103,14 @@
<div
style=
"height:230px"
>
<Form>
<FormItem
label=
"邮箱账号"
style=
"margin-top:20px"
prop=
"emailNumber"
>
<Input
placeholder=
"请输入企业邮箱"
v-model=
"Uusername"
style=
"width:300px;color:Gainsboro"
disabled
/>
<Input
placeholder=
"请输入企业邮箱"
v-model=
"Uusername"
style=
"width:300px;color:Gainsboro"
disabled
/>
</FormItem>
<FormItem
label=
"邮箱密码"
prop=
"emailPsd"
:label-width=
"180"
style=
"position: absolute;top:130px;left:-105px"
>
<Input
placeholder=
"请输入企业邮箱密码"
style=
"width:300px"
v-model=
"UpassWord"
type=
"password"
autocomplete=
"new-password"
/><br
/>
<span
style=
"font-size:8px;position: relative;top:0px left:30px"
><Icon
type=
"md-information-circle"
:options=
"options3"
/>
邮箱密码在绑定后再次修改,请及时点击修改来更新。
</span
>
<FormItem
label=
"邮箱密码"
prop=
"emailPsd"
:label-width=
"180"
style=
"position: absolute;top:130px;left:-105px"
>
<Input
placeholder=
"请输入企业邮箱密码"
style=
"width:300px"
v-model=
"UpassWord"
type=
"password"
autocomplete=
"new-password"
/><br
/>
<span
style=
"font-size:8px;position: relative;top:0px left:30px"
><Icon
type=
"md-information-circle"
:options=
"options3"
/>
邮箱密码在绑定后再次修改,请及时点击修改来更新。
</span>
</FormItem>
<FormItem
label=
"所属人"
style=
" position: absolute;top:220px;left: -100px"
prop=
"UserName"
:label-width=
"180"
>
<Input
placeholder=
"请输入所属着真实的姓名"
style=
"width:300px"
v-model=
"Ublengs"
:maxlength=
"5"
/>
<FormItem
label=
"所属人"
style=
" position: absolute;top:220px;left: -100px"
prop=
"UserName"
:label-width=
"180"
>
<Input
placeholder=
"请输入所属着真实的姓名"
style=
"width:300px"
v-model=
"Ublengs"
:maxlength=
"5"
/>
</FormItem>
</Form>
</div>
...
...
@@ -257,14 +143,8 @@
</div>
</
template
>
<
script
>
import
{
queryemailList
,
Synchronization
,
jiebangEmail
,
updateemailTWO
,
UntyingAll
}
from
"
../../api/stystem.server.js
"
;
import
moment
from
"
moment
"
;
import
{
queryemailList
,
Synchronization
,
jiebangEmail
,
updateemailTWO
,
UntyingAll
}
from
'
../../api/stystem.server.js
'
;
import
moment
from
'
moment
'
;
export
default
{
data
()
{
return
{
...
...
@@ -274,30 +154,27 @@ export default {
modal4
:
false
,
modal5
:
false
,
modal6
:
false
,
condition
:
""
,
Massage
:
""
,
pageT
:
""
,
condition
:
''
,
Massage
:
''
,
pageT
:
''
,
spinShow
:
true
,
idAdmin
:
""
,
admin
:
""
,
NAme
:
""
,
DATA
:
""
,
Tname
:
""
,
idAdmin
:
''
,
admin
:
''
,
NAme
:
''
,
DATA
:
''
,
Tname
:
''
,
options3
:
{
disabledDate
(
date
)
{
return
(
(
date
&&
date
.
valueOf
()
>
Date
.
now
())
||
date
.
valueOf
()
<
Date
.
now
()
-
3600
*
1000
*
30
*
24
);
}
return
(
date
&&
date
.
valueOf
()
>
Date
.
now
())
||
date
.
valueOf
()
<
Date
.
now
()
-
3600
*
1000
*
30
*
24
;
},
},
UpassWord
:
""
,
Uusername
:
""
,
decisionStartTime
:
""
,
Ublengs
:
""
,
Uid
:
""
,
UpassWord
:
''
,
Uusername
:
''
,
decisionStartTime
:
''
,
Ublengs
:
''
,
Uid
:
''
,
UntyingAllARR
:
[],
Tblengs
:
""
,
Tblengs
:
''
,
checkboxList
:
[],
checked
:
false
,
disabled
:
false
,
...
...
@@ -307,12 +184,12 @@ export default {
searchInfo
:
{
pageSize
:
30
,
pageIndex
:
1
,
id
:
""
id
:
''
,
},
formInline
:
{
emailNumber
:
""
,
emailPsd
:
""
,
UserName
:
""
emailNumber
:
''
,
emailPsd
:
''
,
UserName
:
''
,
},
ruleInline
:
{
emailNumber
:
[
...
...
@@ -320,19 +197,15 @@ export default {
{
required
:
true
,
pattern
:
/
\w[
-
\w
.+
]
*@
([
A-Za-z0-9
][
-A-Za-z0-9
]
+
\.)
+
[
A-Za-z
]{2,14}
/
,
message
:
"
请输入正确的邮箱账号
"
,
trigger
:
"
blur
"
}
],
emailPsd
:
[
{
required
:
true
,
message
:
"
请输入正确的密码
"
,
trigger
:
"
blur
"
}
message
:
'
请输入正确的邮箱账号
'
,
trigger
:
'
blur
'
,
},
],
UserName
:
[
{
required
:
true
,
message
:
"
请输入正确的姓名
"
,
trigger
:
"
blur
"
}
]
emailPsd
:
[{
required
:
true
,
message
:
'
请输入正确的密码
'
,
trigger
:
'
blur
'
}],
UserName
:
[{
required
:
true
,
message
:
'
请输入正确的姓名
'
,
trigger
:
'
blur
'
}],
},
ajaxData
:
[],
checkData
:
[]
// 双向数据绑定的数组
checkData
:
[]
,
// 双向数据绑定的数组
};
},
methods
:
{
...
...
@@ -352,16 +225,11 @@ export default {
},
// 绑定同步邮箱
bindingSynchronizat
()
{
if
(
this
.
formInline
.
emailNumber
==
""
||
this
.
formInline
.
emailPsd
==
""
||
this
.
formInline
.
UserName
==
""
||
this
.
DATA
==
""
)
{
if
(
this
.
formInline
.
emailNumber
==
''
||
this
.
formInline
.
emailPsd
==
''
||
this
.
formInline
.
UserName
==
''
||
this
.
DATA
==
''
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写完整的信息
"
,
duration
:
"
2
"
title
:
'
提示
'
,
desc
:
'
请您填写完整的信息
'
,
duration
:
'
2
'
,
});
return
;
}
...
...
@@ -371,17 +239,17 @@ export default {
emailName
:
this
.
formInline
.
emailNumber
,
emailPassword
:
this
.
formInline
.
emailPsd
,
belongs
:
this
.
formInline
.
UserName
,
syncStartDate
:
moment
(
this
.
DATA
).
format
(
"
YYYY-MM-DD HH:mm:ss
"
)
syncStartDate
:
moment
(
this
.
DATA
).
format
(
'
YYYY-MM-DD HH:mm:ss
'
),
};
Synchronization
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
modal3
=
false
;
this
.
modal2
=
true
;
this
.
formInline
.
emailNumber
=
""
;
this
.
formInline
.
emailPsd
=
""
;
this
.
formInline
.
UserName
=
""
;
this
.
DATA
=
""
;
this
.
formInline
.
emailNumber
=
''
;
this
.
formInline
.
emailPsd
=
''
;
this
.
formInline
.
UserName
=
''
;
this
.
DATA
=
''
;
this
.
SearchList
();
// this.disabled=false
}
...
...
@@ -390,16 +258,16 @@ export default {
this
.
disabled
=
false
;
this
.
Massage
=
res
.
data
.
body
.
message
;
this
.
$Notice
.
error
({
title
:
"
提示
"
,
title
:
'
提示
'
,
desc
:
this
.
Massage
,
duration
:
2
duration
:
2
,
});
}
},
()
=>
{
this
.
modal3
=
false
;
// this.modal1=true
this
.
formInline
.
emailPsd
=
""
;
this
.
formInline
.
emailPsd
=
''
;
}
);
},
...
...
@@ -412,12 +280,12 @@ export default {
},
// 查询邮箱列表
SearchList
(
page
)
{
page
=
typeof
page
===
"
number
"
?
page
:
1
;
page
=
typeof
page
===
'
number
'
?
page
:
1
;
this
.
searchInfo
.
pageIndex
=
page
;
this
.
pageIndex
=
page
;
const
parmars
=
{
pageSize
:
this
.
searchInfo
.
pageSize
,
pageIndex
:
this
.
searchInfo
.
pageIndex
pageIndex
:
this
.
searchInfo
.
pageIndex
,
};
queryemailList
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
...
...
@@ -433,10 +301,7 @@ export default {
item
.
STA
=
false
;
item
.
syncFlag
=
item
.
syncFlag
;
item
.
syncMailMsg
=
item
.
syncMailMsg
;
item
.
c
=
item
.
syncMailMsg
==
null
?
item
.
syncMailMsg
:
item
.
syncMailMsg
.
substring
(
0
,
2
);
item
.
c
=
item
.
syncMailMsg
==
null
?
item
.
syncMailMsg
:
item
.
syncMailMsg
.
substring
(
0
,
2
);
return
item
;
});
}
...
...
@@ -461,11 +326,11 @@ export default {
},
// 修改后重新绑定邮箱并保存
UpdateemailTwo
()
{
if
(
this
.
UpassWord
==
""
||
this
.
Uusername
==
""
||
this
.
Ublengs
==
""
)
{
if
(
this
.
UpassWord
==
''
||
this
.
Uusername
==
''
||
this
.
Ublengs
==
''
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您填写完整的信息
"
,
duration
:
"
2
"
title
:
'
提示
'
,
desc
:
'
请您填写完整的信息
'
,
duration
:
'
2
'
,
});
return
;
}
...
...
@@ -473,25 +338,25 @@ export default {
emailName
:
this
.
Uusername
,
emailPassword
:
this
.
UpassWord
,
belongs
:
this
.
Ublengs
,
id
:
this
.
Uid
id
:
this
.
Uid
,
};
updateemailTWO
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
UpassWord
=
""
;
this
.
UpassWord
=
''
;
this
.
modal4
=
false
;
this
.
SearchList
(
this
.
pageT
);
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
修改成功
"
,
duration
:
"
2
"
title
:
'
提示
'
,
desc
:
'
修改成功
'
,
duration
:
'
2
'
,
});
}
else
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
你填写的密码有误
"
,
duration
:
"
2
"
title
:
'
提示
'
,
desc
:
'
你填写的密码有误
'
,
duration
:
'
2
'
,
});
this
.
UpassWord
=
""
;
this
.
UpassWord
=
''
;
}
});
},
...
...
@@ -504,9 +369,9 @@ export default {
jiebangEmail
(
this
.
NAme
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
解绑成功
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
解绑成功
'
,
duration
:
2
,
});
this
.
modal5
=
false
;
this
.
SearchList
(
this
.
pageT
);
...
...
@@ -517,9 +382,9 @@ export default {
UntyingAllmodeal
()
{
if
(
this
.
UntyingAllARR
.
length
==
0
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
选项不能为空
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
选项不能为空
'
,
duration
:
2
,
});
return
;
}
...
...
@@ -534,9 +399,9 @@ export default {
UntyingAll
(
this
.
UntyingAllARR
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
this
.
$Notice
.
success
({
title
:
"
提示
"
,
desc
:
"
解绑成功
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
解绑成功
'
,
duration
:
2
,
});
this
.
modal6
=
false
;
this
.
SearchList
(
this
.
pageT
);
...
...
@@ -553,45 +418,38 @@ export default {
this
.
SearchList
(
this
.
pageT
);
},
isadminmethods
()
{
this
.
admin
=
localStorage
.
getItem
(
"
isADMIN
"
);
this
.
admin
=
localStorage
.
getItem
(
'
isADMIN
'
);
const
c
=
JSON
.
parse
(
this
.
admin
);
this
.
idAdmin
=
c
.
isAdmin
;
},
updatapassT
()
{
this
.
modal4
=
false
;
this
.
UpassWord
=
""
;
this
.
UpassWord
=
''
;
},
changeStartTime
:
function
(
e
,
b
)
{
this
.
DATA
=
b
;
var
time
=
e
;
var
that
=
this
;
var
days
=
new
Date
(
new
Date
().
getFullYear
(),
new
Date
().
getMonth
()
+
1
,
0
).
getDate
()
-
1
;
var
startEndTime
=
time
?
new
Date
(
time
).
valueOf
()
-
days
*
24
*
60
*
60
*
1000
:
""
;
var
endEndTime
=
time
?
new
Date
(
time
).
valueOf
()
:
""
;
if
(
time
===
""
)
{
var
days
=
new
Date
(
new
Date
().
getFullYear
(),
new
Date
().
getMonth
()
+
1
,
0
).
getDate
()
-
1
;
var
startEndTime
=
time
?
new
Date
(
time
).
valueOf
()
-
days
*
24
*
60
*
60
*
1000
:
''
;
var
endEndTime
=
time
?
new
Date
(
time
).
valueOf
()
:
''
;
if
(
time
===
''
)
{
this
.
decisionStartTime
=
{
disabledDate
(
data
)
{
return
data
.
valueOf
()
<
0
;
}
}
,
};
}
else
{
this
.
decisionStartTime
=
{
disabledDate
(
data
)
{
if
(
that
.
qualityCheck
.
decisionEndTime
===
""
)
{
if
(
that
.
qualityCheck
.
decisionEndTime
===
''
)
{
return
new
Date
();
}
return
data
.
valueOf
()
<
startEndTime
||
data
.
valueOf
()
>
endEndTime
;
}
}
,
};
}
}
}
,
},
watch
:
{
...
...
@@ -603,13 +461,13 @@ export default {
this
.
checked
=
false
;
}
},
deep
:
true
}
deep
:
true
,
}
,
},
mounted
()
{
this
.
isadminmethods
();
this
.
SearchList
();
}
}
,
};
</
script
>
<
style
>
...
...
src/page/upload/upload.vue
View file @
140cbb56
...
...
@@ -3,44 +3,18 @@
<div
class=
"upload-left"
>
<div
class=
"uploadC"
style=
"background:rgba(244,244,244,1);height:300px"
>
<div
class=
"upload-title"
>
<Input
type=
"text"
v-model=
"fileName"
style=
"width:70%;margin-left:4%;margin-top:40px"
></Input>
<input
ref=
"input"
class=
"nativeInput"
type=
"file"
:class=
"['prefixCls' + '-input']"
@
change=
"handleChange"
:multiple=
"true"
:format=
"['pdf', 'doc', 'docx']"
:accept=
"accept"
/>
<Button
@
click=
"selFiles"
style=
"width:20%;margin-top:40px;margin-left:-4px;color:black"
>
选择文件
</Button
>
<Input
type=
"text"
v-model=
"fileName"
style=
"width:70%;margin-left:4%;margin-top:40px"
></Input>
<input
ref=
"input"
class=
"nativeInput"
type=
"file"
:class=
"['prefixCls' + '-input']"
@
change=
"handleChange"
:multiple=
"true"
:format=
"['pdf', 'doc', 'docx']"
:accept=
"accept"
/>
<Button
@
click=
"selFiles"
style=
"width:20%;margin-top:40px;margin-left:-4px;color:black"
>
选择文件
</Button>
<div
class=
"contentTips"
>
<p
style=
"font-size:12px;margin-left:5%;text-align:center;height:40px;line-height:40px;width:90%;display:inline-block;margin-top:30px"
>
<p
style=
"font-size:12px;margin-left:5%;text-align:center;height:40px;line-height:40px;width:90%;display:inline-block;margin-top:30px"
>
单个文件不能大于2MB,仅支持word,pdf格式,暂时不支持压缩格式
</p>
<p
style=
"font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%"
>
<p
style=
"font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%"
>
支持最多二十份简历批量上传
</p>
</div>
<Button
@
click=
"uploadBtn"
style=
"width:20%;margin-left:38%;margin-top:30px"
type=
"primary"
>
上传
</Button
>
<Button
@
click=
"uploadBtn"
style=
"width:20%;margin-left:38%;margin-top:30px"
type=
"primary"
>
上传
</Button>
</div>
<!-- 上传文件 -->
<Modal
v-model=
"uploadModal"
:closable=
"false"
:mask-closable=
"false"
>
...
...
@@ -50,34 +24,13 @@
</h4>
<div
v-for=
"(item, index) in dataList"
class=
"process"
:key=
"index"
>
<p
style=
"padding-top:5px;"
>
{{
item
.
name
}}
</p>
<span
class=
"title"
style=
"float:right;"
v-show=
"item.Code == 0"
>
{{
item
.
title
}}
</span
>
<span
class=
"title"
style=
"float:right;color:red"
v-show=
"item.Code == 1"
<span
class=
"title"
style=
"float:right;"
v-show=
"item.Code == 0"
>
{{
item
.
title
}}
</span>
<span
class=
"title"
style=
"float:right;color:red"
v-show=
"item.Code == 1"
>
{{
item
.
title
}}
<Checkbox
v-model=
"item.sStatus"
@
on-change=
"selectfile(item.sStatus, item.name)"
>
是
</Checkbox
>
<Checkbox
v-model=
"item.sStatus"
@
on-change=
"selectfile(item.sStatus, item.name)"
>
是
</Checkbox>
</span>
<span
class=
"title"
style=
"float:right;color:red"
v-show=
"item.Code == 2"
>
{{
item
.
title
}}
</span
>
<Progress
:percent=
"item.percentage"
hide-info
:status=
"item.status"
></Progress>
<span
class=
"title"
style=
"float:right;color:red"
v-show=
"item.Code == 2"
>
{{
item
.
title
}}
</span>
<Progress
:percent=
"item.percentage"
hide-info
:status=
"item.status"
></Progress>
</div>
</div>
<div
slot=
"footer"
>
...
...
@@ -99,65 +52,26 @@
</Modal>
</div>
<div
class=
"leftcontrentFotter"
>
<h5
style=
"width:100%;height:40px;background:rgb(0,176,160);text-align:center;line-height:40px;color:white;font-size:15px;font-weight:bold"
>
<h5
style=
"width:100%;height:40px;background:rgb(0,176,160);text-align:center;line-height:40px;color:white;font-size:15px;font-weight:bold"
>
上传记录
</h5>
<div
style=
"width:100%;background:rgb(0,176,160); opacity: 0.7;overflow-y:auto;height:93%;"
>
<div
style=
"width:100%;background:rgb(0,176,160); opacity: 0.7;overflow-y:auto;height:93%;"
>
<!--
<div
style=
"width:100%;height:10px;background:rgb(0,176,160)"
></div>
-->
<div
class=
"contentMASSAGE"
v-for=
"(item, index) in ajaxData"
:key=
"index"
>
<p
@
click=
"getResumeData(item.resumeId, item.uid)"
style=
"margin-top:10px"
>
<span
style=
"color:#000000;margin:10px 0 0 10px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
name
}}
|
</span
>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
mobile
}}
|
</span
>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
age
}}
岁|
</span
>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
gender
}}
|
</span
>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
workYears
}}
年 |
</span
>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
degree
}}
|
</span
>
<span
style=
"color:#000000;width:28%;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
expectedTitle
}}
</span
>
<div
class=
"contentMASSAGE"
v-for=
"(item, index) in ajaxData"
:key=
"index"
>
<p
@
click=
"getResumeData(item.resumeId, item.uid)"
style=
"margin-top:10px"
>
<span
style=
"color:#000000;margin:10px 0 0 10px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
name
}}
|
</span>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
mobile
}}
|
</span>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
age
}}
岁|
</span>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
gender
}}
|
</span>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
workYears
}}
年 |
</span>
<span
style=
"color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
degree
}}
|
</span>
<span
style=
"color:#000000;width:28%;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>
{{
item
.
expectedTitle
}}
</span>
</p>
<p
style=
"margin-top:0px;color:Grey"
>
<span
style=
"color:Grey;margin:5px 0 0 10px;display:inline-block"
>
{{
item
.
createTime
}}
入库|
</span
>
<span
style=
"color:Grey;margin:5px 0 0 10px;display:inline-block"
>
{{
item
.
createTime
}}
入库|
</span>
<span>
{{
item
.
creator
}}
</span>
</p>
<Button
type=
"primary"
style=
"margin:-55px 0 0 83%;width:60px;z-index:99"
@
click=
"delateONEModal(item.resumeId)"
>
删除
</Button
>
<Button
type=
"primary"
style=
"margin:-55px 0 0 83%;width:60px;z-index:99"
@
click=
"delateONEModal(item.resumeId)"
>
删除
</Button>
</div>
</div>
</div>
...
...
@@ -168,34 +82,15 @@
</p>
<div
style=
"width:100%;float:left;"
>
<div
style=
"margin:0 auto;width:860px"
>
<div
class=
"personalInformation"
v-show=
"JSON.stringify(resume) !== '
{}'"
>
<div
class=
"personalInformation"
v-show=
"JSON.stringify(resume) !== '
{}'">
<p
class=
"bestmessage"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png"
style=
"height:16px;width:23px;vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png"
style=
"height:16px;width:23px;vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
基本信息
</span
>
<span
style=
"float:right;width:50px;height:24px;margin-right:5px"
><Button
type=
"primary"
size=
"small"
style=
"width:50px;height:24px"
@
click=
"downloadONE(downloadId)"
>
下载
</Button
></span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
基本信息
</span>
<span
style=
"float:right;width:50px;height:24px;margin-right:5px"
><Button
type=
"primary"
size=
"small"
style=
"width:50px;height:24px"
@
click=
"downloadONE(downloadId)"
>
下载
</Button></span>
</p>
<div
class=
"personalInformation-left"
>
<p
style=
"margin-top:20px"
>
姓名:
{{
resume
&&
resume
.
ownerName
}}
</p>
<p
style=
"margin-top:20px"
>
姓名:
{{
resume
&&
resume
.
ownerName
}}
</p>
<p>
联系电话:
{{
resume
&&
resume
.
ownerMobile
}}
</p>
<p>
电子邮箱:
{{
resume
&&
resume
.
email
}}
</p>
<p>
所在地:
{{
resume
&&
resume
.
locationCity
}}
</p>
...
...
@@ -204,45 +99,27 @@
<p>
期望职位:
{{
resume
&&
resume
.
expectTitles
}}
</p>
</div>
<div
class=
"personalInformation-right"
>
<p
style=
"margin-top:20px"
>
年龄:
{{
resume
&&
resume
.
ownerAge
}}
岁
</p>
<p
style=
"margin-top:20px"
>
年龄:
{{
resume
&&
resume
.
ownerAge
}}
岁
</p>
<p>
职位:
{{
resume
&&
resume
.
ownerExpectTitles
}}
</p>
<p>
学历:
{{
resume
&&
resume
.
ownerHighestDegree
}}
</p>
<p>
经验:
{{
resume
&&
resume
.
workYearsOriginal
}}
年
</p>
<p
style=
"margin-top:30px"
>
期望薪资:
{{
resume
&&
resume
.
expectSalary
}}
</p>
<p
style=
"margin-top:30px"
>
期望薪资:
{{
resume
&&
resume
.
expectSalary
}}
</p>
<p>
期望地区:
{{
resume
&&
resume
.
city
}}
</p>
</div>
</div>
<div
class=
"workExperience"
v-show=
"roList.length !== 0"
>
<p
class=
"bestmessage"
>
<span>
<img
img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
工作经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
工作经历
</span>
</p>
<div
class=
"workExperience-detail"
v-for=
"(item, index) in roList"
:key=
"index"
>
<div
class=
"workExperience-detail"
v-for=
"(item, index) in roList"
:key=
"index"
>
<div
class=
"workExperience-top"
>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"margin-left:30px"
>
{{
item
.
startTime
}}
-
{{
item
.
endTime
}}
</span
>
<span
style=
"margin-left:30px"
>
{{
item
.
startTime
}}
-
{{
item
.
endTime
}}
</span>
<span
style=
"margin-left:18px"
><span
>
{{
item
.
company
}}
<span>
(
{{
item
.
workTime
}}
)
</span></span
>
{{
item
.
company
}}
<span>
(
{{
item
.
workTime
}}
)
</span></span
></span
>
<span
style=
"float:right;margin-right:30px"
>
...
...
@@ -251,9 +128,7 @@
</span>
</p>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"float:right;margin-right:30px"
>
{{
item
.
department
}}
</span>
<span
style=
"float:right;margin-right:30px"
>
{{
item
.
department
}}
</span>
</p>
</div>
<div
class=
"workExperience-bottom"
>
{{
item
.
desc
}}
</div>
...
...
@@ -262,27 +137,15 @@
<div
class=
"projectExperience"
v-show=
"rpList.length !== 0"
>
<p
class=
"bestmessage"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png"
style=
"height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png"
style=
"height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
项目经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
项目经历
</span>
</p>
<div
class=
"projectExperience-detail"
v-for=
"(item, index) in rpList"
:key=
"index"
>
<div
class=
"projectExperience-detail"
v-for=
"(item, index) in rpList"
:key=
"index"
>
<div
class=
"projectExperience-top"
>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span>
<span
style=
"margin-left:18px"
><span>
{{
item
.
name
}}
<span></span></span
></span>
...
...
@@ -296,28 +159,14 @@
</div>
<div
class=
"internshipExperience"
v-show=
"riList.length !== 0"
>
<p
class=
"bestmessage"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
实习经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
实习经历
</span>
</p>
<div
class=
"internshipExperience-detail"
v-for=
"(item, index) in riList"
:key=
"index"
>
<div
class=
"internshipExperience-detail"
v-for=
"(item, index) in riList"
:key=
"index"
>
<div
class=
"internshipExperience-top"
>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span
>
<span
style=
"margin-left:30px"
>
{{
item
.
startYear
}}
/
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
/
{{
item
.
endMonth
}}
</span>
<span
style=
"margin-left:18px"
><span>
{{
item
.
company
}}
<span></span></span
></span>
...
...
@@ -326,9 +175,7 @@
</span>
</p>
<p
style=
"height:28px;line-height:28px;font-size:14px;"
>
<span
style=
"float:right;margin-right:30px"
>
{{
item
.
title
}}
</span>
<span
style=
"float:right;margin-right:30px"
>
{{
item
.
title
}}
</span>
</p>
</div>
<div
class=
"internshipExperience-bottom"
>
{{
item
.
desc
}}
</div>
...
...
@@ -336,28 +183,14 @@
</div>
<div
class=
"educationalExperience"
v-show=
"reList.length !== 0"
>
<p
class=
"bestmessage"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
教育经历
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
教育经历
</span>
</p>
<div
class=
"educationalExperience-detail"
v-for=
"(item, index) in reList"
:key=
"index"
>
<div
class=
"educationalExperience-detail"
v-for=
"(item, index) in reList"
:key=
"index"
>
<div
class=
"educationalExperience-content"
>
<div
class=
"educationalExperience-left"
>
<p
style=
"line-height:25px;margin-top:20px"
>
{{
item
.
school
}}
((
{{
item
.
startYear
}}
.
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
.
{{
item
.
endMonth
}}
))
</p>
<p
style=
"line-height:25px;margin-top:20px"
>
{{
item
.
school
}}
((
{{
item
.
startYear
}}
.
{{
item
.
startMonth
}}
-
{{
item
.
endYear
}}
.
{{
item
.
endMonth
}}
))
</p>
<p
style=
"margin-top:20px;"
>
专业:
{{
item
.
major
}}
</p>
</div>
<div
class=
"educationalExperience-right"
>
...
...
@@ -368,15 +201,9 @@
</div>
<div
class=
"Self-evaluation"
v-show=
"JSON.stringify(resume) !== '
{}'">
<p
class=
"bestmessage"
>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span>
<img
src=
"http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png"
style=
"height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
自我评价
</span
>
<span
style=
"margin-left:7px;font-size:16px;color:#0092FF"
>
自我评价
</span>
</p>
<div
class=
"evaluation-content"
>
{{
resume
&&
resume
.
selfEvaluate
}}
...
...
@@ -388,82 +215,76 @@
</div>
</
template
>
<
script
>
import
{
getuploadNumber
,
uploadfile
,
serchList
,
serchRESUMEdetail
,
deleteREsumeUPLOad
}
from
"
../../api/upload.server
"
;
import
{
sapi
}
from
"
../../config
"
;
import
{
uploadFile
}
from
"
../../service/ajax
"
;
import
{
getuploadNumber
,
uploadfile
,
serchList
,
serchRESUMEdetail
,
deleteREsumeUPLOad
}
from
'
../../api/upload.server
'
;
import
{
sapi
}
from
'
../../config
'
;
import
{
uploadFile
}
from
'
../../service/ajax
'
;
export
default
{
data
()
{
return
{
uploadList
:
[],
dataList
:
[],
fileName
:
""
,
fileName
:
''
,
ajaxData
:
[],
delateARRALL
:
[],
replaceArr
:
[],
downloadId
:
""
,
downloadId
:
''
,
pageIndex
:
1
,
pageSize
:
30
,
isReplace
:
true
,
newArr
:
[],
replaceName
:
""
,
replaceName
:
''
,
searchInfo
:
{
pageSize
:
30
,
pageIndex
:
1
pageIndex
:
1
,
},
Sid
:
""
,
Sid
:
''
,
single
:
true
,
checkboxList
:
[],
filetile
:
"
上传中请稍后...
"
,
filetile
:
'
上传中请稍后...
'
,
totalSize
:
null
,
uploadModal
:
false
,
accept
:
"
.doc,.docx,.pdf
"
,
accept
:
'
.doc,.docx,.pdf
'
,
fileSize
:
2048
,
progressStatus
:
{
0
:
"
active
"
,
2
:
"
wrong
"
,
1
:
"
wrong
"
0
:
'
active
'
,
2
:
'
wrong
'
,
1
:
'
wrong
'
,
},
files
:
null
,
activeT
:
false
,
change
:
false
,
massage
:
""
,
Massage
:
""
,
Code
:
""
,
massage
:
''
,
Massage
:
''
,
Code
:
''
,
action
:
`
${
sapi
}
/api/resume/upload`
,
batchNum
:
""
,
batchNum
:
''
,
modal3
:
false
,
modal1
:
false
,
modal2
:
false
,
modal6
:
false
,
Filename
:
""
,
uploadNUmber
:
""
,
Filename
:
''
,
uploadNUmber
:
''
,
// uploadList:[],
a
:
[],
files
:
null
,
b
:
""
,
b
:
''
,
uploadFile
:
[],
resume
:
{},
// 简历基本详情
riList
:
[],
// 实习经历列表
roList
:
[],
// 工作经历列表
rpList
:
[],
// 项目经历列表
reList
:
[],
// 教育经历列表
serchID
:
""
serchID
:
''
,
};
},
methods
:
{
handleChange
(
e
)
{
this
.
fileName
=
""
;
this
.
fileName
=
''
;
this
.
dataList
=
[];
const
files
=
e
.
target
.
files
;
this
.
files
=
e
.
target
.
files
;
for
(
const
key
in
files
)
{
if
(
key
!=
"
length
"
&&
key
!=
"
item
"
)
{
if
(
key
!=
'
length
'
&&
key
!=
'
item
'
)
{
const
file
=
files
[
key
];
const
temp
=
{
name
:
file
.
name
,
...
...
@@ -472,10 +293,10 @@ export default {
type
:
file
.
type
,
size
:
file
.
size
,
title
:
null
,
status
:
"
active
"
status
:
'
active
'
,
};
this
.
dataList
.
push
(
temp
);
this
.
fileName
+=
files
[
key
].
name
+
"
;
"
;
this
.
fileName
+=
files
[
key
].
name
+
'
;
'
;
}
}
if
(
!
files
)
{
...
...
@@ -486,44 +307,44 @@ export default {
uploadBtn
()
{
if
(
this
.
dataList
.
length
<
1
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
请您选择文件在上传
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
请您选择文件在上传
'
,
duration
:
2
,
});
return
;
}
if
(
this
.
dataList
.
length
>
20
)
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
批量上传文件不能大于20份
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
批量上传文件不能大于20份
'
,
duration
:
2
,
});
this
.
$refs
.
input
.
value
=
""
;
this
.
fileName
=
""
;
this
.
$refs
.
input
.
value
=
''
;
this
.
fileName
=
''
;
this
.
dataList
=
[];
return
;
}
if
(
this
.
handleMaxSize
())
{
this
.
$Notice
.
error
({
title
:
"
提示
"
,
desc
:
"
单份文件不能大于2MB
"
,
duration
:
2
title
:
'
提示
'
,
desc
:
'
单份文件不能大于2MB
'
,
duration
:
2
,
});
this
.
$refs
.
input
.
value
=
""
;
this
.
fileName
=
""
;
this
.
$refs
.
input
.
value
=
''
;
this
.
fileName
=
''
;
this
.
dataList
=
[];
return
;
}
this
.
uploadModal
=
true
;
this
.
filetile
=
"
上传中请稍后...
"
;
this
.
filetile
=
'
上传中请稍后...
'
;
uploadFile
({
headers
:
this
.
headers
,
data
:
this
.
dataList
,
batchNum
:
this
.
batchNum
,
action
:
this
.
action
,
batchNum
:
this
.
batchNum
,
appendName
:
"
batchNum
"
,
appendFile
:
"
recFile
"
,
appendName
:
'
batchNum
'
,
appendFile
:
'
recFile
'
,
onProgress
:
e
=>
{
setTimeout
(()
=>
{
this
.
handleProgress
(
e
);
...
...
@@ -537,7 +358,7 @@ export default {
},
onError
:
(
err
,
response
)
=>
{
this
.
handleError
(
err
,
response
,
this
.
files
);
}
}
,
});
},
handleProgress
(
e
)
{
...
...
@@ -548,16 +369,14 @@ export default {
selectfile
(
data
,
name
)
{
this
.
replaceName
=
name
;
if
(
data
==
false
)
{
this
.
replaceArr
=
this
.
replaceArr
.
filter
(
item
=>
item
!==
this
.
replaceName
);
this
.
replaceArr
=
this
.
replaceArr
.
filter
(
item
=>
item
!==
this
.
replaceName
);
}
else
{
this
.
replaceArr
.
push
(
this
.
replaceName
);
}
},
handleSuccess
(
res
,
files
)
{
const
data
=
res
.
body
;
this
.
filetile
=
"
上传完成
"
;
this
.
filetile
=
'
上传完成
'
;
for
(
const
key
in
data
)
{
const
code
=
data
[
key
].
code
;
this
.
Code
=
data
[
key
].
code
;
...
...
@@ -570,7 +389,7 @@ export default {
if
(
key
==
item
.
name
)
{
item
.
title
=
this
.
Massage
;
if
(
item
.
Code
==
2
)
{
progressStatus
=
{
2
:
"
wrong
"
};
progressStatus
=
{
2
:
'
wrong
'
};
}
item
.
status
=
this
.
progressStatus
[
code
];
item
.
Code
=
this
.
Code
;
...
...
@@ -594,12 +413,12 @@ export default {
},
closeModal
()
{
this
.
uploadModal
=
false
;
this
.
$refs
.
input
.
value
=
""
;
this
.
$refs
.
input
.
value
=
''
;
this
.
dataList
=
[];
// this.replaceArr = []
this
.
fileName
=
""
;
this
.
fileName
=
''
;
this
.
activeT
=
false
;
this
.
filetile
=
"
上传中请稍后...
"
;
this
.
filetile
=
'
上传中请稍后...
'
;
this
.
serchlist
();
},
// 下载单条简历
...
...
@@ -623,7 +442,7 @@ export default {
},
// 查询记录列表
serchlist
(
page
)
{
page
=
typeof
page
===
"
number
"
?
page
:
1
;
page
=
typeof
page
===
'
number
'
?
page
:
1
;
this
.
searchInfo
.
pageIndex
=
page
;
this
.
pageIndex
=
page
;
const
parmars
=
{
...
...
@@ -631,8 +450,8 @@ export default {
pageIndex
:
this
.
searchInfo
.
pageIndex
,
parameter
:
{
batchNum
:
this
.
batchNum
,
replaceFileNameList
:
this
.
replaceArr
}
replaceFileNameList
:
this
.
replaceArr
,
}
,
};
serchList
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
)
{
...
...
@@ -649,8 +468,7 @@ export default {
item
.
expectedTitle
=
item
.
expectedTitle
;
item
.
status
=
item
.
status
;
item
.
uid
=
item
.
uid
;
item
.
creator
=
item
.
creator
==
""
?
item
.
creator
:
item
.
creator
.
split
(
"
_
"
)[
0
];
item
.
creator
=
item
.
creator
==
''
?
item
.
creator
:
item
.
creator
.
split
(
'
_
'
)[
0
];
item
.
createTime
=
item
.
createTime
;
return
item
;
});
...
...
@@ -661,7 +479,7 @@ export default {
getResumeData
(
sid
,
Uid
)
{
this
.
downloadId
=
sid
;
const
parmars
=
{
uid
:
Uid
uid
:
Uid
,
};
serchRESUMEdetail
(
parmars
).
then
(
res
=>
{
this
.
resume
=
res
.
data
.
body
.
resume
;
...
...
@@ -687,16 +505,16 @@ export default {
this
.
roList
=
[];
this
.
rpList
=
[];
this
.
reList
=
[];
this
.
downloadId
=
""
;
this
.
downloadId
=
''
;
this
.
serchlist
();
}
});
}
}
,
},
async
mounted
()
{
await
this
.
getnumber
();
this
.
serchlist
();
}
}
,
};
</
script
>
<
style
lang=
"less"
scoped
>
...
...
src/router/index.js
View file @
140cbb56
import
Vue
from
"
vue
"
;
import
Router
from
"
vue-router
"
;
import
Vue
from
'
vue
'
;
import
Router
from
'
vue-router
'
;
const
home
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/components/home.vue
"
)),
"
home
"
);
const
home
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/components/home.vue
'
)),
'
home
'
);
// const changepsd = r => require.ensure([], () => r(require('@/components/changepsd.vue')), 'changepsd');
const
login
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/page/login/login.vue
"
)),
"
login
"
);
const
update
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/page/login/update.vue
"
)),
"
update
"
);
const
pdfdetail
=
r
=>
require
.
ensure
(
[],
()
=>
r
(
require
(
"
@/page/resume/pdfdetail.vue
"
)),
"
pdfdetail
"
);
const
resumeDetail
=
r
=>
require
.
ensure
(
[],
()
=>
r
(
require
(
"
@/page/resume/resumeDetail.vue
"
)),
"
resumeDetail
"
);
const
interview
=
r
=>
require
.
ensure
(
[],
()
=>
r
(
require
(
"
@/page/interview/interview.vue
"
)),
"
interview
"
);
const
allResume
=
r
=>
require
.
ensure
(
[],
()
=>
r
(
require
(
"
@/page/resume/allResume.vue
"
)),
"
allResume
"
);
const
channel
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/page/resume/channel.vue
"
)),
"
channel
"
);
const
account
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/page/system/account.vue
"
)),
"
account
"
);
const
emailMange
=
r
=>
require
.
ensure
(
[],
()
=>
r
(
require
(
"
@/page/system/emailMange.vue
"
)),
"
emailMange
"
);
const
QRcode
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/page/system/QRcode.vue
"
)),
"
QRcode
"
);
const
upload
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/page/upload/upload.vue
"
)),
"
upload
"
);
const
sweepCode
=
r
=>
require
.
ensure
(
[],
()
=>
r
(
require
(
"
@/page/sweepCode/sweepCode.vue
"
)),
"
sweepCode
"
);
const
editor
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/components/editor.vue
"
)),
"
editor
"
);
const
getimage
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
"
@/components/getimage.vue
"
)),
"
getimage
"
);
const
login
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/login/login.vue
'
)),
'
login
'
);
const
update
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/login/update.vue
'
)),
'
update
'
);
const
pdfdetail
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/resume/pdfdetail.vue
'
)),
'
pdfdetail
'
);
const
resumeDetail
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/resume/resumeDetail.vue
'
)),
'
resumeDetail
'
);
const
interview
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/interview/interview.vue
'
)),
'
interview
'
);
const
allResume
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/resume/allResume.vue
'
)),
'
allResume
'
);
const
channel
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/resume/channel.vue
'
)),
'
channel
'
);
const
account
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/system/account.vue
'
)),
'
account
'
);
const
emailMange
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/system/emailMange.vue
'
)),
'
emailMange
'
);
const
QRcode
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/system/QRcode.vue
'
)),
'
QRcode
'
);
const
upload
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/upload/upload.vue
'
)),
'
upload
'
);
const
sweepCode
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/page/sweepCode/sweepCode.vue
'
)),
'
sweepCode
'
);
const
editor
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/components/editor.vue
'
)),
'
editor
'
);
const
getimage
=
r
=>
require
.
ensure
([],
()
=>
r
(
require
(
'
@/components/getimage.vue
'
)),
'
getimage
'
);
// z注释
Vue
.
use
(
Router
);
export
default
new
Router
({
mode
:
"
history
"
,
mode
:
'
history
'
,
routes
:
[
{
path
:
"
/
"
,
redirect
:
"
/home
"
path
:
'
/
'
,
redirect
:
'
/home
'
,
},
{
path
:
"
/login
"
,
name
:
"
login
"
,
path
:
'
/login
'
,
name
:
'
login
'
,
component
:
login
,
meta
:
{
allowBack
:
false
}
allowBack
:
false
,
}
,
},
{
path
:
"
/sweepCode
"
,
name
:
"
sweepCode
"
,
component
:
sweepCode
path
:
'
/sweepCode
'
,
name
:
'
sweepCode
'
,
component
:
sweepCode
,
},
{
path
:
"
/update
"
,
name
:
"
update
"
,
component
:
update
path
:
'
/update
'
,
name
:
'
update
'
,
component
:
update
,
},
{
path
:
"
/getimage
"
,
name
:
"
getimage
"
,
component
:
getimage
path
:
'
/getimage
'
,
name
:
'
getimage
'
,
component
:
getimage
,
},
{
path
:
"
/resumeDetail
"
,
name
:
"
resumeDetail
"
,
component
:
resumeDetail
path
:
'
/resumeDetail
'
,
name
:
'
resumeDetail
'
,
component
:
resumeDetail
,
},
{
path
:
"
/pdfdetail
"
,
name
:
"
pdfdetail
"
,
component
:
pdfdetail
path
:
'
/pdfdetail
'
,
name
:
'
pdfdetail
'
,
component
:
pdfdetail
,
},
{
path
:
"
/editor
"
,
name
:
"
editor
"
,
component
:
editor
path
:
'
/editor
'
,
name
:
'
editor
'
,
component
:
editor
,
},
{
path
:
"
/home
"
,
name
:
"
home
"
,
path
:
'
/home
'
,
name
:
'
home
'
,
component
:
home
,
children
:
[
{
path
:
"
/interview
"
,
name
:
"
interview
"
,
component
:
interview
path
:
'
/interview
'
,
name
:
'
interview
'
,
component
:
interview
,
},
{
path
:
"
/allResume
"
,
name
:
"
allResume
"
,
component
:
allResume
path
:
'
/allResume
'
,
name
:
'
allResume
'
,
component
:
allResume
,
},
{
path
:
"
/channel/:channelname
"
,
name
:
"
channel
"
,
component
:
channel
path
:
'
/channel/:channelname
'
,
name
:
'
channel
'
,
component
:
channel
,
},
{
path
:
"
/account
"
,
name
:
"
account
"
,
component
:
account
path
:
'
/account
'
,
name
:
'
account
'
,
component
:
account
,
},
{
path
:
"
/emailMange
"
,
name
:
"
emailMange
"
,
component
:
emailMange
path
:
'
/emailMange
'
,
name
:
'
emailMange
'
,
component
:
emailMange
,
},
{
path
:
"
/QRcode
"
,
name
:
"
QRcode
"
,
component
:
QRcode
path
:
'
/QRcode
'
,
name
:
'
QRcode
'
,
component
:
QRcode
,
},
{
path
:
"
/upload
"
,
name
:
"
upload
"
,
component
:
upload
}
]
}
]
path
:
'
/upload
'
,
name
:
'
upload
'
,
component
:
upload
,
}
,
]
,
}
,
]
,
});
src/service/ajax.js
View file @
140cbb56
// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js
import
axios
from
"
./http.service.js
"
;
import
axios
from
'
./http.service.js
'
;
function
getError
(
action
,
option
,
xhr
)
{
const
msg
=
`fail to post
${
action
}
${
xhr
.
status
}
'`
;
const
err
=
new
Error
(
msg
);
err
.
status
=
xhr
.
status
;
err
.
method
=
"
post
"
;
err
.
method
=
'
post
'
;
err
.
url
=
action
;
return
err
;
}
...
...
@@ -34,11 +34,10 @@ export function uploadFile(option) {
.
post
(
action
,
formData
,
{
onUploadProgress
:
function
(
progressEvent
)
{
if
(
progressEvent
.
total
>
0
)
{
progressEvent
.
percent
=
(
progressEvent
.
loaded
/
progressEvent
.
total
)
*
100
;
progressEvent
.
percent
=
(
progressEvent
.
loaded
/
progressEvent
.
total
)
*
100
;
}
option
.
onProgress
(
progressEvent
);
}
}
,
})
.
then
(
res
=>
{
option
.
onSuccess
(
res
.
data
);
...
...
@@ -48,7 +47,7 @@ export function uploadFile(option) {
});
}
export
default
function
upload
(
option
)
{
if
(
typeof
XMLHttpRequest
===
"
undefined
"
)
{
if
(
typeof
XMLHttpRequest
===
'
undefined
'
)
{
return
;
}
...
...
@@ -86,15 +85,15 @@ export default function upload(option) {
option
.
onSuccess
(
getBody
(
xhr
));
};
xhr
.
open
(
"
post
"
,
action
,
true
);
if
(
"
withCredentials
"
in
xhr
)
{
xhr
.
open
(
'
post
'
,
action
,
true
);
if
(
'
withCredentials
'
in
xhr
)
{
xhr
.
withCredentials
=
true
;
}
const
headers
=
option
.
headers
||
{};
if
(
headers
[
"
X-Requested-With
"
]
!==
null
)
{
xhr
.
setRequestHeader
(
"
X-Requested-With
"
,
"
XMLHttpRequest
"
);
if
(
headers
[
'
X-Requested-With
'
]
!==
null
)
{
xhr
.
setRequestHeader
(
'
X-Requested-With
'
,
'
XMLHttpRequest
'
);
}
for
(
const
item
in
headers
)
{
...
...
src/service/cookie.service.js
View file @
140cbb56
import
Cookie
from
"
js-cookie
"
;
import
Cookie
from
'
js-cookie
'
;
export
default
{
set
:
function
(
name
,
value
)
{
...
...
@@ -9,5 +9,5 @@ export default {
},
remove
:
function
(
name
)
{
Cookie
.
remove
(
name
);
}
}
,
};
src/service/http.service.js
View file @
140cbb56
import
axios
from
"
axios
"
;
import
Promise
from
"
./promise.service.js
"
;
import
{
Notice
}
from
"
iview
"
;
import
Vue
from
"
vue
"
;
import
router
from
"
../router/index.js
"
;
import
store
from
"
../store
"
;
import
axios
from
'
axios
'
;
import
Promise
from
'
./promise.service.js
'
;
import
{
Notice
}
from
'
iview
'
;
import
Vue
from
'
vue
'
;
import
router
from
'
../router/index.js
'
;
import
store
from
'
../store
'
;
var
instance
=
axios
.
create
({});
instance
.
defaults
.
timeout
=
3600000
;
instance
.
defaults
.
withCredentials
=
true
;
instance
.
defaults
.
headers
.
post
[
"
Content-Type
"
]
=
"
application/x-www-form-urlencoded
"
;
instance
.
defaults
.
headers
[
"
X-Requested-With
"
]
=
"
XMLHttpRequest
"
;
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
;
...
...
@@ -34,22 +33,16 @@ function tryHideFullScreenLoading() {
},
200
);
}
}
const
needLoading
=
[
"
resume/findListByQueryVO
"
,
"
sendMail/sendEmailTemplate
"
,
"
resume/forwardResume
"
,
"
interview/findListByQueryVO
"
,
"
resume/delete
"
];
const
needLoading
=
[
'
resume/findListByQueryVO
'
,
'
sendMail/sendEmailTemplate
'
,
'
resume/forwardResume
'
,
'
interview/findListByQueryVO
'
,
'
resume/delete
'
];
instance
.
interceptors
.
request
.
use
(
function
(
config
)
{
// 在发送请求之前做些什么
if
(
!
config
.
headers
[
"
Content-Type
"
])
{
config
.
headers
[
"
Content-Type
"
]
=
"
application/x-www-form-urlencoded
"
;
if
(
!
config
.
headers
[
'
Content-Type
'
])
{
config
.
headers
[
'
Content-Type
'
]
=
'
application/x-www-form-urlencoded
'
;
}
const
url
=
config
.
url
.
split
(
"
api/
"
)[
1
];
const
url
=
config
.
url
.
split
(
'
api/
'
)[
1
];
const
headers
=
config
.
headers
;
if
(
headers
.
status
!=
"
init
"
&&
needLoading
.
includes
(
url
))
{
if
(
headers
.
status
!=
'
init
'
&&
needLoading
.
includes
(
url
))
{
showFullScreenLoading
();
}
delete
headers
.
status
;
...
...
@@ -64,38 +57,37 @@ instance.interceptors.response.use(
function
(
response
)
{
// 在发送请求之前做些什么
const
errorInfo
=
{
900
:
"
cookie已失效,请重新登录
"
,
901
:
""
,
902
:
"
您的账号已在其他地方登录,如不是您个人操作,请及时修改密码
"
900
:
'
cookie已失效,请重新登录
'
,
901
:
''
,
902
:
'
您的账号已在其他地方登录,如不是您个人操作,请及时修改密码
'
,
};
tryHideFullScreenLoading
();
if
(
response
.
status
>=
200
&&
response
.
status
<
300
)
{
const
code
=
(
response
.
data
&&
response
.
data
.
body
&&
response
.
data
.
body
.
code
)
||
""
;
if
(
code
==
"
900
"
||
code
==
"
901
"
||
code
==
"
902
"
)
{
if
(
!
store
.
state
.
cookieTips
&&
code
!=
"
901
"
)
{
store
.
dispatch
(
"
cookieTipsShow
"
,
true
);
const
code
=
(
response
.
data
&&
response
.
data
.
body
&&
response
.
data
.
body
.
code
)
||
''
;
if
(
code
==
'
900
'
||
code
==
'
901
'
||
code
==
'
902
'
)
{
if
(
!
store
.
state
.
cookieTips
&&
code
!=
'
901
'
)
{
store
.
dispatch
(
'
cookieTipsShow
'
,
true
);
Notice
.
error
({
render
:
h
=>
{
return
h
(
"
div
"
,
'
div
'
,
{
style
:
{
paddingRight
:
"
5px
"
,
fontSize
:
"
14px
"
,
lineHeight
:
"
20px
"
,
color
:
"
#17233d
"
}
paddingRight
:
'
5px
'
,
fontSize
:
'
14px
'
,
lineHeight
:
'
20px
'
,
color
:
'
#17233d
'
,
}
,
},
errorInfo
[
code
]
);
}
}
,
});
setTimeout
(()
=>
{
store
.
dispatch
(
"
cookieTipsHide
"
,
false
);
store
.
dispatch
(
'
cookieTipsHide
'
,
false
);
},
2000
);
}
router
.
replace
({
name
:
"
login
"
});
router
.
replace
({
name
:
'
login
'
});
}
if
(
response
.
data
.
success
)
{
return
Promise
.
resolve
(
response
);
...
...
src/service/init.service.js
View file @
140cbb56
import
localstorage
from
"
./localstorage.service.js
"
;
import
localstorage
from
'
./localstorage.service.js
'
;
export
default
{
init
:
function
(
router
)
{
router
.
beforeEach
((
to
,
form
,
next
)
=>
{
const
token
=
localstorage
.
get
(
"
token
"
);
if
(
to
.
meta
&&
!
to
.
meta
.
allowBack
&&
window
.
history
&&
window
.
history
.
pushState
)
{
const
token
=
localstorage
.
get
(
'
token
'
);
if
(
to
.
meta
&&
!
to
.
meta
.
allowBack
&&
window
.
history
&&
window
.
history
.
pushState
)
{
// 登录页面不能后退
history
.
pushState
(
null
,
null
,
document
.
URL
);
}
if
(
to
.
name
==
"
login
"
||
to
.
name
==
"
update
"
||
to
.
name
==
"
sweepCode
"
||
to
.
name
==
"
resumeDetail
"
||
to
.
name
==
"
pdfdetail
"
)
{
if
(
to
.
name
==
'
login
'
||
to
.
name
==
'
update
'
||
to
.
name
==
'
sweepCode
'
||
to
.
name
==
'
resumeDetail
'
||
to
.
name
==
'
pdfdetail
'
)
{
next
();
return
;
}
...
...
@@ -28,5 +17,5 @@ export default {
}
next
();
});
}
}
,
};
src/service/localstorage.service.js
View file @
140cbb56
...
...
@@ -7,5 +7,5 @@ export default {
},
remove
:
function
(
name
)
{
window
.
localStorage
.
removeItem
(
name
);
}
}
,
};
src/service/promise.service.js
View file @
140cbb56
module
.
exports
=
require
(
"
es6-promise
"
);
module
.
exports
=
require
(
'
es6-promise
'
);
src/service/util.js
View file @
140cbb56
...
...
@@ -43,61 +43,61 @@ export function emailValidata(rule, value, callback) {
const
field
=
rule
.
field
;
const
reg
=
rule
.
pattern
;
switch
(
field
)
{
case
"
receiveEmail
"
:
case
'
receiveEmail
'
:
if
(
!
value
)
{
this
.
tip
=
true
;
this
.
isDisable
=
false
;
callback
(
new
Error
(
"
收件人不能为空
"
));
callback
(
new
Error
(
'
收件人不能为空
'
));
}
else
if
(
rule
.
pattern
&&
!
rule
.
pattern
.
test
(
value
))
{
this
.
tip
=
true
;
this
.
isDisable
=
false
;
callback
(
new
Error
(
"
请输入正确收件人地址
"
));
callback
(
new
Error
(
'
请输入正确收件人地址
'
));
}
else
{
this
.
tip
=
false
;
this
.
isDisable
=
true
;
callback
();
}
break
;
case
"
theme
"
:
case
'
theme
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
;
callback
(
new
Error
(
"
主题能为空
"
));
callback
(
new
Error
(
'
主题能为空
'
));
}
else
{
this
.
isDisable
=
true
;
callback
();
}
break
;
case
"
copyname
"
:
case
'
copyname
'
:
if
(
value
&&
reg
&&
!
reg
.
test
(
value
))
{
this
.
isDisable
=
false
;
callback
(
new
Error
(
"
请输入正确抄送地址
"
));
callback
(
new
Error
(
'
请输入正确抄送地址
'
));
}
else
{
this
.
isDisable
=
true
;
callback
();
}
break
;
case
"
UpdateOWER
"
:
case
'
UpdateOWER
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
;
callback
(
new
Error
(
"
邀约人不能为空
"
));
callback
(
new
Error
(
'
邀约人不能为空
'
));
}
else
{
this
.
isDisable
=
true
;
callback
();
}
break
;
case
"
UpdateTIME
"
:
case
'
UpdateTIME
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
;
callback
(
new
Error
(
"
面试时间不能为空
"
));
callback
(
new
Error
(
'
面试时间不能为空
'
));
}
else
{
this
.
isDisable
=
true
;
callback
();
}
break
;
case
"
UpdateVIEW
"
:
case
'
UpdateVIEW
'
:
if
(
!
value
)
{
this
.
isDisable
=
false
;
callback
(
new
Error
(
"
面试官不能为空
"
));
callback
(
new
Error
(
'
面试官不能为空
'
));
}
else
{
this
.
isDisable
=
true
;
callback
();
...
...
@@ -111,15 +111,14 @@ export function emailValidata(rule, value, callback) {
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
(
"
你尚未选择简历,请先选择简历
"
));
callback
(
new
Error
(
'
你尚未选择简历,请先选择简历
'
));
}
else
if
(
this
.
allEmailVilitor
==
true
)
{
callback
(
new
Error
(
"
不能选择多份简历,请选择单份简历
"
));
callback
(
new
Error
(
'
不能选择多份简历,请选择单份简历
'
));
}
else
{
callback
();
}
}
export
function
validator
(
rule
,
value
,
callback
)
{
if
(
!
value
)
this
.
$Notice
.
warning
({
title
:
"
提示
"
,
desc
:
"
请输入您要通知的面试官
"
});
if
(
!
value
)
this
.
$Notice
.
warning
({
title
:
'
提示
'
,
desc
:
'
请输入您要通知的面试官
'
});
callback
();
}
src/store/actions.js
View file @
140cbb56
// // action.js
import
*
as
types
from
"
./muationsType
"
;
import
*
as
types
from
'
./muationsType
'
;
const
action
=
{
cookieTipsShow
({
commit
},
value
)
{
commit
(
types
.
COOKIE_SHOW
,
value
);
...
...
@@ -12,6 +12,6 @@ const action = {
},
clearInterviewee
({
commit
},
value
)
{
commit
(
types
.
CLEAR_INTERVIEWEE
,
value
);
}
}
,
};
export
default
action
;
src/store/index.js
View file @
140cbb56
import
Vuex
from
"
vuex
"
;
import
Vue
from
"
vue
"
;
import
mutations
from
"
./mutations.js
"
;
import
actions
from
"
./actions.js
"
;
import
Vuex
from
'
vuex
'
;
import
Vue
from
'
vue
'
;
import
mutations
from
'
./mutations.js
'
;
import
actions
from
'
./actions.js
'
;
Vue
.
use
(
Vuex
);
...
...
@@ -9,10 +9,10 @@ const state = {
cookieTips
:
false
,
interviewee
:
[],
channelInterviewee
:
[],
loading
:
false
loading
:
false
,
};
export
default
new
Vuex
.
Store
({
mutations
,
actions
,
state
state
,
});
src/store/muationsType.js
View file @
140cbb56
export
const
COOKIE_SHOW
=
"
COOKIE_SHOW
"
;
export
const
COOKIE_HIDE
=
"
COOKIE_HIDE
"
;
export
const
ADD_INTERVIEWEE
=
"
ADD_INTERVIEWEE
"
;
export
const
REMOVE_INTERVIEWEE
=
"
REMOVE_INTERVIEWEE
"
;
export
const
CLEAR_INTERVIEWEE
=
"
CLEAR_INTERVIEWEE
"
;
export
const
COOKIE_SHOW
=
'
COOKIE_SHOW
'
;
export
const
COOKIE_HIDE
=
'
COOKIE_HIDE
'
;
export
const
ADD_INTERVIEWEE
=
'
ADD_INTERVIEWEE
'
;
export
const
REMOVE_INTERVIEWEE
=
'
REMOVE_INTERVIEWEE
'
;
export
const
CLEAR_INTERVIEWEE
=
'
CLEAR_INTERVIEWEE
'
;
src/store/mutations.js
View file @
140cbb56
import
{
COOKIE_SHOW
,
COOKIE_HIDE
,
ADD_INTERVIEWEE
,
REMOVE_INTERVIEWEE
,
CLEAR_INTERVIEWEE
}
from
"
./muationsType
"
;
import
{
COOKIE_SHOW
,
COOKIE_HIDE
,
ADD_INTERVIEWEE
,
REMOVE_INTERVIEWEE
,
CLEAR_INTERVIEWEE
}
from
'
./muationsType
'
;
export
default
{
[
COOKIE_SHOW
](
state
,
value
)
{
state
.
cookieTips
=
value
||
true
;
...
...
@@ -15,7 +9,7 @@ export default {
[
ADD_INTERVIEWEE
](
state
,
object
)
{
let
flag
=
false
;
const
data
=
object
.
data
;
if
(
object
.
type
==
"
channel
"
)
{
if
(
object
.
type
==
'
channel
'
)
{
console
.
log
(
data
);
state
.
channelInterviewee
.
map
(
item
=>
{
if
(
data
&&
item
.
id
==
data
.
id
)
{
...
...
@@ -38,7 +32,7 @@ export default {
},
[
REMOVE_INTERVIEWEE
](
state
,
object
)
{
const
data
=
object
.
data
;
if
(
object
.
type
==
"
channel
"
)
{
if
(
object
.
type
==
'
channel
'
)
{
state
.
channelInterviewee
.
map
((
item
,
index
)
=>
{
if
(
data
&&
item
.
id
==
data
.
id
)
{
state
.
channelInterviewee
.
splice
(
index
,
1
);
...
...
@@ -54,11 +48,11 @@ export default {
},
[
CLEAR_INTERVIEWEE
](
state
,
object
)
{
const
type
=
object
.
type
;
if
(
type
==
"
channel
"
)
{
if
(
type
==
'
channel
'
)
{
state
.
channelInterviewee
=
[];
console
.
log
(
"
===
"
);
console
.
log
(
'
===
'
);
}
else
{
state
.
interviewee
=
[];
}
}
}
,
};
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