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
a7bced1c
Commit
a7bced1c
authored
Jul 19, 2019
by
zhangderong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
A
parent
2618d792
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
710 additions
and
556 deletions
+710
-556
webpack.base.conf.js
build/webpack.base.conf.js
+8
-8
webpack.dev.conf.js
build/webpack.dev.conf.js
+2
-1
index.js
config/index.js
+11
-2
package-lock.json
package-lock.json
+5
-0
package.json
package.json
+1
-0
interview.server.js
src/api/interview.server.js
+5
-0
login.server.js
src/api/login.server.js
+12
-0
resume.server.js
src/api/resume.server.js
+11
-0
stystem.server.js
src/api/stystem.server.js
+50
-9
env.config.js
src/config/env.config.js
+2
-1
interview.vue
src/page/Interview/interview.vue
+43
-158
login.vue
src/page/login/login.vue
+20
-8
allResume.vue
src/page/resume/allResume.vue
+118
-219
QRcode.vue
src/page/system/QRcode.vue
+26
-2
account.vue
src/page/system/account.vue
+148
-85
emailMange.vue
src/page/system/emailMange.vue
+199
-62
http.service.js
src/service/http.service.js
+48
-1
promise.service.js
src/service/promise.service.js
+1
-0
No files found.
build/webpack.base.conf.js
View file @
a7bced1c
...
@@ -9,14 +9,14 @@ function resolve (dir) {
...
@@ -9,14 +9,14 @@ function resolve (dir) {
}
}
const
createLintingRule
=
()
=>
({
const
createLintingRule
=
()
=>
({
test
:
/
\.(
js|vue
)
$/
,
//
test: /\.(js|vue)$/,
loader
:
'
eslint-loader
'
,
//
loader: 'eslint-loader',
enforce
:
'
pre
'
,
//
enforce: 'pre',
include
:
[
resolve
(
'
src
'
),
resolve
(
'
test
'
)],
//
include: [resolve('src'), resolve('test')],
options
:
{
//
options: {
formatter
:
require
(
'
eslint-friendly-formatter
'
),
//
formatter: require('eslint-friendly-formatter'),
emitWarning
:
!
config
.
dev
.
showEslintErrorsInOverlay
//
emitWarning: !config.dev.showEslintErrorsInOverlay
}
//
}
})
})
module
.
exports
=
{
module
.
exports
=
{
...
...
build/webpack.dev.conf.js
View file @
a7bced1c
...
@@ -31,7 +31,7 @@ const devWebpackConfig = merge(baseWebpackConfig, {
...
@@ -31,7 +31,7 @@ const devWebpackConfig = merge(baseWebpackConfig, {
hot
:
true
,
hot
:
true
,
contentBase
:
false
,
// since we use CopyWebpackPlugin.
contentBase
:
false
,
// since we use CopyWebpackPlugin.
compress
:
true
,
compress
:
true
,
host
:
HOST
||
config
.
dev
.
host
,
host
:
'
192.168.28.10
'
||
config
.
dev
.
host
,
port
:
PORT
||
config
.
dev
.
port
,
port
:
PORT
||
config
.
dev
.
port
,
open
:
config
.
dev
.
autoOpenBrowser
,
open
:
config
.
dev
.
autoOpenBrowser
,
overlay
:
config
.
dev
.
errorOverlay
overlay
:
config
.
dev
.
errorOverlay
...
@@ -76,6 +76,7 @@ module.exports = new Promise((resolve, reject) => {
...
@@ -76,6 +76,7 @@ module.exports = new Promise((resolve, reject) => {
}
else
{
}
else
{
// publish the new Port, necessary for e2e tests
// publish the new Port, necessary for e2e tests
process
.
env
.
PORT
=
port
process
.
env
.
PORT
=
port
devWebpackConfig
.
devServer
.
host
=
'
0.0.0.0
'
// add port to devServer config
// add port to devServer config
devWebpackConfig
.
devServer
.
port
=
port
devWebpackConfig
.
devServer
.
port
=
port
...
...
config/index.js
View file @
a7bced1c
...
@@ -10,10 +10,19 @@ module.exports = {
...
@@ -10,10 +10,19 @@ module.exports = {
// Paths
// Paths
assetsSubDirectory
:
'
static
'
,
assetsSubDirectory
:
'
static
'
,
assetsPublicPath
:
'
/
'
,
assetsPublicPath
:
'
/
'
,
proxyTable
:
{},
proxyTable
:
{
'
/text
'
:{
target
:
'
http://recruit-ai3.liangkebang.net
'
,
changeOrigin
:
true
,
pathRewrite
:{
'
^/text
'
:
''
}
}
},
// Various Dev Server settings
// Various Dev Server settings
host
:
'
localhost
'
,
// can be overwritten by process.env.HOST
host
:
'
192.168.28.10
'
,
// can be overwritten by process.env.HOST
port
:
8080
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
port
:
8080
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser
:
true
,
autoOpenBrowser
:
true
,
errorOverlay
:
true
,
errorOverlay
:
true
,
...
...
package-lock.json
View file @
a7bced1c
...
@@ -3276,6 +3276,11 @@
...
@@ -3276,6 +3276,11 @@
"event-emitter"
:
"~0.3.5"
"event-emitter"
:
"~0.3.5"
}
}
},
},
"es6-promise"
:
{
"version"
:
"4.2.8"
,
"resolved"
:
"https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz"
,
"integrity"
:
"sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w=="
},
"es6-set"
:
{
"es6-set"
:
{
"version"
:
"0.1.5"
,
"version"
:
"0.1.5"
,
"resolved"
:
"http://npmprivate.quantgroups.com/es6-set/-/es6-set-0.1.5.tgz"
,
"resolved"
:
"http://npmprivate.quantgroups.com/es6-set/-/es6-set-0.1.5.tgz"
,
...
...
package.json
View file @
a7bced1c
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
},
},
"dependencies"
:
{
"dependencies"
:
{
"
axios
"
:
"
^0.19.0
"
,
"
axios
"
:
"
^0.19.0
"
,
"
es6-promise
"
:
"
^4.2.8
"
,
"
iview
"
:
"
^3.4.2
"
,
"
iview
"
:
"
^3.4.2
"
,
"
less
"
:
"
^3.9.0
"
,
"
less
"
:
"
^3.9.0
"
,
"
less-loader
"
:
"
^5.0.0
"
,
"
less-loader
"
:
"
^5.0.0
"
,
...
...
src/api/interview.server.js
0 → 100644
View file @
a7bced1c
import
axios
from
'
../service/http.service
'
import
{
baseApi
,
contractApi
}
from
'
../config/env.config
'
import
qs
from
'
qs
'
\ No newline at end of file
src/api/login.server.js
0 → 100644
View file @
a7bced1c
import
axios
from
'
../service/http.service
'
import
{
baseApi
,
contractApi
}
from
'
../config/env.config
'
import
qs
from
'
qs
'
//登录
export
function
login
(
params
)
{
// params=qs.stringify(params)
return
axios
.
post
(
`/text/api/login/doLogin`
,
params
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
}})
}
\ No newline at end of file
src/api/resume.server.js
0 → 100644
View file @
a7bced1c
import
axios
from
'
../service/http.service
'
import
{
baseApi
,
contractApi
}
from
'
../config/env.config
'
import
qs
from
'
qs
'
// 查询简历列表
export
function
serchList
(
parmars
){
return
axios
.
post
(
`/text/api/resume/findList`
,
parmars
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
}})
}
\ No newline at end of file
src/api/stystem.server.js
View file @
a7bced1c
...
@@ -4,17 +4,58 @@ import {
...
@@ -4,17 +4,58 @@ import {
}
from
'
../config/env.config
'
}
from
'
../config/env.config
'
import
qs
from
'
qs
'
import
qs
from
'
qs
'
//账号列表查询
//账号列表查询
export
function
queryaccount
(
params
)
{
export
function
queryaccount
List
(
params
)
{
// params = checkParamsVoid(params)
return
axios
.
post
(
`/text/api/user/findList`
,
params
,{
headers
:
{
params
=
qs
.
stringify
(
params
)
'
Content-Type
'
:
'
application/json;
'
,
return
axios
.
post
(
`
${
contractApi
}
/api/user/findList`
,
params
)
}}
)
}
}
//添加账户
//添加账户
export
function
addAccount
(
params
)
{
export
function
addAccount
(
params
)
{
console
.
log
(
params
)
return
axios
.
post
(
`/text/api/user/add`
,
params
,{
headers
:
{
// params =qs.stringify(params)
'
Content-Type
'
:
'
application/json
'
,
return
axios
.
post
(
`
${
contractApi
}
/api/user/add`
,
qs
.
stringify
(
params
),{
headers
:
{
"
X-Requested-With
"
:
"
XMLHttpRequest
"
'
Accept
'
:
'
application/json
'
,
}})
'
Content-Type
'
:
'
application/json
'
}
//删除单条账户
export
function
Delateaccount
(
parmars
){
return
axios
.
get
(
`/text/api/user/delete/
${
parmars
.
id
}
`
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
}})
}
//批量删除
export
function
delateAllAccount
(
params
){
return
axios
.
post
(
`/text//api/user/delete`
,
params
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
}})
}
//恢复初始密码
export
function
recoveryPassword
(
parmars
){
return
axios
.
post
(
`/text/api/user/initial/
${
parmars
.
id
}
`
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
}})
}
//查询邮箱列表
export
function
queryemailList
(
parmars
){
console
.
log
(
parmars
)
return
axios
.
post
(
`/text/api/email/list`
,
parmars
,{
headers
:
{
'
Content-Type
'
:
'
application/json
'
,
}})
}
// 同步邮箱
export
function
Synchronization
(
parmars
){
parmars
=
qs
.
stringify
(
parmars
)
console
.
log
(
parmars
)
return
axios
.
post
(
`/text/api/email/bind`
,
parmars
,{
headers
:
{
'
Content-Type
'
:
'
application/x-www-form-urlencoded
'
,
'
X-Requested-With
'
:
'
XMLHttpRequest
'
}})
}
// 解绑邮箱
export
function
jiebangEmail
(
parmars
){
parmars
=
qs
.
stringify
(
parmars
)
console
.
log
(
parmars
)
return
axios
.
post
(
`/text/api/email/unbind`
,
parmars
,{
headers
:
{
'
Content-Type
'
:
'
application/x-www-form-urlencoded
'
,
'
X-Requested-With
'
:
'
XMLHttpRequest
'
}})
}})
}
}
\ No newline at end of file
src/config/env.config.js
View file @
a7bced1c
const
protocol
=
window
.
location
.
protocol
const
protocol
=
window
.
location
.
protocol
let
baseApi
=
''
,
contractApi
=
''
let
baseApi
=
''
let
contractApi
=
''
if
(
process
.
env
.
NODE_ENV
===
'
production
'
){
if
(
process
.
env
.
NODE_ENV
===
'
production
'
){
baseApi
=
'
http://credit.xyqb.com
'
baseApi
=
'
http://credit.xyqb.com
'
...
...
src/page/Interview/interview.vue
View file @
a7bced1c
...
@@ -2,11 +2,11 @@
...
@@ -2,11 +2,11 @@
<div
class=
"interview"
>
<div
class=
"interview"
>
<div
class=
"interview-left"
>
<div
class=
"interview-left"
>
<div
class=
"leftcontentTop"
style=
"height:120px"
>
<div
class=
"leftcontentTop"
style=
"height:120px"
>
<div
style=
"height:100%;float:left;width:2
20px
;background:rgb(0,146,255);margin-left:30px"
></div>
<div
style=
"height:100%;float:left;width:2
0%
;background:rgb(0,146,255);margin-left:30px"
></div>
<div
style=
"height:100%;float:left;width:30
0px
;background:rgb(253,85,83);margin-left:30px"
></div>
<div
style=
"height:100%;float:left;width:30
%
;background:rgb(253,85,83);margin-left:30px"
></div>
<div
style=
"height:100%;float:left;width:3
50px
;background:rgb(0,176,160);margin-left:30px"
></div>
<div
style=
"height:100%;float:left;width:3
0%
;background:rgb(0,176,160);margin-left:30px"
></div>
</div>
</div>
<div
class=
"leftcontentContent"
v-for=
"
item in Essentialinformation"
>
<div
class=
"leftcontentContent"
v-for=
"
(item,index) in Essentialinformation "
:key=
'index'
>
<div
class=
"contentMassage"
>
<div
class=
"contentMassage"
>
<p
style=
"font-size:16px;color:black"
>
<p
style=
"font-size:16px;color:black"
>
<span
style=
"margin-left:10px"
>
{{
item
.
name
}}
|
</span>
<span
style=
"margin-left:10px"
>
{{
item
.
name
}}
|
</span>
...
@@ -23,14 +23,19 @@
...
@@ -23,14 +23,19 @@
<div
class=
"contentState"
>
<div
class=
"contentState"
>
<p
style=
"font-size:14px;"
>
<p
style=
"font-size:14px;"
>
<span
style=
"margin-left:20px"
@
click=
"modal4=true"
>
当前状态
</span>
<span
style=
"margin-left:20px"
@
click=
"modal4=true"
>
当前状态
</span>
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0"
@
click=
"Stopinterview"
>
{{
item
.
status
}}
</span>
<!--
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0"
@
click=
"UpdateStatus(item.status)"
>
{{
item
.
status
}}
</span>
-->
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0"
v-if=
"item.status==1"
@
click=
"Stopinterview"
>
终止面试
</span>
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0"
v-if=
"item.status==2"
@
click=
"OPPeninterview"
>
重启面试
</span>
</p>
</p>
<p
style=
"font-size:14px;margin-top:15px"
>
<p
style=
"font-size:14px;margin-top:15px"
>
<span
style=
"margin:0 20px 0 10px"
>
面试结果待定
</span>
<span
style=
"margin:0 20px 0 10px"
>
面试结果待定
</span>
<select
name=
"2"
id=
"qq"
>
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0"
@
click=
"step"
>
变更状态
<br>
<option
value=
"1"
></option>
<option
value=
""
></option>
</select>
<!--
<span
style=
"float:right;margin:0 20px 0 10px;color:#2d8cf0"
>
变更状态
<br>
<Icon
type=
"ios-arrow-down"
style=
"margin-left:20px;color:#999999"
/>
<Icon
type=
"ios-arrow-down"
style=
"margin-left:20px;color:#999999"
/>
</span>
</span>
-->
</p>
</p>
</div>
</div>
...
@@ -40,62 +45,6 @@
...
@@ -40,62 +45,6 @@
<p>
2019-07-02 12:07:33
</p>
<p>
2019-07-02 12:07:33
</p>
</div>
</div>
<div
style=
"height:10px;width:100%;background:#F2F2F2;float:left"
></div>
<div
style=
"height:10px;width:100%;background:#F2F2F2;float:left"
></div>
<div
id=
"step"
>
<ol
class=
"steps"
>
<li
class=
"step-active"
style=
"margin-left:120px"
>
<div
class=
"step-line"
></div>
<div
class=
"step-content"
>
<span
class=
"step-num"
>
1
</span>
<div>
<select
name=
"1"
id=
"a"
style=
"margin-left:10px"
>
<option
value=
"1"
>
准备约面
</option>
<option
value=
"2"
>
已邀约
</option>
<option
value=
"3"
>
邀约失败
</option>
</select>
</div>
</div>
</li>
<li
class=
"step-active"
>
<div
class=
"step-line"
></div>
<div
class=
"step-content"
>
<span
class=
"step-num"
>
2
</span>
<div>
<select
name=
"1"
id=
"a"
style=
"margin-left:10px"
>
<option
value=
"1"
>
面试结果
</option>
<option
value=
"2"
>
面试淘汰
</option>
<option
value=
"3"
>
面试合适
</option>
</select>
</div>
</div>
</li>
<li
class=
"step-active"
>
<div
class=
"step-line"
></div>
<div
class=
"step-content"
>
<span
class=
"step-num"
>
3
</span>
<div
class=
"step-text"
>
<select
name=
"1"
id=
"a"
style=
"margin-left:10px"
>
<option
value=
"1"
>
待offer
</option>
<option
value=
"2"
>
已发offer
</option>
</select>
</div>
</div>
</li>
<li
class=
"step-active"
>
<div
class=
"step-content"
>
<span
class=
"step-num"
>
4
</span>
<div
class=
"step-text"
>
<select
name=
"1"
id=
"a"
style=
"margin-left:10px"
>
<option
value=
"1"
>
待入职
</option>
<option
value=
"2"
>
已入职
</option>
<option
value=
"3"
>
未入职
</option>
</select>
</div>
</div>
</li>
</ol>
</div>
</div>
</div>
<div
class=
"InpageBottom"
>
<div
class=
"InpageBottom"
>
<Page
:total=
"100"
show-elevator
style=
"text-align:center;margin-top:8px"
/>
<Page
:total=
"100"
show-elevator
style=
"text-align:center;margin-top:8px"
/>
...
@@ -104,7 +53,7 @@
...
@@ -104,7 +53,7 @@
<div
class=
"interview-right"
>
<div
class=
"interview-right"
>
<Form
:label-width=
"80"
>
<Form
:label-width=
"80"
>
<FormItem
label=
"关键词:"
style=
"margin-top:20px"
>
<FormItem
label=
"关键词:"
style=
"margin-top:20px"
>
<Input
placeholder=
"请输入关键词"
style=
"width:280px"
></Input
>
<Input
placeholder=
"请输入关键词"
style=
"width:280px"
/
>
</FormItem>
</FormItem>
<FormItem
label=
"学历:"
class=
"Education2"
>
<FormItem
label=
"学历:"
class=
"Education2"
>
<span
v-for=
"(item,index) in Education"
:class=
"
{'active':index==clickIndex1}" @click="clickIndex1 = index" :key="index">
{{
item
}}
</span>
<span
v-for=
"(item,index) in Education"
:class=
"
{'active':index==clickIndex1}" @click="clickIndex1 = index" :key="index">
{{
item
}}
</span>
...
@@ -169,13 +118,13 @@
...
@@ -169,13 +118,13 @@
<h3
style=
"text-align:center"
>
更改约面信息
</h3>
<h3
style=
"text-align:center"
>
更改约面信息
</h3>
<Form
:label-width=
"80"
>
<Form
:label-width=
"80"
>
<FormItem
label=
"*邀约人"
style=
"margin-top:20px"
>
<FormItem
label=
"*邀约人"
style=
"margin-top:20px"
>
<Input
></Input
>
<Input
/
>
</FormItem>
</FormItem>
<FormItem
label=
"*面试时间"
style=
"margin-top:20px"
>
<FormItem
label=
"*面试时间"
style=
"margin-top:20px"
>
<DatePicker
type=
"datetime"
style=
"width:185px"
></DatePicker>
<DatePicker
type=
"datetime"
style=
"width:185px"
></DatePicker>
</FormItem>
</FormItem>
<FormItem
label=
"*面试官"
style=
"margin-top:20px"
>
<FormItem
label=
"*面试官"
style=
"margin-top:20px"
>
<Input
></Input
>
<Input
/
>
</FormItem>
</FormItem>
</Form>
</Form>
<div
slot=
'footer'
style=
"text-align:center"
>
<div
slot=
'footer'
style=
"text-align:center"
>
...
@@ -242,7 +191,7 @@ export default {
...
@@ -242,7 +191,7 @@ export default {
clickIndex2
:
0
,
clickIndex2
:
0
,
clickIndex3
:
0
,
clickIndex3
:
0
,
Education
:[
'
不限
'
,
'
专科以下
'
,
'
专科及以上
'
,
'
本科及以上
'
,
'
硕士及以上
'
,
'
博士及以上
'
,
'
985/211
'
],
Education
:[
'
不限
'
,
'
专科以下
'
,
'
专科及以上
'
,
'
本科及以上
'
,
'
硕士及以上
'
,
'
博士及以上
'
,
'
985/211
'
],
state
:[
'
不限
'
,
'
待邀约
'
,
'
已邀约
'
,
'
待面试
'
,
'
面试合适
'
,
'
面试淘汰
'
,
'
已到公司
'
,
'
待Offer
'
,
'
已发Offer
'
,
'
待入职
'
,
'
已入职
'
,
'
未入职
'
],
state
:[
'
不限
'
,
'
准备约面
'
,
'
已邀约
'
,
'
邀约失败
'
,
'
面试淘汰
'
,
'
待Offer
'
,
'
待入职
'
,
'
已入职
'
,
'
未入职
'
,
'
终止面试
'
],
activeName
:
''
,
activeName
:
''
,
Essentialinformation
:[
Essentialinformation
:[
{
{
...
@@ -252,7 +201,7 @@ export default {
...
@@ -252,7 +201,7 @@ export default {
Invitation
:
'
张三
'
,
Invitation
:
'
张三
'
,
Interviewer
:
'
李四
'
,
Interviewer
:
'
李四
'
,
age
:
'
33岁
'
,
age
:
'
33岁
'
,
status
:
'
终止面试
'
,
status
:
'
1
'
,
sex
:
'
女
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
a
:
'
java工程师
'
,
...
@@ -271,7 +220,7 @@ export default {
...
@@ -271,7 +220,7 @@ export default {
Interviewer
:
'
李四
'
,
Interviewer
:
'
李四
'
,
work
:
'
10年
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
a
:
'
java工程师
'
,
status
:
'
重启面试
'
,
status
:
'
2
'
,
b
:
'
2019-09-02
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
qudao
:
'
boss直聘
'
,
...
@@ -287,7 +236,7 @@ export default {
...
@@ -287,7 +236,7 @@ export default {
Interviewer
:
'
李四
'
,
Interviewer
:
'
李四
'
,
work
:
'
10年
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
a
:
'
java工程师
'
,
status
:
'
重启面试
'
,
status
:
'
2
'
,
b
:
'
2019-09-02
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
qudao
:
'
boss直聘
'
,
...
@@ -317,22 +266,27 @@ export default {
...
@@ -317,22 +266,27 @@ export default {
this
.
status
=
status
this
.
status
=
status
this
.
modal2
=
false
this
.
modal2
=
false
},
},
//操作步骤条
step
(){
// var Ostep=document.getElementById("step")
// console.log(Ostep)
// this.Ostep.style.display="block"
if
(
document
.
getElementById
(
'
step
'
).
style
.
display
==
"
block
"
){
document
.
getElementById
(
'
step
'
).
style
.
display
=
"
none
"
return
}
document
.
getElementById
(
'
step
'
).
style
.
display
=
"
block
"
},
//终止面试弹出框
//终止面试弹出框
Stopinterview
(){
Stopinterview
(){
this
.
modal3
=
true
this
.
modal3
=
true
},
},
//重启面试
OPPeninterview
(){
this
.
modal4
=
true
},
//操作状态
UpdateStatus
(
LLL
){
let
STATUS
=
LLL
;
if
(
this
.
STATUS
==
'
终止面试
'
){
console
.
log
(
this
.
STATUS
)
this
.
modal3
=
true
}
if
(
this
.
STATUS
==
'
重启面试
'
){
this
.
modal4
=
true
}
}
},
},
mounted
(){
mounted
(){
...
@@ -348,14 +302,14 @@ export default {
...
@@ -348,14 +302,14 @@ export default {
}
}
.interview-left
{
.interview-left
{
min-height
:
1100px
;
min-height
:
1100px
;
width
:
1000px
;
width
:
65%
;
float
:
left
;
float
:
left
;
background
:
#F2F2F2
;
background
:
#F2F2F2
;
}
}
.interview-right
{
.interview-right
{
min-height
:
1100px
;
min-height
:
1100px
;
width
:
500px
;
width
:
30%
;
float
:
left
;
float
:
left
;
margin-left
:
3px
;
margin-left
:
3px
;
background
:
white
background
:
white
...
@@ -370,21 +324,21 @@ export default {
...
@@ -370,21 +324,21 @@ export default {
margin-top
:
10px
margin-top
:
10px
}
}
.contentMassage
{
.contentMassage
{
width
:
460px
;
width
:
50%
;
height
:
80px
;
height
:
80px
;
float
:
left
;
float
:
left
;
margin-left
:
15px
;
margin-left
:
15px
;
background
:
white
;
background
:
white
;
}
}
.contentState
{
.contentState
{
width
:
300px
;
width
:
20%
;
height
:
80px
;
height
:
80px
;
float
:
left
;
float
:
left
;
margin-left
:
25px
;
margin-left
:
25px
;
background
:
white
;
background
:
white
;
}
}
.contentRecord
{
.contentRecord
{
width
:
15
0px
;
width
:
15
%
;
height
:
80px
;
height
:
80px
;
float
:
left
;
float
:
left
;
margin-left
:
25px
;
margin-left
:
25px
;
...
@@ -392,14 +346,6 @@ export default {
...
@@ -392,14 +346,6 @@ export default {
text-align
:
center
;
text-align
:
center
;
line-height
:
24px
line-height
:
24px
}
}
#step
{
width
:
100%
;
height
:
64px
;
float
:
left
;
display
:
none
;
border
:
1px
solid
black
;
text-align
:
center
,
}
.Recode
span
{
.Recode
span
{
margin-left
:
20px
margin-left
:
20px
}
}
...
@@ -413,67 +359,6 @@ export default {
...
@@ -413,67 +359,6 @@ export default {
.active
{
.active
{
color
:
blue
;
color
:
blue
;
}
}
ol
.steps
::-webkit-scrollbar
{
/* chrome 隐藏滚动条*/
display
:
none
;
}
ol
.steps
{
list-style
:
none
;
display
:
flex
;
overflow-x
:
auto
;
height
:
64px
;
margin
:
0
auto
;
width
:
850px
}
ol
.steps
:after
,
ol
.steps
li
:after
{
content
:
''
;
display
:
block
;
clear
:
both
;
}
ol
.steps
li
{
float
:
left
;
flex
:
1
;
position
:
relative
;
min-width
:
120px
;
}
ol
.steps
li
.step-line
{
height
:
5px
;
background-color
:
#e0e0e0
;
box-shadow
:
inset
0
1px
1px
rgba
(
0
,
0
,
0
,
.2
);
margin-top
:
15px
;
}
ol
.steps
li
.step-active
.step-line
{
background-color
:
#009ACD
;
box-shadow
:
inset
0
1px
1px
#009ACD
;
margin-top
:
22px
}
ol
.steps
.step-content
{
position
:
absolute
;
top
:
0
;
left
:
-15px
;
text-align
:
center
;
margin-top
:
10px
}
ol
.steps
li
.step-content
.step-num
{
display
:
inline-block
;
height
:
30px
;
width
:
30px
;
color
:
#fff
;
background-color
:
#b9b9b9
;
line-height
:
30px
;
border-radius
:
50%
;
text-align
:
center
;
border
:
2px
solid
rgba
(
224
,
224
,
224
,
1
);
}
ol
.steps
li
.step-active
.step-content
.step-num
{
background-color
:
#009ACD
;
}
ol
.steps
li
.step-end
{
width
:
120px
!important
;
flex
:
inherit
;
}
ol
.steps
li
.step-end
.step-line
{
display
:
none
;
}
select
::-ms-expand
{
display
:
none
;}
select
::-ms-expand
{
display
:
none
;}
select
{
select
{
appearance
:
none
;
appearance
:
none
;
...
...
src/page/login/login.vue
View file @
a7bced1c
...
@@ -13,12 +13,12 @@
...
@@ -13,12 +13,12 @@
<div
class=
"login_content"
>
<div
class=
"login_content"
>
<Form
ref=
"formInline"
:model=
"formInline"
:rules=
"ruleInline"
>
<Form
ref=
"formInline"
:model=
"formInline"
:rules=
"ruleInline"
>
<FormItem
prop=
"user"
>
<FormItem
prop=
"user"
>
<Input
type=
"text"
v-model=
"formInline.user"
placeholder=
"Username"
class=
"wordStyle"
>
<Input
type=
"text"
v-model=
"formInline.user"
placeholder=
"Username"
class=
"wordStyle"
>
<Icon
type=
"ios-person-outline"
slot=
"prepend"
></Icon>
<Icon
type=
"ios-person-outline"
slot=
"prepend"
></Icon>
</Input>
</Input>
</FormItem>
</FormItem>
<FormItem
prop=
"password"
>
<FormItem
prop=
"password"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"Password"
class=
"wordStyle"
>
<Input
type=
"password"
v-model=
"formInline.password"
placeholder=
"Password"
class=
"wordStyle"
>
<Icon
type=
"ios-lock-outline"
slot=
"prepend"
></Icon>
<Icon
type=
"ios-lock-outline"
slot=
"prepend"
></Icon>
</Input>
</Input>
</FormItem>
</FormItem>
...
@@ -35,6 +35,8 @@
...
@@ -35,6 +35,8 @@
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
login
}
from
'
../../api/login.server.js
'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
...
@@ -64,8 +66,18 @@ export default {
...
@@ -64,8 +66,18 @@ export default {
})
})
},
},
login
(){
login
(){
let
params
=
{
userCode
:
this
.
formInline
.
user
,
password
:
this
.
formInline
.
password
}
login
(
params
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
data
!==
''
){
this
.
$router
.
push
({
name
:
"
allResume
"
})
this
.
$router
.
push
({
name
:
"
allResume
"
})
}
}
})
// this.$router.push({name:"allResume"})
}
}
}
}
}
</
script
>
</
script
>
...
@@ -76,19 +88,19 @@ export default {
...
@@ -76,19 +88,19 @@ export default {
background
:
#EAEAEA
;
background
:
#EAEAEA
;
}
}
.login-content
{
.login-content
{
width
:
1
1
00px
;
width
:
1
2
00px
;
height
:
1000px
;
height
:
1000px
;
margin-left
:
500px
margin-left
:
500px
;
}
}
.loginContent-left
{
.loginContent-left
{
float
:
left
;
float
:
left
;
width
:
6
0
0px
;
width
:
6
2
0px
;
height
:
80
0px
height
:
74
0px
}
}
.loginContent-right
{
.loginContent-right
{
float
:
left
;
float
:
left
;
width
:
500px
;
width
:
500px
;
height
:
80
0px
;
height
:
74
0px
;
background
:
#ffffff
background
:
#ffffff
}
}
.loginContent-left
img
{
.loginContent-left
img
{
...
...
src/page/resume/allResume.vue
View file @
a7bced1c
...
@@ -3,19 +3,19 @@
...
@@ -3,19 +3,19 @@
<div
class=
"allResume-left"
>
<div
class=
"allResume-left"
>
<Form
:label-width=
"80"
>
<Form
:label-width=
"80"
>
<FormItem
label=
"关键词:"
style=
"margin-top:20px"
>
<FormItem
label=
"关键词:"
style=
"margin-top:20px"
>
<Input
placeholder=
"请输入关键词"
style=
"width:300px"
></Input
>
<Input
placeholder=
"请输入关键词"
style=
"width:300px"
v-model=
"keywords"
/
>
</FormItem>
</FormItem>
<FormItem
label=
"历任公司:"
>
<FormItem
label=
"历任公司:"
>
<Input
placeholder=
"请输入历任公司"
style=
"width:300px"
></Input
>
<Input
placeholder=
"请输入历任公司"
style=
"width:300px"
v-model=
"lrgs"
/
>
</FormItem>
</FormItem>
<FormItem
label=
"性别:"
class=
"sex"
>
<FormItem
label=
"性别:"
class=
"sex"
>
<span
v-for=
"(item,index) in sexs"
:class=
"
{'active':index==clickIndex1}" @click="
clickIndex1 = index" :key="index"
>
{{
item
}}
</span>
<span
v-for=
"(item,index) in sexs"
:class=
"
{'active':index==clickIndex1}" @click="
selectElement1(item,index)" :key="index"
>
{{
item
}}
</span>
</FormItem>
</FormItem>
<FormItem
label=
"学历:"
class=
"Education"
>
<FormItem
label=
"学历:"
class=
"Education"
>
<span
v-for=
"(item,index) in Education"
:class=
"
{'active':index==clickIndex2}" @click="
clickIndex2 = index
" :key="index">
{{
item
}}
</span>
<span
v-for=
"(item,index) in Education"
:class=
"
{'active':index==clickIndex2}" @click="
selectElement2(item,index)
" :key="index">
{{
item
}}
</span>
</FormItem>
</FormItem>
<FormItem
label=
"状态:"
class=
"state"
>
<FormItem
label=
"状态:"
class=
"state"
>
<span
v-for=
"(item,index) in state"
:class=
"
{'active':index==clickIndex3}"
@click="clickIndex3 = index
" :key="index">
{{
item
}}
</span>
<span
v-for=
"(item,index) in state"
:class=
"
{'active':index==clickIndex3}"
@click="selectElement3(item,index)
" :key="index">
{{
item
}}
</span>
</FormItem>
</FormItem>
<FormItem
label=
"工作年限:"
>
<FormItem
label=
"工作年限:"
>
<span
style=
"width:100px"
>
<span
style=
"width:100px"
>
...
@@ -59,51 +59,50 @@
...
@@ -59,51 +59,50 @@
<div
class=
"allResume-right"
>
<div
class=
"allResume-right"
>
<div
class=
"resumeRightContentTop"
>
<div
class=
"resumeRightContentTop"
>
<div
style=
"width:100%;height:80px;margin-top:20px"
>
<div
style=
"width:100%;height:80px;margin-top:20px"
>
<div
style=
"width:
500px
;height:100%;float:left;background:rgb(61,169,247);margin-left:60px"
></div>
<div
style=
"width:
45%
;height:100%;float:left;background:rgb(61,169,247);margin-left:60px"
></div>
<div
style=
"width:
600px
;height:100%;float:left;background:rgb(253,85,83);margin-left:30px"
></div>
<div
style=
"width:
45%
;height:100%;float:left;background:rgb(253,85,83);margin-left:30px"
></div>
</div>
</div>
<div
style=
"margin-top:20px;height:30px;line-height:30px;border-bottom:1px solid black"
>
<div
style=
"margin-top:20px;height:30px;line-height:30px;border-bottom:1px solid black"
>
<input
type=
'checkbox'
class=
'input-checkbox'
v-model=
'checked'
v-on:click=
'checkedAll'
style=
"margin-left:20px"
><span
style=
"margin-left:10px"
>
全选
</span>
<input
type=
'checkbox'
class=
'input-checkbox'
v-model=
'checked'
v-on:click=
'checkedAll'
style=
"margin-left:20px"
><span
style=
"margin-left:10px"
>
全选
</span>
<span
style=
"margin-left:20px;background:#2d8cf0;width:60px;height:30px"
>
下载简历
</span>
<span
style=
"margin-left:20px;background:#2d8cf0;width:60px;height:30px"
>
下载简历
</span>
<span
style=
"margin-left:20px"
>
删除
</span>
<span
style=
"margin-left:20px"
>
删除
</span>
<span
style=
"margin-left:
850px
"
>
导出列表
</span>
<span
style=
"margin-left:
73%
"
>
导出列表
</span>
</div>
</div>
<div
class=
"Resumecontent"
>
<div
class=
"Resumecontent"
>
<div
v-for=
'(item,i) in ajaxData'
:key=
"i"
id=
"a"
>
<div
v-for=
'(item,i) in ajaxData'
:key=
"i"
id=
"a"
>
<div
style=
"width:500px;float:left;"
class=
"massage"
>
<div
style=
"width:500px;float:left;"
class=
"massage"
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
>
<span>
{{
item
.
name
}}
|
</span><span>
{{
item
.
phone
}}
|
</span><span>
{{
item
.
age
}}
|
</span>
<span>
{{
item
.
ownerName
}}
|
</span><span>
{{
item
.
ownerMobile
}}
|
</span><span>
{{
item
.
ownerAge
}}
岁
|
</span>
<span>
{{
item
.
sex
}}
|
</span><span>
{{
item
.
work
}}
|
</span><span>
{{
item
.
a
}}
<br></span>
<span>
{{
item
.
ownerSex
}}
|
</span><span>
{{
item
.
ownerWorkYears
}}
|
</span><span>
{{
item
.
ownerExpectTitles
}}
<br></span>
<span
style=
"margin-left:20px"
>
{{
item
.
b
}}
</span><span>
{{
item
.
data
}}
投递 |
</span>
<span
>
{{
item
.
modifyTime
}}
投递 |
</span>
<span>
{{
item
.
qudao
}}
|
</span><span>
{{
item
.
email
}}
</span><br>
<span>
{{
item
.
optSource
}}
|
</span><span>
{{
item
.
srcSite
}}
</span><br>
</div>
</div>
<div
style=
"width:300px;float:left;height:60px;text-align:right;margin-left:40px"
>
<div
style=
"width:300px;float:left;height:60px;text-align:right;margin-left:40px"
>
<span
style=
"margin-right:30px;margin-top:5px"
v-if=
"item.
status==1
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
面试合适
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-if=
"item.
flowStatus=='INTERVIEW_OK'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
面试合适
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==2
"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试淘汰
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='INTERVIEW_FAIL'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试淘汰
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==3"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
面试已终止
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='END'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
终止面试
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==4"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
邀约
失败
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='SEE_FAIL'"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
约面
失败
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==5
"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
未入职
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='NO_ENTRY'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:red"
/><span
style=
"margin-left:10px"
>
未入职
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==6
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
准备约面
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='TO_SEE'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
准备约面
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==7
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已邀约
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='HAS_SEE'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已邀约
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==8"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
面试结果待定
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='OPTION'"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
备选
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==9
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待Offer
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='TO_SENT_OFFER'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
待Offer
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==10
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已发Offer
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='TO_SENT_OFFER'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已发Offer
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==11
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
代入职
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus=='TO_ENTRY('
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
代入职
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
status==12
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已入职
</span></span>
<span
style=
"margin-right:30px;margin-top:5px"
v-else-if=
"item.
flowStatus==' HAS_ENTRY'
"
><Icon
type=
"ios-radio-button-on"
style=
"color:#43CD80"
/><span
style=
"margin-left:10px"
>
已入职
</span></span>
<select
name=
"1"
id=
"a"
style=
"margin-right:20px;margin-top:5px"
@
change=
"selectFn($event)"
v-else
=
"item.status==13
"
>
<select
name=
"1"
id=
"a"
style=
"margin-right:20px;margin-top:5px"
@
change=
"selectFn($event)"
v-else
-if=
"item.status=='TO_DO'
"
>
<option
value=
"1"
>
待处理
</option>
<option
value=
"1"
>
待处理
</option>
<option
value=
"2"
>
pass
</option>
<option
value=
"2"
>
pass
</option>
<option
value=
"3"
@
click=
"modal2=true"
>
准备约面
</option>
<option
value=
"3"
>
准备约面
</option>
<option
value=
"4"
>
备选
</option>
<option
value=
"4"
>
备选
</option>
</select>
</select>
<p
style=
"font-size:18px;margin:5px 35px 0 0"
><span><Icon
type=
"md-download"
/></span>
<p
style=
"font-size:18px;margin:5px 35px 0 0"
><span><Icon
type=
"md-download"
/></span>
<span
><Icon
type=
"md-trash"
/></span></p>
<span
><Icon
type=
"md-trash"
/></span></p>
</div>
</div>
<div
style=
"width:190px;float:left;height:60px;margin-left:40px"
>
<div
style=
"width:190px;float:left;height:60px;margin-left:40px"
>
<span
style=
"margin:10px 0 0 10px;display:inline-block"
>
最后操作人 |李宁
</span><br>
<span
style=
"margin:10px 0 0 10px;display:inline-block"
>
最后操作人 |
</span><span
style=
"margin-left:13px"
>
{{
item
.
modifier
}}
</span><br>
<span
>
2019-09-09
</span>
<span
style=
"margin-left:10px"
>
{{
item
.
modifyTime
}}
</span>
<span>
10:09:09
</span>
<p
style=
"height:40px;width:30px;margin:-35px 0 0 180px;color:blue"
@
click=
"RecodeFrame"
>
操作记录
</p>
<p
style=
"height:40px;width:30px;margin:-35px 0 0 150px;color:blue"
@
click=
"RecodeFrame"
>
操作记录
</p>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -164,6 +163,7 @@
...
@@ -164,6 +163,7 @@
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
serchList
}
from
'
../../api/resume.server.js
'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
...
@@ -175,186 +175,21 @@
...
@@ -175,186 +175,21 @@
clickIndex1
:
0
,
clickIndex1
:
0
,
clickIndex2
:
0
,
clickIndex2
:
0
,
clickIndex3
:
0
,
clickIndex3
:
0
,
keywords
:
''
,
lrgs
:
''
,
item
:[],
searchInfo
:{
pageSize
:
30
,
pageIndex
:
''
,
id
:
''
},
arr
:[],
arr
:[],
sexs
:[
'
不限
'
,
'
男
'
,
'
女
'
],
sexs
:[
'
不限
'
,
'
男
'
,
'
女
'
],
Education
:[
'
不限
'
,
'
专科以下
'
,
'
专科及以上
'
,
'
本科及以上
'
,
'
硕士及以上
'
,
'
博士及以上
'
,
'
985/211
'
],
Education
:[
'
不限
'
,
'
专科以下
'
,
'
专科及以上
'
,
'
本科及以上
'
,
'
硕士及以上
'
,
'
博士及以上
'
,
'
985/211
'
],
state
:[
'
不限
'
,
'
待处理
'
,
'
备选
'
,
'
Pass
'
,
'
待约面
'
,
'
已约面
'
,
'
约面失败
'
,
'
面试合适
'
,
'
面试淘汰
'
,
'
已发Offer
'
,
'
待发Offer
'
,
'
已入职
'
,
'
未入职
'
,
'
流程终止
'
],
state
:[
'
不限
'
,
'
待处理
'
,
'
备选
'
,
'
Pass
'
,
'
准备约面
'
,
'
已邀约
'
,
'
邀约失败
'
,
'
面试淘汰
'
,
'
待Offer
'
,
'
待入职
'
,
'
已入职
'
,
'
未入职
'
,
'
终止面试
'
],
active
:
''
,
active
:
''
,
value
:[],
value
:[],
ajaxData
:
[{
// 后台请求过来的数据
ajaxData
:
[],
id
:
'
1
'
,
name
:
'
李宁
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
status
:
13
,
sex
:
'
女
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
2
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
3
'
,
name
:
'
oo
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
status
:
3
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
1
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
4
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},
{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
5
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
6
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
7
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
8
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
9
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
10
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
11
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
pp
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
status
:
12
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
}
],
checkData
:
[]
// 双向数据绑定的数组
checkData
:
[]
// 双向数据绑定的数组
}
}
},
},
...
@@ -402,9 +237,55 @@
...
@@ -402,9 +237,55 @@
this
.
$Message
.
info
(
'
Clicked cancel
'
);
this
.
$Message
.
info
(
'
Clicked cancel
'
);
},
},
// *********************************************
// *********************************************
//查询简历列表
SearchList
(){
let
parmars
=
{
pageSize
:
this
.
searchInfo
.
pageSize
,
pageIndex
:
this
.
searchInfo
.
pageIndex
}
serchList
(
parmars
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
data
.
success
==
true
){
console
.
log
(
res
.
data
.
body
.
items
)
this
.
ajaxData
=
res
.
items
.
map
((
item
,
index
)
=>
{
item
.
ownerName
=
item
.
ownerName
item
.
ownerSex
=
item
.
ownerSex
item
.
belongs
=
item
.
belongs
item
.
emailSendtime
=
item
.
emailSendtime
item
.
ownerMobile
=
item
.
ownerMobile
item
.
ownerHighestDegree
=
item
.
ownerHighestDegree
item
.
ownerExpectTitles
=
item
.
ownerExpectTitles
item
.
flowStatus
=
item
.
flowStatus
item
.
ownerAge
=
item
.
ownerAge
item
.
ownerWorkYears
=
item
.
ownerWorkYears
item
.
modifyTime
=
item
.
modifyTime
item
.
srcSite
=
item
.
srcSite
item
.
optSource
=
item
.
optSource
item
.
modifier
=
item
.
modifier
return
item
})
}
})
},
//选择元素
selectElement1
(
tItem
,
Tindex
){
let
Item
=
tItem
;
this
.
clickIndex1
=
Tindex
console
.
log
(
Item
)
},
selectElement2
(
tItem
,
Tindex
){
let
Item
=
tItem
;
this
.
clickIndex2
=
Tindex
console
.
log
(
Item
)
},
selectElement3
(
tItem
,
Tindex
){
let
Item
=
tItem
;
this
.
clickIndex3
=
Tindex
console
.
log
(
Item
)
},
},
},
mounted
(){
mounted
(){
this
.
SearchList
()
}
}
}
}
</
script
>
</
script
>
...
@@ -415,16 +296,18 @@
...
@@ -415,16 +296,18 @@
}
}
.allResume-left
{
.allResume-left
{
min-height
:
1100px
;
min-height
:
1100px
;
width
:
410px
;
/* width: 410px; */
width
:
26%
;
float
:
left
;
float
:
left
;
border
:
1px
solid
#999999
;
/* border: 1px solid #999999; */
}
}
.allResume-right
{
.allResume-right
{
/* height: 1500px; */
/* height: 1500px; */
min-height
:
10
00px
;
min-height
:
18
00px
;
width
:
1240px
;
width
:
72%
;
float
:
left
;
float
:
left
;
margin-left
:
15px
margin-left
:
15px
;
border
:
1px
solid
black
}
}
.Resumecontent
{
.Resumecontent
{
width
:
100%
;
width
:
100%
;
...
@@ -443,7 +326,7 @@
...
@@ -443,7 +326,7 @@
}
}
.pageBottom
{
.pageBottom
{
height
:
40px
;
height
:
40px
;
width
:
1
2
00px
;
width
:
1
0
00px
;
background
:
#EDEDED
;
background
:
#EDEDED
;
position
:
fixed
;
position
:
fixed
;
bottom
:
0
;
bottom
:
0
;
...
@@ -472,14 +355,26 @@ color: blue
...
@@ -472,14 +355,26 @@ color: blue
.Education
span
:not
(
:first-child
)
{
.Education
span
:not
(
:first-child
)
{
margin-left
:
35px
margin-left
:
35px
}
}
.Education
span
:nth-child
(
2
)
{
margin-left
:
44px
}
.Education
span
:nth-child
(
3
)
{
margin-left
:
54px
}
.Education
span
:nth-child
(
4
)
{
margin-left
:
48px
}
.Education
span
:nth-child
(
5
)
{
.Education
span
:nth-child
(
5
)
{
margin-left
:
4
px
margin-left
:
5
px
}
}
.state
span
:not
(
:first-child
)
{
.state
span
:not
(
:first-child
)
{
margin-left
:
2
3
px
margin-left
:
2
8
px
}
}
.state
span
:nth-child
(
7
)
{
.state
span
:nth-child
(
7
)
{
margin-left
:
2px
margin-left
:
3px
}
.state
span
:nth-child
(
6
)
{
margin-left
:
20px
}
}
.state
span
:nth-child
(
8
)
{
.state
span
:nth-child
(
8
)
{
margin-left
:
15px
margin-left
:
15px
...
@@ -492,8 +387,12 @@ color: blue
...
@@ -492,8 +387,12 @@ color: blue
}
}
.state
span
:nth-child
(
11
)
{
.state
span
:nth-child
(
11
)
{
margin-left
:
10px
margin-left
:
10px
}
.state
span
:nth-child
(
12
)
{
}
margin-left
:
3px
.state
span
:nth-child
(
12
)
{
margin-left
:
19px
}
.state
span
:nth-child
(
13
)
{
margin-left
:
6px
}
}
.text1
{
.text1
{
width
:
80%
;
width
:
80%
;
...
...
src/page/system/QRcode.vue
View file @
a7bced1c
<
template
>
<
template
>
<div></div>
<div>
<h3
style=
"color:#2d8cf0;font-size:18px;margin:14px 0 0 15px"
>
二维码管理
</h3>
<h5
style=
"margin:24px 0 0 15px;display:inline-block"
>
前台扫描二维码
</h5>
<div
class=
"Qrcode"
>
<img
src=
""
>
</div>
<p
class=
"xiazai"
>
下载
</p>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
...
@@ -7,5 +14,22 @@ export default {
...
@@ -7,5 +14,22 @@ export default {
}
}
</
script
>
</
script
>
<
style
>
<
style
>
.Qrcode
{
height
:
200px
;
width
:
200px
;
border
:
1px
solid
black
;
margin
:
20px
0
0
15px
}
.xiazai
{
height
:
30px
;
width
:
100px
;
background
:
#2d8cf0
;
color
:
white
;
line-height
:
30px
;
text-align
:
center
;
border-radius
:
5px
;
position
:
absolute
;
left
:
230px
;
top
:
270px
}
</
style
>
</
style
>
src/page/system/account.vue
View file @
a7bced1c
...
@@ -7,16 +7,16 @@
...
@@ -7,16 +7,16 @@
</p>
</p>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
>
<FormItem
label=
"配置登录账号"
style=
"margin-top:20px"
prop=
"PhoneNumber"
>
<FormItem
label=
"配置登录账号"
style=
"margin-top:20px"
prop=
"PhoneNumber"
>
<Input
placeholder=
"请输入正确的手机号"
style=
"width:300px"
v-model=
"formInline.PhoneNumber"
></Input
>
<Input
placeholder=
"请输入正确的手机号"
style=
"width:300px"
v-model=
"formInline.PhoneNumber"
/
>
</FormItem>
</FormItem>
<FormItem
label=
"绑定真实姓名"
style=
"margin-top:20px"
prop=
"PerName"
>
<FormItem
label=
"绑定真实姓名"
style=
"margin-top:20px"
prop=
"PerName"
>
<Input
placeholder=
"请输入真实姓名"
style=
"width:300px"
v-model=
"formInline.PerName"
></Input
>
<Input
placeholder=
"请输入真实姓名"
style=
"width:300px"
v-model=
"formInline.PerName"
/
>
</FormItem>
</FormItem>
</Form>
</Form>
<p>
<p>
<span
style=
"margin-left:18px"
>
初始登录密码
</span>
<span
style=
"margin-left:18px"
>
初始登录密码
</span>
<span
style=
"margin-left:8px"
>
默认是"123456",新用户首次登录需修改后才能进入系统。
</span>
<span
style=
"margin-left:8px"
>
默认是"123456",新用户首次登录需修改后才能进入系统。
</span>
<span
style=
""
><button
style=
"width:55px;height:25px;font-size:14px;background:#
436EEE;color:#ffffff;margin-left:20
px"
@
click=
"addacount"
>
添加
</button></span>
<span
style=
""
><button
style=
"width:55px;height:25px;font-size:14px;background:#
2d8cf0;color:#ffffff;margin-left:20px; border-radius: 5
px"
@
click=
"addacount"
>
添加
</button></span>
</p>
</p>
</div>
</div>
<div
class=
"accountMange"
>
<div
class=
"accountMange"
>
...
@@ -27,17 +27,16 @@
...
@@ -27,17 +27,16 @@
<p
style=
"border-bottom:1px solid black;line-height:30px"
>
<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"
><span
style=
"margin-left:10px"
>
全选
</span>
<input
type=
'checkbox'
class=
'input-checkbox'
v-model=
'checked'
v-on:click=
'checkedAll'
style=
"margin-left:25px"
><span
style=
"margin-left:10px"
>
全选
</span>
<span
style=
"margin-left:40px;color:#2d8cf0"
>
删除
</span>
<span
style=
"margin-left:40px;color:#2d8cf0"
>
删除
</span>
</p>
</p>
<!--
<Table
ref=
"selection"
:columns=
"columns4"
:data=
"data1"
></Table>
-->
<!--
<Table
ref=
"selection"
:columns=
"columns4"
:data=
"data1"
></Table>
-->
<div
v-for=
'item in ajaxData'
:key=
"item.id"
>
<div
v-for=
'item in ajaxData'
:key=
"item.id"
class=
"detailQQ"
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
style=
"margin-left:25px;margin-top:20px"
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
style=
"margin-left:25px;margin-top:20px"
>
<span
style=
"margin-left:5px"
>
{{
item
.
name
}}
</span>
<span
style=
"margin-left:5px"
>
{{
item
.
userName
}}
</span>
<span
style=
"margin-left:35px"
>
{{
item
.
phone
}}
</span>
<span
style=
"margin-left:35px"
>
{{
item
.
userCode
}}
</span>
<span
style=
"margin-left:35px"
>
{{
item
.
b
}}
</span>
<span
style=
"margin-left:35px"
>
{{
item
.
createTime
}}
</span>
<span
style=
"margin-left:10px"
>
{{
item
.
data
}}
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
@
click=
"recoveryModal(item.id)"
>
恢复初始密码
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
@
click=
"modal1=true"
>
恢复初始密码
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
@
click=
"delateMaodal(item.id)"
>
删除
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
>
删除
</span>
</div>
</div>
<div
class=
"pageBottom"
>
<div
class=
"pageBottom"
>
<Page
:total=
"100"
show-elevator
style=
"text-align:center;margin-top:8px"
/>
<Page
:total=
"100"
show-elevator
style=
"text-align:center;margin-top:8px"
/>
...
@@ -51,26 +50,46 @@
...
@@ -51,26 +50,46 @@
width=
'250px'
width=
'250px'
@
on-cancel=
"cancel"
>
@
on-cancel=
"cancel"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<h3
style=
"text-align:center"
>
提示
</h3>
<p>
是否将该账号的密码,恢复至初始状态。
</p>
<p
style=
"text-align:center"
>
是否将该账号的密码,恢复至初始状态。
</p>
<div
slot=
'footer'
style=
"text-align:center"
>
<div
slot=
'footer'
style=
"text-align:center"
>
<Button
type=
'primary'
@
click=
'modal1=false'
>
取消
</Button>
<Button
type=
'primary'
@
click=
'modal1=false'
>
取消
</Button>
<Button
type=
'primary'
>
确定
</Button>
<Button
type=
'primary'
@
click=
"recovery()"
>
确定
</Button>
</div>
</Modal>
<!-- 删除当前的账户 -->
<Modal
v-model=
"modal2"
@
on-ok=
"ok"
:closable=
"false"
width=
'250px'
@
on-cancel=
"cancel"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<p
style=
"text-align:center"
>
是否确定删除当前账户
</p>
<div
slot=
'footer'
style=
"text-align:center"
>
<Button
type=
'primary'
@
click=
'modal2=false'
>
取消
</Button>
<Button
type=
'primary'
@
click=
"delateAccount"
>
确定
</Button>
</div>
</div>
</Modal>
</Modal>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
queryaccount
,
addAccount
}
from
'
../../api/stystem.server.js
'
import
{
queryaccount
List
,
addAccount
,
Delateaccount
,
delateAllAccount
,
recoveryPassword
}
from
'
../../api/stystem.server.js
'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
modal1
:
false
,
modal1
:
false
,
modal2
:
false
,
checkboxList
:[],
checkboxList
:[],
checked
:
false
,
checked
:
false
,
userName
:
''
,
userName
:
''
,
userCode
:
''
,
userCode
:
''
,
a
:
''
,
id
:
''
,
I
:
''
,
searchInfo
:{
pageSize
:
30
,
pageIndex
:
''
,
id
:
''
},
formInline
:
{
formInline
:
{
PhoneNumber
:
''
,
PhoneNumber
:
''
,
PerName
:
''
PerName
:
''
...
@@ -84,43 +103,7 @@ export default {
...
@@ -84,43 +103,7 @@ export default {
{
type
:
'
string
'
,
message
:
''
,
trigger
:
'
blur
'
}
{
type
:
'
string
'
,
message
:
''
,
trigger
:
'
blur
'
}
]
]
},
},
ajaxData
:
[{
// 后台请求过来的数据
ajaxData
:[],
id
:
'
1
'
,
name
:
'
李宁
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
李宁
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
3
'
,
name
:
'
李宁
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
}],
checkData
:
[]
,
// 双向数据绑定的数组
checkData
:
[]
,
// 双向数据绑定的数组
}
}
},
},
...
@@ -151,13 +134,90 @@ export default {
...
@@ -151,13 +134,90 @@ export default {
userCode
:
this
.
formInline
.
PhoneNumber
,
userCode
:
this
.
formInline
.
PhoneNumber
,
userName
:
this
.
formInline
.
PerName
userName
:
this
.
formInline
.
PerName
}
}
// if(this.userCode==''||this.userName=='') return
if
(
this
.
formInline
.
PhoneNumber
==
''
||
this
.
formInline
.
PerName
==
''
){
this
.
$Message
.
error
(
'
请填写正确的手机号和真实的姓名
'
)
return
}
addAccount
(
parmars
).
then
(
res
=>
{
addAccount
(
parmars
).
then
(
res
=>
{
if
(
res
.
success
){
// if(res.data.success==true
){
this
.
$Message
.
success
(
'
添加成功
'
)
this
.
$Message
.
success
(
'
添加成功
'
)
}
this
.
SearchList
()
this
.
formInline
.
PhoneNumber
=
''
this
.
formInline
.
PerName
=
''
// }
})
})
}
,
//查询账户列表
SearchList
(){
let
parmars
=
{
pageSize
:
this
.
searchInfo
.
pageSize
,
pageIndex
:
this
.
searchInfo
.
pageIndex
}
queryaccountList
(
parmars
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
data
!==
''
){
// console.log(res.data.body.items)
this
.
ajaxData
=
res
.
data
.
body
.
items
.
map
((
item
,
index
)
=>
{
item
.
id
=
item
.
id
item
.
userName
=
item
.
userName
item
.
userCode
=
item
.
userCode
item
.
createTime
=
item
.
createTime
return
item
})
}
})
},
//删除单条账户弹框
delateMaodal
(
DID
){
console
.
log
(
DID
)
this
.
I
=
DID
console
.
log
(
this
.
I
)
this
.
modal2
=
true
},
//删除单条账户
delateAccount
(){
let
parmars
=
{
id
:
this
.
I
}
Delateaccount
(
parmars
).
then
(
res
=>
{
// if(res.data.success==true){
// this.SearchList()
// }
this
.
SearchList
()
})
},
//批量删除账户
delateAll
(
id
){
let
parmars
=
{
1
:
id
}
delateAllAccount
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
){
this
.
$Message
.
success
(
'
删除成功
'
)
}
})
},
//恢复初始密码弹窗
recoveryModal
(
ID
){
console
.
log
(
ID
)
this
.
I
=
ID
console
.
log
(
this
.
I
)
this
.
modal1
=
true
},
//确认恢复初始密码
recovery
(){
let
parmars
=
{
id
:
this
.
I
}
console
.
log
(
parmars
)
recoveryPassword
(
parmars
).
then
(
res
=>
{
console
.
log
(
res
)
if
(
res
.
data
.
success
==
true
){
this
.
$Message
.
success
(
'
恢复密码成功
'
)
this
.
modal1
=
false
}
})
}
}
},
},
watch
:
{
watch
:
{
...
@@ -173,27 +233,14 @@ export default {
...
@@ -173,27 +233,14 @@ export default {
}
}
},
},
mounted
(){
this
.
SearchList
()
}
}
}
</
script
>
</
script
>
<
style
>
<
style
>
/* .account{
width: 100%;
height: 100%;
} */
.addAcount
{
/* width: 1000px; */
height
:
200px
;
/* border: 1px solid black; */
}
.accountMange
{
/* width: 1000px; */
/* height: 1000px; */
/* border: 1px solid black; */
}
.pageBottom
{
.pageBottom
{
height
:
40px
;
height
:
40px
;
width
:
1800px
;
width
:
1800px
;
...
@@ -201,4 +248,20 @@ export default {
...
@@ -201,4 +248,20 @@ export default {
position
:
fixed
;
position
:
fixed
;
bottom
:
0
;
bottom
:
0
;
}
}
.detailQQ
{
height
:
30px
;
width
:
100%
}
.detailQQ
:nth-child
(
2
)
{
width
:
40px
;
display
:
inline-block
;
}
.detailQQ
:nth-child
(
3
)
{
width
:
80px
;
display
:
inline-block
;
}
.detailQQ
:nth-child
(
4
)
{
width
:
180px
;
display
:
inline-block
;
}
</
style
>
</
style
>
src/page/system/emailMange.vue
View file @
a7bced1c
...
@@ -7,20 +7,20 @@
...
@@ -7,20 +7,20 @@
</p>
</p>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
>
<Form
:label-width=
"100"
:model=
"formInline"
:rules=
"ruleInline"
>
<FormItem
label=
"邮箱账号"
style=
"margin-top:20px"
prop=
"emailNumber"
>
<FormItem
label=
"邮箱账号"
style=
"margin-top:20px"
prop=
"emailNumber"
>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.emailNumber"
></Input
>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.emailNumber"
/
>
</FormItem>
</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"
placeholder=
"请选择日期"
style=
"width: 200px"
></DatePicker><br>
<DatePicker
type=
"datetime"
format=
"yyyy-MM-dd HH:mm"
placeholder=
"请选择日期"
style=
"width: 200px"
></DatePicker><br>
<span
style=
"font-size:8px;margin-left:0px;"
><Icon
type=
"md-information-circle"
/>
如不选取默认同步邮箱中的所有简历
</span>
<span
style=
"font-size:8px;margin-left:0px;"
><Icon
type=
"md-information-circle"
/>
如不选取默认同步邮箱中的所有简历
</span>
</FormItem>
</FormItem>
<FormItem
label=
"邮箱密码"
style=
"margin-top:20px; position: absolute;top:110px;left: -80px"
prop=
"emailPsd"
:label-width=
"180"
>
<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"
></Input
><br>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.emailPsd"
/
><br>
<span
style=
"font-size:8px;position: relative;top:0px left:30px"
><Icon
type=
"md-information-circle"
/>
邮箱密码在绑定后再次修改,请及时点击修改来更新。
</span>
<span
style=
"font-size:8px;position: relative;top:0px left:30px"
><Icon
type=
"md-information-circle"
/>
邮箱密码在绑定后再次修改,请及时点击修改来更新。
</span>
</FormItem>
</FormItem>
<FormItem
label=
"所属人"
style=
"margin-top:20px; position: absolute;top:110px;left: 410px"
prop=
"UserName"
:label-width=
"180"
>
<FormItem
label=
"所属人"
style=
"margin-top:20px; position: absolute;top:110px;left: 410px"
prop=
"UserName"
:label-width=
"180"
>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.UserName"
></Input
>
<Input
placeholder=
"请输入企业邮箱"
style=
"width:300px"
v-model=
"formInline.UserName"
/
>
</FormItem>
</FormItem>
<button
type=
"primary"
style=
" width:110px;height:30px;position: absolute;top:130px;left: 910px;border-radius: 5px;background:rgb(0, 146, 255);color:rgb(255,255,255)"
>
绑定并开始同步
</button>
<button
type=
"primary"
style=
" width:110px;height:30px;position: absolute;top:130px;left: 910px;border-radius: 5px;background:rgb(0, 146, 255);color:rgb(255,255,255)"
@
click=
"bindingSynchronization"
>
绑定并开始同步
</button>
</Form>
</Form>
</div>
</div>
<div
class=
"Emailmange"
>
<div
class=
"Emailmange"
>
...
@@ -33,40 +33,119 @@
...
@@ -33,40 +33,119 @@
<input
type=
'checkbox'
class=
'input-checkbox'
v-model=
'checked'
v-on:click=
'checkedAll'
style=
"margin-left:25px"
>
全选
<input
type=
'checkbox'
class=
'input-checkbox'
v-model=
'checked'
v-on:click=
'checkedAll'
style=
"margin-left:25px"
>
全选
<span
style=
"margin-left:40px;color:#2d8cf0"
>
解绑
</span>
<span
style=
"margin-left:40px;color:#2d8cf0"
>
解绑
</span>
</p>
</p>
<div
v-for=
'item in ajaxData'
:key=
"item.id"
>
<div
v-for=
'item in ajaxData'
:key=
"item.id"
class=
"emailList"
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
style=
"margin-left:25px;margin-top:20px"
>
<input
type=
'checkbox'
name=
'checkboxinput'
class=
'input-checkbox'
v-model=
'checkboxList'
:value=
"item.id"
style=
"margin-left:25px;margin-top:20px"
>
<span
style=
"margin-left:5px
;width:100px"
>
{{
item
.
name
}}
</span>
<span
style=
"margin-left:5px
"
>
{{
item
.
belongs
}}
</span>
<span
style=
"margin-left:35px;
width:160px"
>
{{
item
.
phon
e
}}
</span>
<span
style=
"margin-left:35px;
"
>
{{
item
.
emailNam
e
}}
</span>
<span
style=
"margin-left:35px;
width:200px"
>
{{
item
.
b
}}
</span>
<span
style=
"margin-left:35px;
"
>
同步时间|
{{
item
.
syncStartDate
}}
开始
</span>
<span
style=
"margin-left:10px"
>
{{
item
.
data
}}
</span>
<span
style=
"margin-left:10px"
>
新建时间|
{{
item
.
lastSyncDate
}}
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
>
恢复初始密码
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
@
click=
"modal4=true"
>
修改
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
>
删除
</span>
<span
style=
"margin-left:35px;color:#2d8cf0"
@
click=
"UnbindingModal(item.emailName)"
>
解绑
</span>
<span
style=
"margin-left:150px"
>
正在进行
</span>
<span
style=
"margin-left:150px"
>
正在进行
</span>
</div>
</div>
</div>
</div>
<!--
恢复初始密码
-->
<!--
同步失败
-->
<Modal
<Modal
v-model=
"modal1"
v-model=
"modal1"
@
on-ok=
"ok"
@
on-ok=
"ok"
:closable=
"false"
:closable=
"false"
:footer-hide=
"true"
width=
'250px'
width=
'250px'
@
on-cancel=
"cancel"
>
@
on-cancel=
"cancel"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<h3
style=
"text-align:center"
>
提示
</h3>
<p>
是否将该账号的密码,恢复至初始状态。
</p>
<p
style=
"text-align:center"
>
系统错误,请联系开发者!
</p>
<h2
style=
"text-align:center;font-size:18px;color:#2d8cf0"
@
click=
"modal1=false"
>
确定
</h2>
</Modal>
<!-- 同步成功 -->
<Modal
v-model=
"modal2"
@
on-ok=
"ok"
:closable=
"false"
:footer-hide=
"true"
width=
'250px'
@
on-cancel=
"cancel"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<p
style=
"text-align:center"
>
同步完成,如密码发生改变,请及时点击
<span>
修改
</span>
来重置密码
</p>
<h2
style=
"text-align:center;font-size:18px;color:#2d8cf0"
@
click=
"modal2=false"
>
我已知晓
</h2>
</Modal>
<!-- 同步绑定 -->
<Modal
v-model=
"modal3"
@
on-ok=
"ok"
:closable=
"false"
:footer-hide=
"true"
width=
'250px'
@
on-cancel=
"cancel"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<p
style=
"text-align:center;line-height:40px"
>
同步中,请稍后...
</p>
</Modal>
<!-- 修改弹出框 -->
<Modal
v-model=
"modal4"
@
on-ok=
"ok"
:closable=
"false"
width=
'860px'
@
on-cancel=
"cancel"
>
<span>
修改绑定邮箱
</span>
<div
style=
"height:160px"
>
<Form>
<FormItem
label=
"邮箱账号"
style=
"margin-top:20px"
prop=
"emailNumber"
>
<Input
placeholder=
"请输入企业邮箱"
v-model=
"formInline.emailNumber"
style=
"width:300px"
/>
</FormItem>
<FormItem
label=
"请选择开始同步的时间"
:label-width=
"180"
style=
"position: absolute;top:50px;left:350px"
>
<DatePicker
type=
"datetime"
format=
"yyyy-MM-dd HH:mm"
placeholder=
"请选择日期"
style=
"width: 200px"
></DatePicker><br>
<span
style=
"font-size:8px;margin-left:0px;"
><Icon
type=
"md-information-circle"
/>
如不选取默认同步邮箱中的所有简历
</span>
</FormItem>
<FormItem
label=
"邮箱密码"
prop=
"emailPsd"
:label-width=
"180"
style=
"position: absolute;top:130px;left:-105px"
>
<Input
placeholder=
"请输入企业邮箱密码"
style=
"width:300px"
v-model=
"formInline.emailPsd"
/><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: 300px"
prop=
"UserName"
:label-width=
"180"
>
<Input
placeholder=
"请输入所属着真实的姓名"
style=
"width:280px"
v-model=
"formInline.UserName"
/>
</FormItem>
</Form>
</div>
<div
slot=
'footer'
style=
"text-align:center"
>
<Button
type=
'primary'
@
click=
'modal4=false'
>
取消
</Button>
<Button
type=
'primary'
>
修改并重新绑定
</Button>
<Button
type=
'primary'
>
仅修改
</Button>
</div>
</Modal>
<!-- 解绑弹出框 -->
<Modal
v-model=
"modal5"
@
on-ok=
"ok"
:closable=
"false"
width=
'250px'
@
on-cancel=
"cancel"
>
<h3
style=
"text-align:center"
>
提示
</h3>
<p
style=
"text-align:center"
>
解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?
</p>
<div
slot=
'footer'
style=
"text-align:center"
>
<div
slot=
'footer'
style=
"text-align:center"
>
<Button
type=
'primary'
@
click=
'modal
1
=false'
>
取消
</Button>
<Button
type=
'primary'
@
click=
'modal
5
=false'
>
取消
</Button>
<Button
type=
'primary'
>
确定
</Button>
<Button
type=
'primary'
@
click=
"Unbinding"
>
确认
</Button>
</div>
</div>
</Modal>
</Modal>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
queryemailList
,
Synchronization
,
jiebangEmail
}
from
'
../../api/stystem.server.js
'
export
default
{
export
default
{
data
(){
data
(){
return
{
return
{
modal1
:
false
,
modal1
:
false
,
modal2
:
false
,
modal3
:
false
,
modal4
:
false
,
modal5
:
false
,
NAme
:
""
,
checkboxList
:[],
checkboxList
:[],
checked
:
false
,
checked
:
false
,
searchInfo
:{
pageSize
:
30
,
pageIndex
:
''
,
id
:
''
},
formInline
:
{
formInline
:
{
emailNumber
:
''
,
emailNumber
:
''
,
emailPsd
:
''
,
emailPsd
:
''
,
...
@@ -86,43 +165,7 @@ export default {
...
@@ -86,43 +165,7 @@ export default {
{
type
:
'
string
'
,
min
:
4
,
message
:
''
,
trigger
:
'
blur
'
}
{
type
:
'
string
'
,
min
:
4
,
message
:
''
,
trigger
:
'
blur
'
}
]
]
},
},
ajaxData
:
[{
// 后台请求过来的数据
ajaxData
:
[],
id
:
'
1
'
,
name
:
'
李宁Q
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
2
'
,
name
:
'
李宁
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
},{
id
:
'
3
'
,
name
:
'
李宁
'
,
phone
:
'
12345678998
'
,
age
:
'
33岁
'
,
sex
:
'
女
'
,
work
:
'
10年
'
,
a
:
'
java工程师
'
,
b
:
'
2019-09-02
'
,
data
:
'
13:09:09
'
,
qudao
:
'
boss直聘
'
,
email
:
'
445151511516516@quiwhu.cn
'
}],
checkData
:
[]
,
// 双向数据绑定的数组
checkData
:
[]
,
// 双向数据绑定的数组
}
}
},
},
...
@@ -138,10 +181,72 @@ export default {
...
@@ -138,10 +181,72 @@ export default {
});
});
}
}
},
},
//确认恢复初始密码
ok
()
{
Recognitionrecovery
(){
this
.
$Message
.
info
(
'
Clicked ok
'
);
},
cancel
()
{
this
.
$Message
.
info
(
'
Clicked cancel
'
);
},
//绑定同步邮箱
bindingSynchronization
(){
if
(
this
.
formInline
.
emailNumber
==
''
&&
this
.
formInline
.
emailPsd
==
''
&&
this
.
formInline
.
UserName
==
''
){
this
.
$Message
.
error
(
'
请正确填写信息
'
)
return
}
this
.
modal3
=
true
let
parmars
=
{
emailName
:
this
.
formInline
.
emailNumber
,
emailPassword
:
this
.
formInline
.
emailPsd
,
belongs
:
this
.
formInline
.
UserName
}
Synchronization
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
){
this
.
modal3
=
false
this
.
modal2
=
true
this
.
SearchList
()
}
},()
=>
{
this
.
modal3
=
false
this
.
modal1
=
true
})
},
//查询邮箱列表
SearchList
(){
let
parmars
=
{
pageSize
:
this
.
searchInfo
.
pageSize
,
pageIndex
:
this
.
searchInfo
.
pageIndex
}
queryemailList
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
){
// console.log(res.data.body.items)
this
.
ajaxData
=
res
.
data
.
body
.
items
.
map
((
item
,
index
)
=>
{
item
.
syncStartDate
=
item
.
syncStartDate
item
.
lastSyncDate
=
item
.
lastSyncDate
item
.
belongs
=
item
.
belongs
item
.
emailName
=
item
.
emailName
return
item
})
}
})
},
//解绑弹出框
UnbindingModal
(
EMi
){
this
.
NAme
=
EMi
,
this
.
modal5
=
true
},
},
//确认解绑邮箱
Unbinding
(){
let
parmars
=
{
name
:
this
.
NAme
}
jiebangEmail
(
parmars
).
then
(
res
=>
{
if
(
res
.
data
.
success
==
true
){
this
.
$Message
.
success
(
'
解绑成功
'
)
this
.
modal5
=
false
this
.
SearchList
()
}
})
}
},
},
...
@@ -158,17 +263,14 @@ export default {
...
@@ -158,17 +263,14 @@ export default {
}
}
},
},
mounted
(){
this
.
SearchList
()
}
}
}
</
script
>
</
script
>
<
style
>
<
style
>
.emailMange
{
/* height: 100%;
width:100%; */
/* background: #F2F2F2; */
}
.addEmail
{
.addEmail
{
height
:
220px
;
height
:
220px
;
/* border: 1px solid black; */
/* border: 1px solid black; */
...
@@ -179,4 +281,39 @@ export default {
...
@@ -179,4 +281,39 @@ export default {
/* border: 1px solid black; */
/* border: 1px solid black; */
}
}
.emailList
{
height
:
40px
;
line-height
:
40px
;
width
:
100%
}
.emailList
:nth-child
(
2
)
{
width
:
80px
;
display
:
inline-block
;
}
.emailList
:nth-child
(
3
)
{
width
:
230px
;
display
:
inline-block
;
}
.emailList
:nth-child
(
4
)
{
width
:
230px
;
display
:
inline-block
;
}
.emailList
:nth-child
(
5
)
{
width
:
230px
;
display
:
inline-block
;
}
.emailList
:nth-child
(
6
)
{
width
:
30px
;
display
:
inline-block
;
}
.emailList
:nth-child
(
7
)
{
width
:
30px
;
display
:
inline-block
;
}
.buTon
:nth-child
(
1
)
{
width
:
70px
;
height
:
40px
;
background
:
#2d8cf0
;
color
:
white
}
</
style
>
</
style
>
src/service/http.service.js
View file @
a7bced1c
import
axios
from
'
axios
'
import
axios
from
'
axios
'
import
Promise
from
'
./promise.service.js
'
import
{
Notice
}
from
'
iview
'
import
Vue
from
'
vue
'
var
instance
=
axios
.
create
({});
instance
.
defaults
.
timeout
=
2500
;
export
default
axios
\ No newline at end of file
//instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
instance
.
defaults
.
headers
.
post
[
'
Content-Type
'
]
=
'
application/x-www-form-urlencoded
'
;
instance
.
defaults
.
headers
[
'
X-Requested-With
'
]
=
'
XMLHttpRequest
'
instance
.
defaults
.
headers
[
'
X-auth-Token
'
]
=
'
XMLHttpRequest
'
instance
.
interceptors
.
request
.
use
(
function
(
config
)
{
// 在发送请求之前做些什么
if
(
!
config
.
headers
[
'
Content-Type
'
])
{
config
.
headers
[
'
Content-Type
'
]
=
'
application/x-www-form-urlencoded
'
}
return
config
;
},
function
(
error
)
{
// 对请求错误做些什么
return
Promise
.
reject
(
error
);
});
instance
.
interceptors
.
response
.
use
(
function
(
response
)
{
// 在发送请求之前做些什么
if
(
response
.
status
>=
200
&&
response
.
status
<
300
){
if
(
response
.
data
.
success
){
return
Promise
.
resolve
(
response
.
data
.
body
)
}
else
{
if
(
response
.
data
.
body
.
message
){
Notice
.
error
({
desc
:
`
${
response
.
data
.
body
.
message
}
`
})
}
return
Promise
.
reject
(
response
.
data
);
}
}
else
{
return
Promise
.
reject
(
response
.
data
);
}
if
(
resopnse
.
status
==
403
||
resopnse
.
status
==
401
){
if
(
response
.
data
.
body
.
message
){
Notice
.
error
({
desc
:
`
${
response
.
data
.
body
.
messag
}
`
})
}
window
.
location
.
replace
=
`
${
window
.
location
.
origin
}
/login`
}
return
response
;
},
error
=>
{
console
.
log
(
error
)
});
export
default
instance
// export default axios
src/service/promise.service.js
0 → 100644
View file @
a7bced1c
module
.
exports
=
require
(
'
es6-promise
'
);
\ No newline at end of file
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