Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Guten-PigxUI
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄卓然
Guten-PigxUI
Commits
05842014
Commit
05842014
authored
Dec 04, 2018
by
萌萌哒SAKURA酱
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'leng_dev' of
https://gitee.ltd/pigx/pigx-ui
into sakura_dev
parents
e8933196
ebdf00cd
Changes
74
Hide whitespace changes
Inline
Side-by-side
Showing
74 changed files
with
4890 additions
and
4804 deletions
+4890
-4804
.editorconfig
.editorconfig
+15
-0
App.vue
src/App.vue
+18
-17
activiti.js
src/api/activiti/activiti.js
+4
-4
leave-bill.js
src/api/activiti/leave-bill.js
+4
-4
process.js
src/api/activiti/process.js
+5
-5
task.js
src/api/activiti/task.js
+13
-13
dept.js
src/api/admin/dept.js
+5
-5
menu.js
src/api/admin/menu.js
+2
-0
route.js
src/api/admin/route.js
+6
-5
user.js
src/api/admin/user.js
+27
-27
gen.js
src/api/gen/gen.js
+12
-6
login.js
src/api/login.js
+40
-39
env.js
src/config/env.js
+6
-6
activiti.js
src/const/crud/activiti/activiti.js
+58
-51
leave-bill.js
src/const/crud/activiti/leave-bill.js
+34
-34
process.js
src/const/crud/activiti/process.js
+43
-43
task.js
src/const/crud/activiti/task.js
+119
-119
client.js
src/const/crud/admin/client.js
+21
-20
log.js
src/const/crud/admin/log.js
+19
-16
role.js
src/const/crud/admin/role.js
+70
-70
sys-social-details.js
src/const/crud/admin/sys-social-details.js
+74
-70
token.js
src/const/crud/admin/token.js
+48
-47
user.js
src/const/crud/admin/user.js
+124
-123
execution-log.js
src/const/crud/daemon/execution-log.js
+77
-77
status-trace-log.js
src/const/crud/daemon/status-trace-log.js
+81
-81
option.js
src/const/crud/option.js
+61
-61
dic.js
src/const/dic.js
+357
-357
errorCode.js
src/const/errorCode.js
+12
-12
index.js
src/const/logs/index.js
+36
-36
index.js
src/const/setting/index.js
+109
-109
website.js
src/const/website.js
+38
-38
error.js
src/error.js
+21
-20
index.js
src/filters/index.js
+100
-98
main.js
src/main.js
+13
-19
index.vue
src/page/lock/index.vue
+78
-72
index.vue
src/page/login/index.vue
+4
-5
userlogin.vue
src/page/login/userlogin.vue
+0
-1
wel.vue
src/page/wel.vue
+67
-63
permission.js
src/permission.js
+53
-53
getters.js
src/store/getters.js
+24
-24
index.js
src/store/index.js
+8
-8
common.js
src/store/modules/common.js
+140
-145
logs.js
src/store/modules/logs.js
+35
-34
tags.js
src/store/modules/tags.js
+53
-53
user.js
src/store/modules/user.js
+205
-204
admin.js
src/util/admin.js
+12
-12
auth.js
src/util/auth.js
+5
-4
date.js
src/util/date.js
+18
-18
store.js
src/util/store.js
+82
-83
util.js
src/util/util.js
+209
-208
validate.js
src/util/validate.js
+170
-162
detail.vue
src/views/activiti/detail.vue
+51
-42
index.vue
src/views/activiti/index.vue
+103
-101
leave.vue
src/views/activiti/leave.vue
+120
-117
process.vue
src/views/activiti/process.vue
+105
-103
task.vue
src/views/activiti/task.vue
+73
-67
index.vue
src/views/admin/client/index.vue
+102
-100
index.vue
src/views/admin/dept/index.vue
+145
-139
index.vue
src/views/admin/dict/index.vue
+99
-97
index.vue
src/views/admin/log/index.vue
+63
-62
index.vue
src/views/admin/menu/index.vue
+187
-182
index.vue
src/views/admin/role/index.vue
+168
-173
index.vue
src/views/admin/route/index.vue
+56
-56
index.vue
src/views/admin/social/index.vue
+109
-106
index.vue
src/views/admin/token/index.vue
+56
-55
index.vue
src/views/admin/user/index.vue
+183
-189
info.vue
src/views/admin/user/info.vue
+94
-107
index.vue
src/views/crud/index.vue
+77
-72
index.vue
src/views/daemon/execution-log/index.vue
+18
-17
index.vue
src/views/daemon/status-trace-log/index.vue
+101
-100
index.vue
src/views/dashboard/index.vue
+16
-15
index.vue
src/views/gen/index.vue
+56
-52
index.vue
src/views/tx/index.vue
+33
-32
model.vue
src/views/tx/model.vue
+40
-39
No files found.
.editorconfig
0 → 100644
View file @
05842014
# http://editorconfig.org
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.md]
insert_final_newline = false
trim_trailing_whitespace = false
src/App.vue
View file @
05842014
<
template
>
<div
id=
"app"
>
<router-view
/>
<router-view/>
</div>
</
template
>
<
script
>
export
default
{
name
:
'app'
,
data
()
{
return
{}
},
watch
:
{},
created
()
{
},
methods
:
{},
computed
:
{}
}
export
default
{
name
:
'app'
,
data
()
{
return
{}
},
watch
:
{},
created
()
{
},
methods
:
{},
computed
:
{}
}
</
script
>
<
style
lang=
"scss"
>
#app
{
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
}
</
style
>
\ No newline at end of file
#app
{
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
}
</
style
>
src/api/activiti/activiti.js
View file @
05842014
...
...
@@ -33,10 +33,10 @@ export function delObj(id) {
}
export
function
deploy
(
id
)
{
return
request
({
url
:
'/act/model/deploy/'
+
id
,
method
:
'post'
})
return
request
({
url
:
'/act/model/deploy/'
+
id
,
method
:
'post'
})
}
...
...
src/api/activiti/leave-bill.js
View file @
05842014
...
...
@@ -41,10 +41,10 @@ export function getObj(id) {
}
export
function
submit
(
id
)
{
return
request
({
url
:
'/act/leave-bill/submit/'
+
id
,
method
:
'get'
})
return
request
({
url
:
'/act/leave-bill/submit/'
+
id
,
method
:
'get'
})
}
export
function
delObj
(
id
)
{
...
...
src/api/activiti/process.js
View file @
05842014
...
...
@@ -32,9 +32,9 @@ export function delObj(id) {
})
}
export
function
status
(
id
,
type
)
{
return
request
({
url
:
'/act/process/status/'
+
id
+
"/"
+
type
,
method
:
'put'
})
export
function
status
(
id
,
type
)
{
return
request
({
url
:
'/act/process/status/'
+
id
+
"/"
+
type
,
method
:
'put'
})
}
src/api/activiti/task.js
View file @
05842014
...
...
@@ -26,23 +26,23 @@ export function fetchList(query) {
}
export
function
fetchDetail
(
id
)
{
return
request
({
url
:
'/act/task/'
+
id
,
method
:
'get'
})
return
request
({
url
:
'/act/task/'
+
id
,
method
:
'get'
})
}
export
function
fetchComment
(
id
)
{
return
request
({
url
:
'/act/task/comment/'
+
id
,
method
:
'get'
})
return
request
({
url
:
'/act/task/comment/'
+
id
,
method
:
'get'
})
}
export
function
doTask
(
obj
)
{
return
request
({
url
:
'/act/task'
,
method
:
'post'
,
data
:
obj
})
return
request
({
url
:
'/act/task'
,
method
:
'post'
,
data
:
obj
})
}
src/api/admin/dept.js
View file @
05842014
...
...
@@ -18,11 +18,11 @@
import
request
from
'@/router/axios'
export
function
fetchDeptTree
(
query
)
{
return
request
({
url
:
'/admin/dept/user-tree'
,
method
:
'get'
,
params
:
query
})
return
request
({
url
:
'/admin/dept/user-tree'
,
method
:
'get'
,
params
:
query
})
}
export
function
fetchTree
(
query
)
{
...
...
src/api/admin/menu.js
View file @
05842014
...
...
@@ -16,12 +16,14 @@
*/
import
request
from
'@/router/axios'
export
function
GetMenu
()
{
return
request
({
url
:
'/admin/menu'
,
method
:
'get'
})
}
export
function
fetchTree
(
query
)
{
return
request
({
url
:
'/admin/menu/tree'
,
...
...
src/api/admin/route.js
View file @
05842014
...
...
@@ -24,10 +24,11 @@ export function fetchList(query) {
params
:
query
})
}
export
function
putObj
(
obj
)
{
return
request
({
url
:
'/admin/route'
,
method
:
'put'
,
data
:
obj
})
return
request
({
url
:
'/admin/route'
,
method
:
'put'
,
data
:
obj
})
}
src/api/admin/user.js
View file @
05842014
...
...
@@ -18,46 +18,46 @@
import
request
from
'@/router/axios'
export
function
fetchList
(
query
)
{
return
request
({
url
:
'/admin/user/page'
,
method
:
'get'
,
params
:
query
})
return
request
({
url
:
'/admin/user/page'
,
method
:
'get'
,
params
:
query
})
}
export
function
addObj
(
obj
)
{
return
request
({
url
:
'/admin/user'
,
method
:
'post'
,
data
:
obj
})
return
request
({
url
:
'/admin/user'
,
method
:
'post'
,
data
:
obj
})
}
export
function
getObj
(
id
)
{
return
request
({
url
:
'/admin/user/'
+
id
,
method
:
'get'
})
return
request
({
url
:
'/admin/user/'
+
id
,
method
:
'get'
})
}
export
function
delObj
(
id
)
{
return
request
({
url
:
'/admin/user/'
+
id
,
method
:
'delete'
})
return
request
({
url
:
'/admin/user/'
+
id
,
method
:
'delete'
})
}
export
function
putObj
(
obj
)
{
return
request
({
url
:
'/admin/user'
,
method
:
'put'
,
data
:
obj
})
return
request
({
url
:
'/admin/user'
,
method
:
'put'
,
data
:
obj
})
}
export
function
getDetails
(
obj
)
{
return
request
({
url
:
'/admin/user/details/'
+
obj
,
method
:
'get'
})
return
request
({
url
:
'/admin/user/details/'
+
obj
,
method
:
'get'
})
}
src/api/gen/gen.js
View file @
05842014
...
...
@@ -26,16 +26,22 @@ export function fetchList(query) {
}
export
function
handleDown
(
table
)
{
request
({
re
turn
re
quest
({
url
:
'/gen/generator/code'
,
method
:
'post'
,
data
:
table
,
responseType
:
'arraybuffer'
}).
then
((
response
)
=>
{
// 处理返回的文件流
let
blob
=
new
Blob
([
response
.
data
],
{
type
:
'application/zip'
}
)
let
link
=
document
.
createElement
(
'a'
)
link
.
href
=
window
.
URL
.
createObjectURL
(
blob
)
link
.
download
=
table
.
tableName
+
'.zip'
link
.
click
()
let
blob
=
new
Blob
([
response
.
data
],
{
type
:
'application/zip'
})
let
filename
=
table
.
tableName
+
'.zip'
let
link
=
document
.
createElement
(
'a'
);
link
.
href
=
URL
.
createObjectURL
(
blob
);
link
.
download
=
filename
;
document
.
body
.
appendChild
(
link
);
link
.
click
();
window
.
setTimeout
(
function
()
{
URL
.
revokeObjectURL
(
blob
);
document
.
body
.
removeChild
(
link
);
},
0
);
})
}
src/api/login.js
View file @
05842014
...
...
@@ -15,56 +15,57 @@
* Author: lengleng (wangiegie@gmail.com)
*/
import
request
from
'@/router/axios'
export
const
loginByUsername
=
(
username
,
password
,
code
,
randomStr
)
=>
{
var
grant_type
=
'password'
var
scope
=
'server'
return
request
({
url
:
'/auth/oauth/token'
,
headers
:
{
'TENANT_ID'
:
'1'
,
'Authorization'
:
'Basic cGlnOnBpZw=='
},
method
:
'post'
,
params
:
{
username
,
password
,
randomStr
,
code
,
grant_type
,
scope
}
})
var
grant_type
=
'password'
var
scope
=
'server'
return
request
({
url
:
'/auth/oauth/token'
,
headers
:
{
'TENANT_ID'
:
'1'
,
'Authorization'
:
'Basic cGlnOnBpZw=='
},
method
:
'post'
,
params
:
{
username
,
password
,
randomStr
,
code
,
grant_type
,
scope
}
})
}
export
const
loginByMobile
=
(
mobile
,
code
)
=>
{
var
grant_type
=
'mobile'
return
request
({
url
:
'/auth/mobile/token/sms'
,
headers
:
{
'TENANT_ID'
:
'1'
,
'Authorization'
:
'Basic cGlnOnBpZw=='
},
method
:
'post'
,
params
:
{
mobile
:
'SMS@'
+
mobile
,
code
:
code
,
grant_type
}
})
var
grant_type
=
'mobile'
return
request
({
url
:
'/auth/mobile/token/sms'
,
headers
:
{
'TENANT_ID'
:
'1'
,
'Authorization'
:
'Basic cGlnOnBpZw=='
},
method
:
'post'
,
params
:
{
mobile
:
'SMS@'
+
mobile
,
code
:
code
,
grant_type
}
})
}
export
const
loginBySocial
=
(
state
,
code
)
=>
{
var
grant_type
=
'mobile'
return
request
({
url
:
'/auth/mobile/token/social'
,
headers
:
{
'TENANT_ID'
:
'1'
,
'Authorization'
:
'Basic cGlnOnBpZw=='
},
method
:
'post'
,
params
:
{
mobile
:
state
+
'@'
+
code
,
grant_type
}
})
var
grant_type
=
'mobile'
return
request
({
url
:
'/auth/mobile/token/social'
,
headers
:
{
'TENANT_ID'
:
'1'
,
'Authorization'
:
'Basic cGlnOnBpZw=='
},
method
:
'post'
,
params
:
{
mobile
:
state
+
'@'
+
code
,
grant_type
}
})
}
export
const
getUserInfo
=
()
=>
{
return
request
({
url
:
'/admin/user/info'
,
method
:
'get'
})
return
request
({
url
:
'/admin/user/info'
,
method
:
'get'
})
}
export
const
logout
=
()
=>
{
return
request
({
url
:
'/auth/token/logout'
,
method
:
'delete'
})
return
request
({
url
:
'/auth/token/logout'
,
method
:
'delete'
})
}
src/config/env.js
View file @
05842014
...
...
@@ -15,10 +15,10 @@ if (env.NODE_ENV == 'development') {
}
export
{
baseUrl
,
actUrl
,
iconfontUrl
,
iconfontVersion
,
codeUrl
,
env
baseUrl
,
actUrl
,
iconfontUrl
,
iconfontVersion
,
codeUrl
,
env
}
src/const/crud/activiti/activiti.js
View file @
05842014
...
...
@@ -15,59 +15,66 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export
const
tableOption
=
{
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
menuWidth
:
150
,
menuBtn
:
true
,
align
:
'center'
,
editBtn
:
false
,
delBtn
:
false
,
menuType
:
'menu'
,
searchShow
:
false
,
labelWidth
:
120
,
column
:
[{
fixed
:
true
,
label
:
'模型ID'
,
prop
:
'id'
,
editDisabled
:
true
,
addVisdiplay
:
false
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
menuWidth
:
150
,
menuBtn
:
true
,
align
:
'center'
,
editBtn
:
false
,
delBtn
:
false
,
menuType
:
'menu'
,
searchShow
:
false
,
labelWidth
:
120
,
column
:
[{
fixed
:
true
,
label
:
'模型ID'
,
prop
:
'id'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
fixed
:
true
,
label
:
'模型标识'
,
prop
:
'key'
,
editDisabled
:
true
},
{
label
:
'流程分类'
,
prop
:
'category'
,
search
:
true
},
{
label
:
'模型名称'
,
prop
:
'name'
},
{
label
:
'描述'
,
prop
:
'desc'
,
hide
:
true
,
editDisabled
:
false
,
addVisdiplay
:
true
},
{
fixed
:
true
,
label
:
'模型标识
'
,
prop
:
'key'
,
editDisabled
:
tru
e
label
:
'版本号'
,
prop
:
'version
'
,
editDisabled
:
true
,
addVisdiplay
:
fals
e
},
{
label
:
'流程分类'
,
prop
:
'category'
,
search
:
true
width
:
150
,
label
:
'创建时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'timestamp'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
label
:
'模型名称'
,
prop
:
'name'
},
{
label
:
'版本号'
,
prop
:
'version'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
width
:
150
,
label
:
'创建时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'timestamp'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
width
:
150
,
label
:
'最后更新时间'
,
prop
:
'lastUpdateTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'timestamp'
,
editDisabled
:
true
,
addVisdiplay
:
false
width
:
150
,
label
:
'最后更新时间'
,
prop
:
'lastUpdateTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'timestamp'
,
editDisabled
:
true
,
addVisdiplay
:
false
}]
}
src/const/crud/activiti/leave-bill.js
View file @
05842014
...
...
@@ -25,60 +25,60 @@ export const tableOption = {
'editBtn'
:
false
,
'delBtn'
:
false
,
'addBtn'
:
false
,
menuType
:
'menu'
,
menuType
:
'menu'
,
'dicUrl'
:
'/admin/dict/type/leave_status'
,
'column'
:
[
{
{
label
:
'ID'
,
prop
:
'leaveId'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
{
label
:
'申请人'
,
prop
:
'username'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
{
label
:
'天数'
,
prop
:
'days'
,
type
:
'number'
},
{
{
label
:
'请假时间'
,
prop
:
'leaveTime'
,
type
:
'datetime'
,
overHidden
:
true
,
overHidden
:
true
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
"yyyy-MM-dd hh:mm:ss"
},
{
label
:
'提交时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
overHidden
:
true
,
format
:
'yyyy-MM-dd HH:mm'
,
editDisabled
:
true
,
addVisdiplay
:
false
,
hide
:
true
},
{
label
:
'状态'
,
prop
:
'state'
,
type
:
'select'
,
dicData
:
'leave_status'
,
search
:
true
,
addVisdiplay
:
false
},
{
label
:
'备注'
,
prop
:
'content'
,
type
:
'textarea'
,
overHidden
:
true
,
minRows
:
2
,
row
:
true
,
span
:
24
}
},
{
label
:
'提交时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
overHidden
:
true
,
format
:
'yyyy-MM-dd HH:mm'
,
editDisabled
:
true
,
addVisdiplay
:
false
,
hide
:
true
},
{
label
:
'状态'
,
prop
:
'state'
,
type
:
'select'
,
dicData
:
'leave_status'
,
search
:
true
,
addVisdiplay
:
false
},
{
label
:
'备注'
,
prop
:
'content'
,
type
:
'textarea'
,
overHidden
:
true
,
minRows
:
2
,
row
:
true
,
span
:
24
}
]
}
src/const/crud/activiti/process.js
View file @
05842014
...
...
@@ -15,47 +15,47 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export
const
tableOption
=
{
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
menuWidth
:
150
,
menuBtn
:
true
,
align
:
'center'
,
addBtn
:
false
,
editBtn
:
false
,
delBtn
:
false
,
menuType
:
'menu'
,
searchShow
:
false
,
column
:
[{
fixed
:
true
,
label
:
'流程ID'
,
prop
:
'processonDefinitionId'
},
{
fixed
:
true
,
label
:
'模型标识'
,
prop
:
'key'
,
editDisabled
:
true
},
{
label
:
'流程分类'
,
prop
:
'category'
,
search
:
true
},
{
label
:
'模型名称'
,
prop
:
'name'
},
{
label
:
'版本号'
,
prop
:
'revision'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
label
:
'部署时间'
,
prop
:
'deploymentTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'timestamp'
,
editDisabled
:
true
,
addVisdiplay
:
false
}]
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
menuWidth
:
150
,
menuBtn
:
true
,
align
:
'center'
,
addBtn
:
false
,
editBtn
:
false
,
delBtn
:
false
,
menuType
:
'menu'
,
searchShow
:
false
,
column
:
[{
fixed
:
true
,
label
:
'流程ID'
,
prop
:
'processonDefinitionId'
},
{
fixed
:
true
,
label
:
'模型标识'
,
prop
:
'key'
,
editDisabled
:
true
},
{
label
:
'流程分类'
,
prop
:
'category'
,
search
:
true
},
{
label
:
'模型名称'
,
prop
:
'name'
},
{
label
:
'版本号'
,
prop
:
'revision'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
label
:
'部署时间'
,
prop
:
'deploymentTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'timestamp'
,
editDisabled
:
true
,
addVisdiplay
:
false
}]
}
src/const/crud/activiti/task.js
View file @
05842014
...
...
@@ -15,128 +15,128 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export
const
tableOption
=
{
'border'
:
true
,
'index'
:
true
,
'stripe'
:
true
,
'menuAlign'
:
"center"
,
'align'
:
"center"
,
'menuBtn'
:
true
,
'editBtn'
:
false
,
'delBtn'
:
false
,
'addBtn'
:
false
,
menuType
:
'menu'
,
'dic'
:
[],
'column'
:
[
{
label
:
'ID'
,
prop
:
'taskId'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
label
:
'任务名称'
,
prop
:
'taskName'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
label
:
'提交时间'
,
prop
:
'time'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
}
]
'border'
:
true
,
'index'
:
true
,
'stripe'
:
true
,
'menuAlign'
:
"center"
,
'align'
:
"center"
,
'menuBtn'
:
true
,
'editBtn'
:
false
,
'delBtn'
:
false
,
'addBtn'
:
false
,
menuType
:
'menu'
,
'dic'
:
[],
'column'
:
[
{
label
:
'ID'
,
prop
:
'taskId'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
label
:
'任务名称'
,
prop
:
'taskName'
,
editDisabled
:
true
,
addVisdiplay
:
false
},
{
label
:
'提交时间'
,
prop
:
'time'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
}
]
}
export
const
formOption
=
{
submitBtn
:
false
,
emptytBtn
:
false
,
row
:
true
,
span
:
12
,
column
:
[
{
label
:
"任务编号"
,
prop
:
"taskId"
,
disabled
:
true
},
{
label
:
"任务名称"
,
prop
:
"taskName"
,
disabled
:
true
},
{
label
:
"申请人"
,
prop
:
"username"
,
disabled
:
true
},
{
label
:
"请假时长"
,
prop
:
"days"
,
disabled
:
true
},
{
label
:
"请假时间"
,
prop
:
"createTime"
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
disabled
:
true
},
{
label
:
'提交时间'
,
prop
:
'time'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
disabled
:
true
},
{
label
:
'事由'
,
prop
:
'content'
,
type
:
'textarea'
,
minRows
:
2
,
row
:
true
,
span
:
24
,
disabled
:
true
},
{
label
:
'批注'
,
prop
:
'comment'
,
type
:
'textarea'
,
minRows
:
2
,
row
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请输入备注"
,
trigger
:
"blur"
}]
}
]
submitBtn
:
false
,
emptytBtn
:
false
,
row
:
true
,
span
:
12
,
column
:
[
{
label
:
"任务编号"
,
prop
:
"taskId"
,
disabled
:
true
},
{
label
:
"任务名称"
,
prop
:
"taskName"
,
disabled
:
true
},
{
label
:
"申请人"
,
prop
:
"username"
,
disabled
:
true
},
{
label
:
"请假时长"
,
prop
:
"days"
,
disabled
:
true
},
{
label
:
"请假时间"
,
prop
:
"createTime"
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
disabled
:
true
},
{
label
:
'提交时间'
,
prop
:
'time'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
disabled
:
true
},
{
label
:
'事由'
,
prop
:
'content'
,
type
:
'textarea'
,
minRows
:
2
,
row
:
true
,
span
:
24
,
disabled
:
true
},
{
label
:
'批注'
,
prop
:
'comment'
,
type
:
'textarea'
,
minRows
:
2
,
row
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请输入备注"
,
trigger
:
"blur"
}]
}
]
}
export
const
taskOption
=
{
menu
:
false
,
page
:
false
,
addBtn
:
false
,
align
:
'center'
,
menuAlign
:
'center'
,
column
:
[
{
label
:
'id'
,
prop
:
'id'
,
hide
:
true
},
{
label
:
'用户'
,
prop
:
'userId'
},
{
label
:
'批注'
,
prop
:
'fullMessage'
},
{
label
:
"操作时间"
,
prop
:
"time"
,
type
:
"datetime"
,
format
:
"yyyy-MM-dd hh:mm:ss"
,
valueFormat
:
"yyyy-MM-dd hh:mm:ss"
,
}
]
menu
:
false
,
page
:
false
,
addBtn
:
false
,
align
:
'center'
,
menuAlign
:
'center'
,
column
:
[
{
label
:
'id'
,
prop
:
'id'
,
hide
:
true
},
{
label
:
'用户'
,
prop
:
'userId'
},
{
label
:
'批注'
,
prop
:
'fullMessage'
},
{
label
:
"操作时间"
,
prop
:
"time"
,
type
:
"datetime"
,
format
:
"yyyy-MM-dd hh:mm:ss"
,
valueFormat
:
"yyyy-MM-dd hh:mm:ss"
,
}
]
}
src/const/crud/admin/client.js
View file @
05842014
...
...
@@ -25,16 +25,17 @@ const DIC = {
}]
}
export
const
tableOption
=
{
'border'
:
true
,
'index'
:
true
,
'indexLabel'
:
'序号'
,
'stripe'
:
true
,
'menuAlign'
:
'center'
,
'align'
:
'center'
,
'editBtn'
:
false
,
'delBtn'
:
false
,
'dic'
:
[],
'column'
:
[{
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
align
:
'center'
,
editBtn
:
false
,
delBtn
:
false
,
viewBtn
:
true
,
dic
:
[],
column
:
[{
width
:
150
,
label
:
'编号'
,
prop
:
'clientId'
,
...
...
@@ -46,11 +47,12 @@ export const tableOption = {
trigger
:
'blur'
}]
},
{
width
:
300
,
label
:
'密钥'
,
prop
:
'clientSecret'
,
align
:
'center'
,
sortable
:
true
,
overHidden
:
true
,
width
:
120
,
rules
:
[{
required
:
true
,
message
:
'请输入clientSecret'
,
...
...
@@ -71,7 +73,7 @@ export const tableOption = {
prop
:
'authorizedGrantTypes'
,
align
:
'center'
,
width
:
150
,
hide
:
true
,
overHidden
:
true
,
rules
:
[{
required
:
true
,
message
:
'请输入授权模式'
,
...
...
@@ -90,22 +92,20 @@ export const tableOption = {
width
:
150
,
hide
:
true
},
{
label
:
'
请求令牌
'
,
label
:
'
令牌时效
'
,
prop
:
'accessTokenValidity'
,
align
:
'center'
,
width
:
150
,
hide
:
true
width
:
80
},
{
label
:
'刷新
令牌
'
,
label
:
'刷新
时效
'
,
prop
:
'refreshTokenValidity'
,
align
:
'center'
,
width
:
150
,
hide
:
true
width
:
80
},
{
label
:
'扩展信息'
,
prop
:
'additionalInformation'
,
align
:
'center'
,
width
:
15
0
,
width
:
8
0
,
hide
:
true
},
{
label
:
'自动放行'
,
...
...
@@ -113,7 +113,7 @@ export const tableOption = {
align
:
'center'
,
type
:
'radio'
,
dicData
:
DIC
.
vaild
,
width
:
15
0
,
width
:
8
0
,
rules
:
[{
required
:
true
,
message
:
'请选择是否放行'
,
...
...
@@ -123,6 +123,7 @@ export const tableOption = {
label
:
'资源ID'
,
prop
:
'resourceIds'
,
align
:
'center'
,
hide
:
true
,
width
:
150
}]
}
src/const/crud/admin/log.js
View file @
05842014
...
...
@@ -15,32 +15,33 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export
const
tableOption
=
{
'border'
:
true
,
'index'
:
true
,
'indexLabel'
:
'序号'
,
'stripe'
:
true
,
'menuAlign'
:
'center'
,
'menuWidth'
:
150
,
'align'
:
'center'
,
'refreshBtn'
:
true
,
'showClomnuBtn'
:
false
,
'searchSize'
:
'mini'
,
'addBtn'
:
false
,
'editBtn'
:
false
,
'delBtn'
:
false
,
'dicUrl'
:
'/admin/dict/type/log_type'
,
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
menuWidth
:
150
,
align
:
'center'
,
refreshBtn
:
true
,
showClomnuBtn
:
false
,
searchSize
:
'mini'
,
addBtn
:
false
,
editBtn
:
false
,
delBtn
:
false
,
viewBtn
:
true
,
dicUrl
:
'/admin/dict/type/log_type'
,
props
:
{
label
:
'label'
,
value
:
'value'
},
'column'
:
[{
column
:
[{
label
:
'类型'
,
prop
:
'type'
,
type
:
'select'
,
dicData
:
'log_type'
,
search
:
true
},
{
label
:
'
请求接口名称
'
,
label
:
'
标题
'
,
prop
:
'title'
},
{
label
:
'IP地址'
,
...
...
@@ -52,9 +53,11 @@ export const tableOption = {
label
:
'客户端'
,
prop
:
'serviceId'
},
{
width
:
80
,
label
:
'请求时间'
,
prop
:
'time'
},
{
width
:
150
,
label
:
'创建时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
...
...
src/const/crud/admin/role.js
View file @
05842014
...
...
@@ -15,74 +15,74 @@
* Author: lengleng (wangiegie@gmail.com)
*/
export
const
tableOption
=
{
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
editBtn
:
false
,
delBtn
:
false
,
align
:
'center'
,
addBtn
:
false
,
column
:
[{
fixed
:
true
,
label
:
'id'
,
prop
:
'roleId'
,
span
:
24
,
editDisabled
:
true
,
addVisdiplay
:
false
,
},
{
fixed
:
true
,
label
:
'角色名称'
,
prop
:
'roleName'
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
'角色名称不能为空'
,
trigger
:
'blur'
},
{
min
:
3
,
max
:
20
,
message
:
'长度在 3 到 20 个字符'
,
trigger
:
'blur'
}
]
},
{
width
:
150
,
label
:
'角色标识'
,
prop
:
'roleCode'
,
span
:
24
,
editDisabled
:
true
,
rules
:
[{
required
:
true
,
message
:
'角色标识不能为空'
,
trigger
:
'blur'
},
{
min
:
3
,
max
:
20
,
message
:
'长度在 3 到 20 个字符'
,
trigger
:
'blur'
}
]
},
{
width
:
180
,
label
:
'角色描述'
,
prop
:
'roleDesc'
,
overHidden
:
true
,
type
:
'textarea'
,
minRows
:
6
,
span
:
24
,
},
{
width
:
180
,
label
:
'创建时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'yyyy-MM-dd HH:mm:ss'
,
editDisabled
:
true
,
addVisdiplay
:
false
,
span
:
24
,
}]
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
editBtn
:
false
,
delBtn
:
false
,
align
:
'center'
,
addBtn
:
false
,
column
:
[{
fixed
:
true
,
label
:
'id'
,
prop
:
'roleId'
,
span
:
24
,
editDisabled
:
true
,
addVisdiplay
:
false
,
},
{
fixed
:
true
,
label
:
'角色名称'
,
prop
:
'roleName'
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
'角色名称不能为空'
,
trigger
:
'blur'
},
{
min
:
3
,
max
:
20
,
message
:
'长度在 3 到 20 个字符'
,
trigger
:
'blur'
}
]
},
{
width
:
150
,
label
:
'角色标识'
,
prop
:
'roleCode'
,
span
:
24
,
editDisabled
:
true
,
rules
:
[{
required
:
true
,
message
:
'角色标识不能为空'
,
trigger
:
'blur'
},
{
min
:
3
,
max
:
20
,
message
:
'长度在 3 到 20 个字符'
,
trigger
:
'blur'
}
]
},
{
width
:
180
,
label
:
'角色描述'
,
prop
:
'roleDesc'
,
overHidden
:
true
,
type
:
'textarea'
,
minRows
:
6
,
span
:
24
,
},
{
width
:
180
,
label
:
'创建时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'yyyy-MM-dd HH:mm:ss'
,
editDisabled
:
true
,
addVisdiplay
:
false
,
span
:
24
,
}]
}
src/const/crud/admin/sys-social-details.js
View file @
05842014
...
...
@@ -16,73 +16,77 @@
*/
export
const
tableOption
=
{
"border"
:
true
,
"index"
:
true
,
"stripe"
:
true
,
"menuAlign"
:
"center"
,
"align"
:
"center"
,
"editBtn"
:
false
,
"delBtn"
:
false
,
"addBtn"
:
false
,
'dicUrl'
:
'/admin/dict/type/social_type'
,
"column"
:
[{
label
:
'ID'
,
prop
:
'id'
,
hide
:
true
,
addVisdiplay
:
false
,
editDisabled
:
true
},
{
label
:
'类型'
,
prop
:
'type'
,
type
:
'select'
,
dicData
:
'social_type'
,
search
:
true
,
rules
:
[{
required
:
true
,
message
:
'请选择类型'
,
trigger
:
'blur'
}]
},
{
label
:
'描述'
,
prop
:
'remark'
},
{
label
:
'appId'
,
prop
:
'appId'
,
rules
:
[{
required
:
true
,
message
:
'请输入appId'
,
trigger
:
'blur'
}]
},
{
label
:
'appSecret'
,
prop
:
'appSecret'
,
rules
:
[{
required
:
true
,
message
:
'请输入appSecret'
,
trigger
:
'blur'
}]
},
{
label
:
'回调地址'
,
prop
:
'redirectUrl'
,
rules
:
[{
required
:
true
,
message
:
'请输入回调地址'
,
trigger
:
'blur'
}]
},
{
valueFormat
:
'timestamp'
,
format
:
'yyyy-MM-dd hh:mm:ss'
,
label
:
'创建时间'
,
prop
:
'createTime'
,
align
:
'center'
,
addVisdiplay
:
false
,
editDisabled
:
true
}
]
}
\ No newline at end of file
border
:
true
,
index
:
true
,
stripe
:
true
,
menuAlign
:
"center"
,
align
:
"center"
,
editBtn
:
false
,
delBtn
:
false
,
addBtn
:
false
,
viewBtn
:
true
,
dicUrl
:
'/admin/dict/type/social_type'
,
column
:
[{
label
:
'ID'
,
prop
:
'id'
,
hide
:
true
,
addVisdiplay
:
false
,
editDisabled
:
true
},
{
label
:
'类型'
,
prop
:
'type'
,
type
:
'select'
,
dicData
:
'social_type'
,
search
:
true
,
rules
:
[{
required
:
true
,
message
:
'请选择类型'
,
trigger
:
'blur'
}]
},
{
label
:
'描述'
,
prop
:
'remark'
},
{
label
:
'appId'
,
prop
:
'appId'
,
overHidden
:
true
,
rules
:
[{
required
:
true
,
message
:
'请输入appId'
,
trigger
:
'blur'
}]
},
{
label
:
'appSecret'
,
prop
:
'appSecret'
,
overHidden
:
true
,
rules
:
[{
required
:
true
,
message
:
'请输入appSecret'
,
trigger
:
'blur'
}]
},
{
label
:
'回调地址'
,
prop
:
'redirectUrl'
,
hide
:
true
,
rules
:
[{
required
:
true
,
message
:
'请输入回调地址'
,
trigger
:
'blur'
}]
},
{
valueFormat
:
'timestamp'
,
format
:
'yyyy-MM-dd hh:mm:ss'
,
label
:
'创建时间'
,
prop
:
'createTime'
,
align
:
'center'
,
addVisdiplay
:
false
,
editDisabled
:
true
}
]
}
src/const/crud/admin/token.js
View file @
05842014
...
...
@@ -16,53 +16,54 @@
*/
const
DIC
=
{
vaild
:
[{
label
:
'否'
,
value
:
'false'
},
{
label
:
'是'
,
value
:
'true'
}]
vaild
:
[{
label
:
'否'
,
value
:
'false'
},
{
label
:
'是'
,
value
:
'true'
}]
}
export
const
tableOption
=
{
'border'
:
true
,
'index'
:
true
,
'indexLabel'
:
'序号'
,
'stripe'
:
true
,
'menuAlign'
:
'center'
,
'align'
:
'center'
,
'addBtn'
:
false
,
'editBtn'
:
false
,
'delBtn'
:
false
,
'dic'
:
[],
'column'
:
[{
label
:
'用户ID'
,
prop
:
'user_id'
,
align
:
'center'
},
{
label
:
'用户名'
,
prop
:
'user_name'
,
align
:
'center'
},
{
label
:
'令牌'
,
prop
:
'token_value'
,
align
:
'center'
,
'overHidden'
:
true
},
{
label
:
'类型'
,
prop
:
'token_type'
,
align
:
'center'
},
{
label
:
'过期时间'
,
prop
:
'expires_in'
,
align
:
'center'
},
{
label
:
'客户端'
,
prop
:
'client_id'
,
align
:
'center'
},
{
label
:
'授权类型'
,
prop
:
'grant_type'
,
align
:
'center'
}]
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
align
:
'center'
,
viewBtn
:
true
,
addBtn
:
false
,
editBtn
:
false
,
delBtn
:
false
,
dic
:
[],
column
:
[{
label
:
'用户ID'
,
prop
:
'user_id'
,
align
:
'center'
},
{
label
:
'用户名'
,
prop
:
'user_name'
,
align
:
'center'
},
{
label
:
'令牌'
,
prop
:
'token_value'
,
align
:
'center'
,
'overHidden'
:
true
},
{
label
:
'类型'
,
prop
:
'token_type'
,
align
:
'center'
},
{
label
:
'过期时间'
,
prop
:
'expires_in'
,
align
:
'center'
},
{
label
:
'客户端'
,
prop
:
'client_id'
,
align
:
'center'
},
{
label
:
'授权类型'
,
prop
:
'grant_type'
,
align
:
'center'
}]
}
src/const/crud/admin/user.js
View file @
05842014
...
...
@@ -14,132 +14,133 @@
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
import
{
getDetails
}
from
"@/api/admin/user"
;
import
{
getDetails
}
from
"@/api/admin/user"
;
var
validateUsername
=
(
rule
,
value
,
callback
)
=>
{
getDetails
(
value
).
then
(
response
=>
{
if
(
window
.
boxType
===
'edit'
)
callback
()
let
result
=
response
.
data
.
data
if
(
result
!==
null
)
{
callback
(
new
Error
(
'用户名已经存在'
))
}
else
{
callback
()
}
});
getDetails
(
value
).
then
(
response
=>
{
if
(
window
.
boxType
===
'edit'
)
callback
()
let
result
=
response
.
data
.
data
if
(
result
!==
null
)
{
callback
(
new
Error
(
'用户名已经存在'
))
}
else
{
callback
()
}
});
};
export
const
tableOption
=
{
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
editBtn
:
false
,
delBtn
:
false
,
align
:
'center'
,
addBtn
:
false
,
column
:
[{
fixed
:
true
,
label
:
'id'
,
prop
:
'userId'
,
span
:
24
,
hide
:
true
,
editDisabled
:
true
,
addVisdiplay
:
false
,
},
{
fixed
:
true
,
label
:
'用户名'
,
prop
:
'username'
,
editDisabled
:
true
,
solt
:
true
,
search
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请输入用户名"
,
},
{
min
:
3
,
max
:
20
,
message
:
"长度在 3 到 20 个字符"
,
trigger
:
"blur"
},
{
validator
:
validateUsername
,
trigger
:
'blur'
}
]
},
{
label
:
'密码'
,
prop
:
'password'
,
type
:
'password'
,
value
:
''
,
hide
:
true
,
span
:
24
,
rules
:
[{
min
:
6
,
max
:
20
,
message
:
"长度在 6 到 20 个字符"
,
trigger
:
"blur"
}]
},
{
label
:
'所属部门'
,
prop
:
'deptId'
,
formsolt
:
true
,
solt
:
true
,
span
:
24
,
hide
:
true
,
rules
:
[{
required
:
true
,
message
:
"请选择部门"
,
trigger
:
"blur"
}]
},
{
label
:
'手机号'
,
prop
:
'phone'
,
type
:
'phone'
,
value
:
''
,
span
:
24
,
rules
:
[{
min
:
6
,
max
:
20
,
message
:
"长度在 11 个字符"
,
trigger
:
"blur"
}]
},{
label
:
'角色'
,
prop
:
'role'
,
formsolt
:
true
,
solt
:
true
,
overHidden
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请选择角色"
,
trigger
:
"blur"
}],
},
{
label
:
'状态'
,
prop
:
"lockFlag"
,
type
:
"select"
,
solt
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请选择状态"
,
trigger
:
"blur"
}],
dicData
:
[{
label
:
'有效'
,
value
:
"0"
},
{
label
:
'锁定'
,
value
:
"9"
}]
border
:
true
,
index
:
true
,
indexLabel
:
'序号'
,
stripe
:
true
,
menuAlign
:
'center'
,
editBtn
:
false
,
delBtn
:
false
,
align
:
'center'
,
addBtn
:
false
,
column
:
[{
fixed
:
true
,
label
:
'id'
,
prop
:
'userId'
,
span
:
24
,
hide
:
true
,
editDisabled
:
true
,
addVisdiplay
:
false
,
},
{
fixed
:
true
,
label
:
'用户名'
,
prop
:
'username'
,
editDisabled
:
true
,
solt
:
true
,
search
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请输入用户名"
,
},
{
min
:
3
,
max
:
20
,
message
:
"长度在 3 到 20 个字符"
,
trigger
:
"blur"
},
{
validator
:
validateUsername
,
trigger
:
'blur'
}
]
},
{
label
:
'密码'
,
prop
:
'password'
,
type
:
'password'
,
value
:
''
,
hide
:
true
,
span
:
24
,
rules
:
[{
min
:
6
,
max
:
20
,
message
:
"长度在 6 到 20 个字符"
,
trigger
:
"blur"
}]
},
{
label
:
'所属部门'
,
prop
:
'deptId'
,
formsolt
:
true
,
solt
:
true
,
span
:
24
,
hide
:
true
,
rules
:
[{
required
:
true
,
message
:
"请选择部门"
,
trigger
:
"blur"
}]
},
{
label
:
'手机号'
,
prop
:
'phone'
,
type
:
'phone'
,
value
:
''
,
span
:
24
,
rules
:
[{
min
:
6
,
max
:
20
,
message
:
"长度在 11 个字符"
,
trigger
:
"blur"
}]
},
{
label
:
'角色'
,
prop
:
'role'
,
formsolt
:
true
,
solt
:
true
,
overHidden
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请选择角色"
,
trigger
:
"blur"
}],
},
{
label
:
'状态'
,
prop
:
"lockFlag"
,
type
:
"select"
,
solt
:
true
,
span
:
24
,
rules
:
[{
required
:
true
,
message
:
"请选择状态"
,
trigger
:
"blur"
}],
dicData
:
[{
label
:
'有效'
,
value
:
"0"
},
{
width
:
180
,
label
:
'创建时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'yyyy-MM-dd HH:mm:ss'
,
editDisabled
:
true
,
addVisdiplay
:
false
,
span
:
24
label
:
'锁定'
,
value
:
"9"
}]
},
{
width
:
180
,
label
:
'创建时间'
,
prop
:
'createTime'
,
type
:
'datetime'
,
format
:
'yyyy-MM-dd HH:mm'
,
valueFormat
:
'yyyy-MM-dd HH:mm:ss'
,
editDisabled
:
true
,
addVisdiplay
:
false
,
span
:
24
}]
}
src/const/crud/daemon/execution-log.js
View file @
05842014
...
...
@@ -15,84 +15,84 @@
* Author: lengleng (wangiegie@gmail.com)
*/
const
DIC
=
{
isSuccess
:
[{
label
:
'成功'
,
value
:
1
},
{
label
:
'失败'
,
value
:
0
}
]
isSuccess
:
[{
label
:
'成功'
,
value
:
1
},
{
label
:
'失败'
,
value
:
0
}
]
}
export
const
tableOption
=
{
'border'
:
true
,
'index'
:
true
,
'indexLabel'
:
'序号'
,
'stripe'
:
true
,
'menuAlign'
:
"center"
,
'align'
:
"center"
,
'editBtn'
:
false
,
'delBtn'
:
false
,
'addBtn'
:
false
,
'viewBtn'
:
true
,
'dic'
:
[],
'column'
:
[
{
label
:
'ID'
,
prop
:
'id'
,
hide
:
true
},
{
label
:
'任务名称'
,
prop
:
'jobName'
},
{
label
:
'任务ID'
,
prop
:
'taskId'
,
hide
:
true
,
overHidden
:
true
},
{
label
:
'主机名'
,
prop
:
'hostname'
,
hide
:
true
},
{
label
:
'IP'
,
prop
:
'ip'
},
{
width
:
80
,
label
:
'分片项'
,
prop
:
'shardingItem'
},
{
label
:
'执行源'
,
prop
:
'executionSource'
,
hide
:
true
},
{
label
:
'失败原因'
,
prop
:
'failureCause'
,
hide
:
true
},
{
width
:
100
,
label
:
'执行结果'
,
prop
:
'isSuccess'
,
type
:
'select'
,
dicData
:
DIC
.
isSuccess
,
},
{
label
:
'开始时间'
,
prop
:
'startTime'
,
hide
:
true
},
{
label
:
'完成时间'
,
prop
:
'completeTime'
},
]
'border'
:
true
,
'index'
:
true
,
'indexLabel'
:
'序号'
,
'stripe'
:
true
,
'menuAlign'
:
"center"
,
'align'
:
"center"
,
'editBtn'
:
false
,
'delBtn'
:
false
,
'addBtn'
:
false
,
'viewBtn'
:
true
,
'dic'
:
[],
'column'
:
[
{
label
:
'ID'
,
prop
:
'id'
,
hide
:
true
},
{
label
:
'任务名称'
,
prop
:
'jobName'
},
{
label
:
'任务ID'
,
prop
:
'taskId'
,
hide
:
true
,
overHidden
:
true
},
{
label
:
'主机名'
,
prop
:
'hostname'
,
hide
:
true
},
{
label
:
'IP'
,
prop
:
'ip'
},
{
width
:
80
,
label
:
'分片项'
,
prop
:
'shardingItem'
},
{
label
:
'执行源'
,
prop
:
'executionSource'
,
hide
:
true
},
{
label
:
'失败原因'
,
prop
:
'failureCause'
,
hide
:
true
},
{
width
:
100
,
label
:
'执行结果'
,
prop
:
'isSuccess'
,
type
:
'select'
,
dicData
:
DIC
.
isSuccess
,
},
{
label
:
'开始时间'
,
prop
:
'startTime'
,
hide
:
true
},
{
label
:
'完成时间'
,
prop
:
'completeTime'
},
]
}
src/const/crud/daemon/status-trace-log.js
View file @
05842014
...
...
@@ -16,89 +16,89 @@
*/
const
DIC
=
{
state
:
[{
label
:
'准备中'
,
value
:
'TASK_STAGING'
},
{
label
:
'执行中'
,
value
:
'TASK_RUNNING'
},
{
label
:
'已经完成'
,
value
:
'TASK_FINISHED'
}
]
state
:
[{
label
:
'准备中'
,
value
:
'TASK_STAGING'
},
{
label
:
'执行中'
,
value
:
'TASK_RUNNING'
},
{
label
:
'已经完成'
,
value
:
'TASK_FINISHED'
}
]
}
export
const
tableOption
=
{
"border"
:
true
,
"index"
:
true
,
"stripe"
:
true
,
"menuAlign"
:
"center"
,
"align"
:
"center"
,
"editBtn"
:
false
,
"delBtn"
:
false
,
"addBtn"
:
false
,
"viewBtn"
:
true
,
"dic"
:
[],
"column"
:
[{
label
:
'ID'
,
prop
:
'id'
,
hide
:
true
"border"
:
true
,
"index"
:
true
,
"stripe"
:
true
,
"menuAlign"
:
"center"
,
"align"
:
"center"
,
"editBtn"
:
false
,
"delBtn"
:
false
,
"addBtn"
:
false
,
"viewBtn"
:
true
,
"dic"
:
[],
"column"
:
[{
label
:
'ID'
,
prop
:
'id'
,
hide
:
true
},
{
label
:
'作业名称'
,
prop
:
'jobName'
,
search
:
true
},
{
label
:
'原任务'
,
prop
:
'originalTaskId'
,
hide
:
true
,
width
:
100
},
{
label
:
'任务ID'
,
prop
:
'taskId'
,
hide
:
true
},
{
label
:
'服务器IP'
,
prop
:
'slaveId'
},
{
label
:
'资源'
,
prop
:
'source'
,
hide
:
true
},
{
label
:
'执行类型'
,
prop
:
'executionType'
,
hide
:
true
},
{
width
:
100
,
label
:
'分片项'
,
prop
:
'shardingItem'
},
{
width
:
100
,
label
:
'状态'
,
prop
:
'state'
,
type
:
'select'
,
dicData
:
DIC
.
state
,
search
:
true
},
{
label
:
'消息'
,
prop
:
'message'
,
width
:
100
,
overHidden
:
true
,
hide
:
true
},
{
label
:
'作业名称'
,
prop
:
'jobName'
,
search
:
true
},
{
label
:
'原任务'
,
prop
:
'originalTaskId'
,
hide
:
true
,
width
:
100
},
{
label
:
'任务ID'
,
prop
:
'taskId'
,
hide
:
true
},
{
label
:
'服务器IP'
,
prop
:
'slaveId'
},
{
label
:
'资源'
,
prop
:
'source'
,
hide
:
true
},
{
label
:
'执行类型'
,
prop
:
'executionType'
,
hide
:
true
},
{
width
:
100
,
label
:
'分片项'
,
prop
:
'shardingItem'
},
{
width
:
100
,
label
:
'状态'
,
prop
:
'state'
,
type
:
'select'
,
dicData
:
DIC
.
state
,
search
:
true
},
{
label
:
'消息'
,
prop
:
'message'
,
width
:
100
,
overHidden
:
true
,
hide
:
true
},
{
label
:
'创建时间'
,
prop
:
'creationTime'
}
]
{
label
:
'创建时间'
,
prop
:
'creationTime'
}
]
}
src/const/crud/option.js
View file @
05842014
...
...
@@ -16,66 +16,66 @@
*/
export
const
tableOption
=
{
'border'
:
true
,
'index'
:
true
,
'expand'
:
true
,
'stripe'
:
true
,
'selection'
:
true
,
'page'
:
false
,
'menuAlign'
:
'center'
,
'defaultSort'
:
{
prop
:
'username'
,
order
:
'descending'
},
'align'
:
'center'
,
'dic'
:
[],
'column'
:
[{
'label'
:
'用户名'
,
'prop'
:
'username'
,
'span'
:
24
,
'solt'
:
true
,
'sortable'
:
true
,
'width'
:
120
,
'rules'
:
[{
'required'
:
true
,
'message'
:
'请输入用户名'
,
'trigger'
:
'blur'
}]
},
{
'label'
:
'类型'
,
'prop'
:
'type'
,
'width'
:
80
,
'type'
:
'select'
,
'sortable'
:
true
,
'dicData'
:
[{
'label'
:
'后端'
,
'value'
:
'0'
},
{
'label'
:
'前端'
,
'value'
:
'1'
}]
},
{
'label'
:
'stars'
,
'width'
:
'150'
,
'prop'
:
'stars'
,
'sortable'
:
true
,
'solt'
:
true
},
{
'label'
:
'码云'
,
'solt'
:
true
,
'span'
:
24
,
'prop'
:
'address'
,
'type'
:
'textarea'
,
'overHidden'
:
true
'border'
:
true
,
'index'
:
true
,
'expand'
:
true
,
'stripe'
:
true
,
'selection'
:
true
,
'page'
:
false
,
'menuAlign'
:
'center'
,
'defaultSort'
:
{
prop
:
'username'
,
order
:
'descending'
},
'align'
:
'center'
,
'dic'
:
[],
'column'
:
[{
'label'
:
'用户名'
,
'prop'
:
'username'
,
'span'
:
24
,
'solt'
:
true
,
'sortable'
:
true
,
'width'
:
120
,
'rules'
:
[{
'required'
:
true
,
'message'
:
'请输入用户名'
,
'trigger'
:
'blur'
}]
},
{
'label'
:
'类型'
,
'prop'
:
'type'
,
'width'
:
80
,
'type'
:
'select'
,
'sortable'
:
true
,
'dicData'
:
[{
'label'
:
'后端'
,
'value'
:
'0'
},
{
'label'
:
'项目介绍'
,
'width'
:
'300'
,
'prop'
:
'info'
,
'editDisabled'
:
true
,
'type'
:
'textarea'
,
'span'
:
24
,
'maxRow'
:
4
,
'minRow'
:
4
,
'overHidden'
:
true
'label'
:
'前端'
,
'value'
:
'1'
}]
}
\ No newline at end of file
},
{
'label'
:
'stars'
,
'width'
:
'150'
,
'prop'
:
'stars'
,
'sortable'
:
true
,
'solt'
:
true
},
{
'label'
:
'码云'
,
'solt'
:
true
,
'span'
:
24
,
'prop'
:
'address'
,
'type'
:
'textarea'
,
'overHidden'
:
true
},
{
'label'
:
'项目介绍'
,
'width'
:
'300'
,
'prop'
:
'info'
,
'editDisabled'
:
true
,
'type'
:
'textarea'
,
'span'
:
24
,
'maxRow'
:
4
,
'minRow'
:
4
,
'overHidden'
:
true
}]
}
src/const/dic.js
View file @
05842014
export
const
DIC
=
{
VAILD
:
[{
label
:
'真'
,
value
:
'true'
,
color
:
'green'
},
{
label
:
'假'
,
value
:
'false'
,
color
:
'red'
}],
SEX
:
[{
label
:
'男'
,
value
:
0
,
color
:
'green'
},
{
label
:
'女'
,
value
:
1
,
color
:
'red'
}],
POSTIONDATA
:
[{
label
:
'左对齐'
,
value
:
'left'
},
{
label
:
'居中'
,
value
:
'center'
},
{
label
:
'右对齐'
,
value
:
'right'
}],
TYPE
:
[{
label
:
'一级1'
,
value
:
0
,
children
:
[{
label
:
'一级1二级1'
,
value
:
2
,
}]
},
{
label
:
'一级2'
,
value
:
1
,
children
:
[{
label
:
'一级2二级1'
,
value
:
2
,
}]
}
VAILD
:
[{
label
:
'真'
,
value
:
'true'
,
color
:
'green'
},
{
label
:
'假'
,
value
:
'false'
,
color
:
'red'
}],
SEX
:
[{
label
:
'男'
,
value
:
0
,
color
:
'green'
},
{
label
:
'女'
,
value
:
1
,
color
:
'red'
}],
POSTIONDATA
:
[{
label
:
'左对齐'
,
value
:
'left'
},
{
label
:
'居中'
,
value
:
'center'
},
{
label
:
'右对齐'
,
value
:
'right'
}],
TYPE
:
[{
label
:
'一级1'
,
value
:
0
,
children
:
[{
label
:
'一级1二级1'
,
value
:
2
,
}]
},
{
label
:
'一级2'
,
value
:
1
,
children
:
[{
label
:
'一级2二级1'
,
value
:
2
,
}]
}
],
STATE
:
[{
label
:
'有效'
,
value
:
0
],
STATE
:
[{
label
:
'有效'
,
value
:
0
},
{
label
:
'无效'
,
value
:
1
}],
GRADE
:
[{
label
:
"管理员"
,
value
:
0
},
{
label
:
"二级管理员"
,
value
:
1
}
],
VAILDATA
:
[{
label
:
"激活"
,
value
:
true
,
},
{
label
:
"禁用"
,
value
:
false
,
}
],
CRUDTYPE
:
[{
label
:
"输入框"
,
value
:
''
},
{
label
:
"选择框"
,
value
:
'select'
},
{
label
:
"文本框"
,
value
:
'text'
},
{
label
:
"密码框"
,
value
:
'password'
},
{
label
:
"树型框"
,
value
:
'tree'
},
{
label
:
"富文本编辑框"
,
value
:
'ueditor'
},
{
label
:
"多行文本框"
,
value
:
'textarea'
},
{
label
:
"单选框"
,
value
:
'radio'
},
{
label
:
"多选框"
,
value
:
'checkbox'
},
{
label
:
"数字框"
,
value
:
'number'
},
{
label
:
"日期框"
,
value
:
'date'
},
{
label
:
"日期范围框"
,
value
:
'daterange'
},
{
label
:
"时间范围框"
,
value
:
'datetimerange'
},
{
label
:
"时间框"
,
value
:
'datetime'
},
{
label
:
"周"
,
value
:
'week'
},
{
label
:
"月"
,
value
:
'month'
},
{
label
:
"年"
,
value
:
'year'
},
{
label
:
"滑动框"
,
value
:
'silder'
},
{
label
:
"评价框"
,
value
:
'rate'
},
{
label
:
"上传框"
,
value
:
'upload'
}
],
UITYPE
:
[{
value
:
'zhinan'
,
label
:
'指南'
,
children
:
[{
value
:
'shejiyuanze'
,
label
:
'设计原则'
,
children
:
[{
value
:
'yizhi'
,
label
:
'一致'
},
{
value
:
'fankui'
,
label
:
'反馈'
},
{
value
:
'xiaolv'
,
label
:
'效率'
},
{
value
:
'kekong'
,
label
:
'可控'
}]
},
{
value
:
'daohang'
,
label
:
'导航'
,
children
:
[{
value
:
'cexiangdaohang'
,
label
:
'侧向导航'
},
{
value
:
'dingbudaohang'
,
label
:
'顶部导航'
}]
}]
},
{
value
:
'zujian'
,
label
:
'组件'
,
children
:
[{
value
:
'basic'
,
label
:
'Basic'
,
children
:
[{
value
:
'layout'
,
label
:
'Layout 布局'
},
{
value
:
'color'
,
label
:
'Color 色彩'
},
{
value
:
'typography'
,
label
:
'Typography 字体'
},
{
value
:
'icon'
,
label
:
'Icon 图标'
},
{
value
:
'button'
,
label
:
'Button 按钮'
}]
},
{
label
:
'无效'
,
value
:
1
}],
GRADE
:
[{
label
:
"管理员"
,
value
:
0
},
{
label
:
"二级管理员"
,
value
:
1
}
],
VAILDATA
:
[{
label
:
"激活"
,
value
:
true
,
},
{
label
:
"禁用"
,
value
:
false
,
}
],
CRUDTYPE
:
[{
label
:
"输入框"
,
value
:
''
},
{
label
:
"选择框"
,
value
:
'select'
},
{
label
:
"文本框"
,
value
:
'text'
},
{
label
:
"密码框"
,
value
:
'password'
},
{
label
:
"树型框"
,
value
:
'tree'
},
{
label
:
"富文本编辑框"
,
value
:
'ueditor'
},
{
label
:
"多行文本框"
,
value
:
'textarea'
},
{
label
:
"单选框"
,
value
:
'radio'
},
{
label
:
"多选框"
,
value
:
'checkbox'
},
{
label
:
"数字框"
,
value
:
'number'
},
{
label
:
"日期框"
,
value
:
'date'
},
{
label
:
"日期范围框"
,
value
:
'daterange'
},
{
label
:
"时间范围框"
,
value
:
'datetimerange'
},
{
label
:
"时间框"
,
value
:
'datetime'
},
{
label
:
"周"
,
value
:
'week'
},
{
label
:
"月"
,
value
:
'month'
},
{
label
:
"年"
,
value
:
'year'
},
{
label
:
"滑动框"
,
value
:
'silder'
},
{
label
:
"评价框"
,
value
:
'rate'
},
{
label
:
"上传框"
,
value
:
'upload'
}
],
UITYPE
:
[{
value
:
'zhinan'
,
label
:
'指南'
,
children
:
[{
value
:
'shejiyuanze'
,
label
:
'设计原则'
,
children
:
[{
value
:
'yizhi'
,
label
:
'一致'
},
{
value
:
'fankui'
,
label
:
'反馈'
},
{
value
:
'xiaolv'
,
label
:
'效率'
},
{
value
:
'kekong'
,
label
:
'可控'
}]
},
{
value
:
'daohang'
,
label
:
'导航'
,
children
:
[{
value
:
'cexiangdaohang'
,
label
:
'侧向导航'
},
{
value
:
'dingbudaohang'
,
label
:
'顶部导航'
}]
}]
value
:
'form'
,
label
:
'Form'
,
children
:
[{
value
:
'radio'
,
label
:
'Radio 单选框'
},
{
value
:
'checkbox'
,
label
:
'Checkbox 多选框'
},
{
value
:
'input'
,
label
:
'Input 输入框'
},
{
value
:
'input-number'
,
label
:
'InputNumber 计数器'
},
{
value
:
'select'
,
label
:
'Select 选择器'
},
{
value
:
'cascader'
,
label
:
'Cascader 级联选择器'
},
{
value
:
'switch'
,
label
:
'Switch 开关'
},
{
value
:
'slider'
,
label
:
'Slider 滑块'
},
{
value
:
'time-picker'
,
label
:
'TimePicker 时间选择器'
},
{
value
:
'date-picker'
,
label
:
'DatePicker 日期选择器'
},
{
value
:
'datetime-picker'
,
label
:
'DateTimePicker 日期时间选择器'
},
{
value
:
'upload'
,
label
:
'Upload 上传'
},
{
value
:
'rate'
,
label
:
'Rate 评分'
},
{
value
:
'form'
,
label
:
'Form 表单'
}]
},
{
value
:
'zujian'
,
label
:
'组件'
,
children
:
[{
value
:
'basic'
,
label
:
'Basic'
,
children
:
[{
value
:
'layout'
,
label
:
'Layout 布局'
},
{
value
:
'color'
,
label
:
'Color 色彩'
},
{
value
:
'typography'
,
label
:
'Typography 字体'
},
{
value
:
'icon'
,
label
:
'Icon 图标'
},
{
value
:
'button'
,
label
:
'Button 按钮'
}]
},
{
value
:
'form'
,
label
:
'Form'
,
children
:
[{
value
:
'radio'
,
label
:
'Radio 单选框'
},
{
value
:
'checkbox'
,
label
:
'Checkbox 多选框'
},
{
value
:
'input'
,
label
:
'Input 输入框'
},
{
value
:
'input-number'
,
label
:
'InputNumber 计数器'
},
{
value
:
'select'
,
label
:
'Select 选择器'
},
{
value
:
'cascader'
,
label
:
'Cascader 级联选择器'
},
{
value
:
'switch'
,
label
:
'Switch 开关'
},
{
value
:
'slider'
,
label
:
'Slider 滑块'
},
{
value
:
'time-picker'
,
label
:
'TimePicker 时间选择器'
},
{
value
:
'date-picker'
,
label
:
'DatePicker 日期选择器'
},
{
value
:
'datetime-picker'
,
label
:
'DateTimePicker 日期时间选择器'
},
{
value
:
'upload'
,
label
:
'Upload 上传'
},
{
value
:
'rate'
,
label
:
'Rate 评分'
},
{
value
:
'form'
,
label
:
'Form 表单'
}]
},
{
value
:
'data'
,
label
:
'Data'
,
children
:
[{
value
:
'table'
,
label
:
'Table 表格'
},
{
value
:
'tag'
,
label
:
'Tag 标签'
},
{
value
:
'progress'
,
label
:
'Progress 进度条'
},
{
value
:
'tree'
,
label
:
'Tree 树形控件'
},
{
value
:
'pagination'
,
label
:
'Pagination 分页'
},
{
value
:
'badge'
,
label
:
'Badge 标记'
}]
},
{
value
:
'notice'
,
label
:
'Notice'
,
children
:
[{
value
:
'alert'
,
label
:
'Alert 警告'
},
{
value
:
'loading'
,
label
:
'Loading 加载'
},
{
value
:
'message'
,
label
:
'Message 消息提示'
},
{
value
:
'message-box'
,
label
:
'MessageBox 弹框'
},
{
value
:
'notification'
,
label
:
'Notification 通知'
}]
},
{
value
:
'navigation'
,
label
:
'Navigation'
,
children
:
[{
value
:
'menu'
,
label
:
'NavMenu 导航菜单'
},
{
value
:
'tabs'
,
label
:
'Tabs 标签页'
},
{
value
:
'breadcrumb'
,
label
:
'Breadcrumb 面包屑'
},
{
value
:
'dropdown'
,
label
:
'Dropdown 下拉菜单'
},
{
value
:
'steps'
,
label
:
'Steps 步骤条'
}]
},
{
value
:
'others'
,
label
:
'Others'
,
children
:
[{
value
:
'dialog'
,
label
:
'Dialog 对话框'
},
{
value
:
'tooltip'
,
label
:
'Tooltip 文字提示'
},
{
value
:
'popover'
,
label
:
'Popover 弹出框'
},
{
value
:
'card'
,
label
:
'Card 卡片'
},
{
value
:
'carousel'
,
label
:
'Carousel 走马灯'
},
{
value
:
'collapse'
,
label
:
'Collapse 折叠面板'
}]
}]
value
:
'data'
,
label
:
'Data'
,
children
:
[{
value
:
'table'
,
label
:
'Table 表格'
},
{
value
:
'tag'
,
label
:
'Tag 标签'
},
{
value
:
'progress'
,
label
:
'Progress 进度条'
},
{
value
:
'tree'
,
label
:
'Tree 树形控件'
},
{
value
:
'pagination'
,
label
:
'Pagination 分页'
},
{
value
:
'badge'
,
label
:
'Badge 标记'
}]
},
{
value
:
'ziyuan'
,
label
:
'资源'
,
children
:
[{
value
:
'axure'
,
label
:
'Axure Components'
},
{
value
:
'sketch'
,
label
:
'Sketch Templates'
},
{
value
:
'jiaohu'
,
label
:
'组件交互文档'
}]
}],
PAYTYPE
:
[{
label
:
'微信'
,
value
:
'0'
,
value
:
'notice'
,
label
:
'Notice'
,
children
:
[{
value
:
'alert'
,
label
:
'Alert 警告'
},
{
value
:
'loading'
,
label
:
'Loading 加载'
},
{
value
:
'message'
,
label
:
'Message 消息提示'
},
{
value
:
'message-box'
,
label
:
'MessageBox 弹框'
},
{
value
:
'notification'
,
label
:
'Notification 通知'
}]
},
{
label
:
'支付宝'
,
value
:
'1'
,
value
:
'navigation'
,
label
:
'Navigation'
,
children
:
[{
value
:
'menu'
,
label
:
'NavMenu 导航菜单'
},
{
value
:
'tabs'
,
label
:
'Tabs 标签页'
},
{
value
:
'breadcrumb'
,
label
:
'Breadcrumb 面包屑'
},
{
value
:
'dropdown'
,
label
:
'Dropdown 下拉菜单'
},
{
value
:
'steps'
,
label
:
'Steps 步骤条'
}]
},
{
label
:
'银行卡'
,
value
:
'2'
,
}],
DATALIST
:
[{
label
:
'SEX'
,
value
:
'SEX'
,
value
:
'others'
,
label
:
'Others'
,
children
:
[{
value
:
'dialog'
,
label
:
'Dialog 对话框'
},
{
value
:
'tooltip'
,
label
:
'Tooltip 文字提示'
},
{
value
:
'popover'
,
label
:
'Popover 弹出框'
},
{
value
:
'card'
,
label
:
'Card 卡片'
},
{
value
:
'carousel'
,
label
:
'Carousel 走马灯'
},
{
value
:
'collapse'
,
label
:
'Collapse 折叠面板'
}]
}]
},
{
value
:
'ziyuan'
,
label
:
'资源'
,
children
:
[{
value
:
'axure'
,
label
:
'Axure Components'
},
{
label
:
'STATE
'
,
value
:
'STATE'
,
value
:
'sketch
'
,
label
:
'Sketch Templates'
},
{
label
:
'GRADE
'
,
value
:
'GRADE'
,
value
:
'jiaohu
'
,
label
:
'组件交互文档'
}]
}
\ No newline at end of file
}],
PAYTYPE
:
[{
label
:
'微信'
,
value
:
'0'
,
},
{
label
:
'支付宝'
,
value
:
'1'
,
},
{
label
:
'银行卡'
,
value
:
'2'
,
}],
DATALIST
:
[{
label
:
'SEX'
,
value
:
'SEX'
,
},
{
label
:
'STATE'
,
value
:
'STATE'
,
},
{
label
:
'GRADE'
,
value
:
'GRADE'
,
}]
}
src/const/errorCode.js
View file @
05842014
export
default
{
'000'
:
'操作太频繁,请勿重复请求'
,
'401'
:
'当前操作没有权限'
,
'403'
:
'当前操作没有权限'
,
'404'
:
'资源不存在'
,
'417'
:
'未绑定登录账号,请使用密码登录后绑定'
,
'423'
:
'演示环境不能操作,如需了解联系冷冷'
,
'426'
:
'用户名不存在或密码错误'
,
'428'
:
'验证码错误,请重新输入'
,
'429'
:
'请求过频繁'
,
'479'
:
'演示环境,没有权限操作'
,
'default'
:
'系统未知错误,请反馈给管理员'
}
\ No newline at end of file
'000'
:
'操作太频繁,请勿重复请求'
,
'401'
:
'当前操作没有权限'
,
'403'
:
'当前操作没有权限'
,
'404'
:
'资源不存在'
,
'417'
:
'未绑定登录账号,请使用密码登录后绑定'
,
'423'
:
'演示环境不能操作,如需了解联系冷冷'
,
'426'
:
'用户名不存在或密码错误'
,
'428'
:
'验证码错误,请重新输入'
,
'429'
:
'请求过频繁'
,
'479'
:
'演示环境,没有权限操作'
,
'default'
:
'系统未知错误,请反馈给管理员'
}
src/const/logs/index.js
View file @
05842014
export
default
{
menu
:
false
,
addBtn
:
false
,
page
:
false
,
border
:
true
,
expand
:
true
,
refreshBtn
:
false
,
headerAlign
:
'center'
,
column
:
[{
label
:
'类型'
,
prop
:
'type'
,
width
:
80
,
align
:
'center'
,
solt
:
true
,
dicData
:
[{
label
:
'bug'
,
value
:
'error'
}]
},
{
label
:
'地址'
,
width
:
200
,
prop
:
'url'
,
overHidden
:
true
,
},
{
label
:
'内容'
,
prop
:
'message'
,
overHidden
:
true
,
},
{
label
:
'错误堆栈'
,
prop
:
'stack'
,
hide
:
true
},
{
label
:
'时间'
,
align
:
'center'
,
prop
:
'time'
,
width
:
200
,
menu
:
false
,
addBtn
:
false
,
page
:
false
,
border
:
true
,
expand
:
true
,
refreshBtn
:
false
,
headerAlign
:
'center'
,
column
:
[{
label
:
'类型'
,
prop
:
'type'
,
width
:
80
,
align
:
'center'
,
solt
:
true
,
dicData
:
[{
label
:
'bug'
,
value
:
'error'
}]
}
\ No newline at end of file
},
{
label
:
'地址'
,
width
:
200
,
prop
:
'url'
,
overHidden
:
true
,
},
{
label
:
'内容'
,
prop
:
'message'
,
overHidden
:
true
,
},
{
label
:
'错误堆栈'
,
prop
:
'stack'
,
hide
:
true
},
{
label
:
'时间'
,
align
:
'center'
,
prop
:
'time'
,
width
:
200
,
}]
}
src/const/setting/index.js
View file @
05842014
const
dicData
=
[{
label
:
'开启'
,
value
:
'true'
label
:
'开启'
,
value
:
'true'
},
{
label
:
'关闭'
,
value
:
'false'
label
:
'关闭'
,
value
:
'false'
}]
export
const
list
=
[{
key
:
'showTag'
,
commit
:
'SET_SHOWTAG'
key
:
'showTag'
,
commit
:
'SET_SHOWTAG'
},
{
key
:
'showTheme'
,
commit
:
'SET_SHOWTHEME'
key
:
'showTheme'
,
commit
:
'SET_SHOWTHEME'
},
{
key
:
'showColor'
,
commit
:
'SET_SHOWCOLOR'
key
:
'showColor'
,
commit
:
'SET_SHOWCOLOR'
},
{
key
:
'showLock'
,
commit
:
'SET_SHOWLOCK'
key
:
'showLock'
,
commit
:
'SET_SHOWLOCK'
},
{
key
:
'showDebug'
,
commit
:
'SET_SHOWDEBUG'
key
:
'showDebug'
,
commit
:
'SET_SHOWDEBUG'
},
{
key
:
'showFullScren'
,
commit
:
'SET_SHOWFULLSCREN'
key
:
'showFullScren'
,
commit
:
'SET_SHOWFULLSCREN'
},
{
key
:
'showCollapse'
,
commit
:
'SET_SHOWCOLLAPSE'
key
:
'showCollapse'
,
commit
:
'SET_SHOWCOLLAPSE'
},
{
key
:
'showSearch'
,
commit
:
'SET_SHOWSEARCH'
key
:
'showSearch'
,
commit
:
'SET_SHOWSEARCH'
},
{
key
:
'showMenu'
,
commit
:
'SET_SHOWMENU'
key
:
'showMenu'
,
commit
:
'SET_SHOWMENU'
}]
export
const
option
=
(
safe
)
=>
{
const
_safe
=
safe
;
return
{
submitBtn
:
false
,
column
:
[{
label
:
'标签'
,
prop
:
'showTag'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'日志'
,
prop
:
'showDebug'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'主题'
,
prop
:
'showTheme'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'主题色'
,
prop
:
'showColor'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'全屏'
,
prop
:
'showFullScren'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'锁屏'
,
prop
:
'showLock'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'搜索'
,
prop
:
'showSearch'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'缩放'
,
prop
:
'showCollapse'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'顶部菜单'
,
prop
:
'showMenu'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
}]
}
}
\ No newline at end of file
const
_safe
=
safe
;
return
{
submitBtn
:
false
,
column
:
[{
label
:
'标签'
,
prop
:
'showTag'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'日志'
,
prop
:
'showDebug'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'主题'
,
prop
:
'showTheme'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'主题色'
,
prop
:
'showColor'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'全屏'
,
prop
:
'showFullScren'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'锁屏'
,
prop
:
'showLock'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'搜索'
,
prop
:
'showSearch'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'缩放'
,
prop
:
'showCollapse'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
},
{
label
:
'顶部菜单'
,
prop
:
'showMenu'
,
type
:
'switch'
,
span
:
24
,
dicData
:
dicData
,
click
:
({
column
})
=>
{
_safe
.
set
(
column
.
prop
);
}
}]
}
}
src/const/website.js
View file @
05842014
export
default
{
title
:
"PigX"
,
logo
:
"PigX"
,
indexTitle
:
'PigX Pro 快速开发框架'
,
whiteList
:
[
"/login"
,
"/404"
,
"/401"
,
"/lock"
],
//配置无权限可以访问的页面
whiteTagList
:
[
"/login"
,
"/404"
,
"/401"
,
"/lock"
,
],
//配置不添加tags页面 ('/advanced-router/mutative-detail/*'——*为通配符)
lockPage
:
'/lock'
,
tokenTime
:
6000
,
info
:
{
title
:
"PigX Pro 快速开发框架"
,
list
:
[
'一个基于Spring Cloud、OAuth2.0开发基于Vue前后分离的开发平台。'
,
'一个基于Avue2 开发无需前端知识,即可快速上手的开发平台。'
,
'最大程度上帮助企业节省时间成本和费用开支。'
,
'QQ群:23754102'
,
'当前版本:v2.0.0'
,
]
},
//http的status默认放行不才用统一处理的,
statusWhiteList
:
[
400
,
500
,
401
],
//配置首页不可关闭
isFirstPage
:
false
,
fistPage
:
{
label
:
"首页"
,
value
:
"/wel/index"
,
params
:
{},
query
:
{},
group
:
[],
close
:
false
},
//配置菜单的属性
menu
:
{
props
:
{
label
:
'label'
,
path
:
'path'
,
icon
:
'icon'
,
children
:
'children'
}
title
:
"PigX"
,
logo
:
"PigX"
,
indexTitle
:
'PigX Pro 快速开发框架'
,
whiteList
:
[
"/login"
,
"/404"
,
"/401"
,
"/lock"
],
//配置无权限可以访问的页面
whiteTagList
:
[
"/login"
,
"/404"
,
"/401"
,
"/lock"
,],
//配置不添加tags页面 ('/advanced-router/mutative-detail/*'——*为通配符)
lockPage
:
'/lock'
,
tokenTime
:
6000
,
info
:
{
title
:
"PigX Pro 快速开发框架"
,
list
:
[
'一个基于Spring Cloud、OAuth2.0开发基于Vue前后分离的开发平台。'
,
'一个基于Avue2 开发无需前端知识,即可快速上手的开发平台。'
,
'最大程度上帮助企业节省时间成本和费用开支。'
,
'QQ群:23754102'
,
'当前版本:v2.0.0'
,
]
},
//http的status默认放行不才用统一处理的,
statusWhiteList
:
[
400
,
500
,
401
],
//配置首页不可关闭
isFirstPage
:
false
,
fistPage
:
{
label
:
"首页"
,
value
:
"/wel/index"
,
params
:
{},
query
:
{},
group
:
[],
close
:
false
},
//配置菜单的属性
menu
:
{
props
:
{
label
:
'label'
,
path
:
'path'
,
icon
:
'icon'
,
children
:
'children'
}
}
\ No newline at end of file
}
}
src/error.js
View file @
05842014
import
Vue
from
'vue'
;
import
store
from
'./store'
Vue
.
config
.
errorHandler
=
function
(
err
,
vm
,
info
)
{
Vue
.
nextTick
(()
=>
{
store
.
commit
(
'ADD_LOGS'
,
{
type
:
'error'
,
message
:
err
.
message
,
stack
:
err
.
stack
,
info
})
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
console
.
group
(
'>>>>>> 错误信息 >>>>>>'
)
console
.
log
(
info
)
console
.
groupEnd
();
console
.
group
(
'>>>>>> Vue 实例 >>>>>>'
)
console
.
log
(
vm
)
console
.
groupEnd
();
console
.
group
(
'>>>>>> Error >>>>>>'
)
console
.
log
(
err
)
console
.
groupEnd
();
}
Vue
.
config
.
errorHandler
=
function
(
err
,
vm
,
info
)
{
Vue
.
nextTick
(()
=>
{
store
.
commit
(
'ADD_LOGS'
,
{
type
:
'error'
,
message
:
err
.
message
,
stack
:
err
.
stack
,
info
})
}
\ No newline at end of file
if
(
process
.
env
.
NODE_ENV
===
'development'
)
{
console
.
group
(
'>>>>>> 错误信息 >>>>>>'
)
console
.
log
(
info
)
console
.
groupEnd
();
console
.
group
(
'>>>>>> Vue 实例 >>>>>>'
)
console
.
log
(
vm
)
console
.
groupEnd
();
console
.
group
(
'>>>>>> Error >>>>>>'
)
console
.
log
(
err
)
console
.
groupEnd
();
}
})
}
src/filters/index.js
View file @
05842014
function
pluralize
(
time
,
label
)
{
if
(
time
===
1
)
{
return
time
+
label
}
return
time
+
label
+
's'
if
(
time
===
1
)
{
return
time
+
label
}
return
time
+
label
+
's'
}
/**
* 日期格式化
*/
export
function
dateFormat
(
date
)
{
let
format
=
'yyyy-MM-dd hh:mm:ss'
;
if
(
date
!=
'Invalid Date'
)
{
var
o
=
{
"M+"
:
date
.
getMonth
()
+
1
,
//month
"d+"
:
date
.
getDate
(),
//day
"h+"
:
date
.
getHours
(),
//hour
"m+"
:
date
.
getMinutes
(),
//minute
"s+"
:
date
.
getSeconds
(),
//second
"q+"
:
Math
.
floor
((
date
.
getMonth
()
+
3
)
/
3
),
//quarter
"S"
:
date
.
getMilliseconds
()
//millisecond
}
if
(
/
(
y+
)
/
.
test
(
format
))
format
=
format
.
replace
(
RegExp
.
$1
,
(
date
.
getFullYear
()
+
""
).
substr
(
4
-
RegExp
.
$1
.
length
));
for
(
var
k
in
o
)
if
(
new
RegExp
(
"("
+
k
+
")"
).
test
(
format
))
format
=
format
.
replace
(
RegExp
.
$1
,
RegExp
.
$1
.
length
==
1
?
o
[
k
]
:
(
"00"
+
o
[
k
]).
substr
((
""
+
o
[
k
]).
length
));
return
format
;
let
format
=
'yyyy-MM-dd hh:mm:ss'
;
if
(
date
!=
'Invalid Date'
)
{
var
o
=
{
"M+"
:
date
.
getMonth
()
+
1
,
//month
"d+"
:
date
.
getDate
(),
//day
"h+"
:
date
.
getHours
(),
//hour
"m+"
:
date
.
getMinutes
(),
//minute
"s+"
:
date
.
getSeconds
(),
//second
"q+"
:
Math
.
floor
((
date
.
getMonth
()
+
3
)
/
3
),
//quarter
"S"
:
date
.
getMilliseconds
()
//millisecond
}
return
''
;
if
(
/
(
y+
)
/
.
test
(
format
))
format
=
format
.
replace
(
RegExp
.
$1
,
(
date
.
getFullYear
()
+
""
).
substr
(
4
-
RegExp
.
$1
.
length
));
for
(
var
k
in
o
)
if
(
new
RegExp
(
"("
+
k
+
")"
).
test
(
format
))
format
=
format
.
replace
(
RegExp
.
$1
,
RegExp
.
$1
.
length
==
1
?
o
[
k
]
:
(
"00"
+
o
[
k
]).
substr
((
""
+
o
[
k
]).
length
));
return
format
;
}
return
''
;
}
export
function
timeAgo
(
time
)
{
const
between
=
Date
.
now
()
/
1000
-
Number
(
time
)
if
(
between
<
3600
)
{
return
pluralize
(
~~
(
between
/
60
),
' minute'
)
}
else
if
(
between
<
86400
)
{
return
pluralize
(
~~
(
between
/
3600
),
' hour'
)
}
else
{
return
pluralize
(
~~
(
between
/
86400
),
' day'
)
}
const
between
=
Date
.
now
()
/
1000
-
Number
(
time
)
if
(
between
<
3600
)
{
return
pluralize
(
~~
(
between
/
60
),
' minute'
)
}
else
if
(
between
<
86400
)
{
return
pluralize
(
~~
(
between
/
3600
),
' hour'
)
}
else
{
return
pluralize
(
~~
(
between
/
86400
),
' day'
)
}
}
export
function
parseTime
(
time
,
cFormat
)
{
if
(
arguments
.
length
===
0
)
{
return
null
}
if
(
arguments
.
length
===
0
)
{
return
null
}
if
((
time
+
''
).
length
===
10
)
{
time
=
+
time
*
1000
}
if
((
time
+
''
).
length
===
10
)
{
time
=
+
time
*
1000
}
const
format
=
cFormat
||
'{y}-{m}-{d} {h}:{i}:{s}'
let
date
if
(
typeof
time
===
'object'
)
{
date
=
time
}
else
{
date
=
new
Date
(
parseInt
(
time
))
}
const
formatObj
=
{
y
:
date
.
getFullYear
(),
m
:
date
.
getMonth
()
+
1
,
d
:
date
.
getDate
(),
h
:
date
.
getHours
(),
i
:
date
.
getMinutes
(),
s
:
date
.
getSeconds
(),
a
:
date
.
getDay
()
const
format
=
cFormat
||
'{y}-{m}-{d} {h}:{i}:{s}'
let
date
if
(
typeof
time
===
'object'
)
{
date
=
time
}
else
{
date
=
new
Date
(
parseInt
(
time
))
}
const
formatObj
=
{
y
:
date
.
getFullYear
(),
m
:
date
.
getMonth
()
+
1
,
d
:
date
.
getDate
(),
h
:
date
.
getHours
(),
i
:
date
.
getMinutes
(),
s
:
date
.
getSeconds
(),
a
:
date
.
getDay
()
}
const
time_str
=
format
.
replace
(
/{
(
y|m|d|h|i|s|a
)
+}/g
,
(
result
,
key
)
=>
{
let
value
=
formatObj
[
key
]
if
(
key
===
'a'
)
return
[
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'日'
][
value
-
1
]
if
(
result
.
length
>
0
&&
value
<
10
)
{
value
=
'0'
+
value
}
const
time_str
=
format
.
replace
(
/{
(
y|m|d|h|i|s|a
)
+}/g
,
(
result
,
key
)
=>
{
let
value
=
formatObj
[
key
]
if
(
key
===
'a'
)
return
[
'一'
,
'二'
,
'三'
,
'四'
,
'五'
,
'六'
,
'日'
][
value
-
1
]
if
(
result
.
length
>
0
&&
value
<
10
)
{
value
=
'0'
+
value
}
return
value
||
0
})
return
time_str
return
value
||
0
})
return
time_str
}
export
function
formatTime
(
time
,
option
)
{
time
=
+
time
*
1000
const
d
=
new
Date
(
time
)
const
now
=
Date
.
now
()
time
=
+
time
*
1000
const
d
=
new
Date
(
time
)
const
now
=
Date
.
now
()
const
diff
=
(
now
-
d
)
/
1000
const
diff
=
(
now
-
d
)
/
1000
if
(
diff
<
30
)
{
return
'刚刚'
}
else
if
(
diff
<
3600
)
{
// less 1 hour
return
Math
.
ceil
(
diff
/
60
)
+
'分钟前'
}
else
if
(
diff
<
3600
*
24
)
{
return
Math
.
ceil
(
diff
/
3600
)
+
'小时前'
}
else
if
(
diff
<
3600
*
24
*
2
)
{
return
'1天前'
}
if
(
option
)
{
return
parseTime
(
time
,
option
)
}
else
{
return
d
.
getMonth
()
+
1
+
'月'
+
d
.
getDate
()
+
'日'
+
d
.
getHours
()
+
'时'
+
d
.
getMinutes
()
+
'分'
}
if
(
diff
<
30
)
{
return
'刚刚'
}
else
if
(
diff
<
3600
)
{
// less 1 hour
return
Math
.
ceil
(
diff
/
60
)
+
'分钟前'
}
else
if
(
diff
<
3600
*
24
)
{
return
Math
.
ceil
(
diff
/
3600
)
+
'小时前'
}
else
if
(
diff
<
3600
*
24
*
2
)
{
return
'1天前'
}
if
(
option
)
{
return
parseTime
(
time
,
option
)
}
else
{
return
d
.
getMonth
()
+
1
+
'月'
+
d
.
getDate
()
+
'日'
+
d
.
getHours
()
+
'时'
+
d
.
getMinutes
()
+
'分'
}
}
/* 数字 格式化*/
export
function
nFormatter
(
num
,
digits
)
{
const
si
=
[
{
value
:
1
E18
,
symbol
:
'E'
},
{
value
:
1
E15
,
symbol
:
'P'
},
{
value
:
1
E12
,
symbol
:
'T'
},
{
value
:
1
E9
,
symbol
:
'G'
},
{
value
:
1
E6
,
symbol
:
'M'
},
{
value
:
1
E3
,
symbol
:
'k'
}
]
for
(
let
i
=
0
;
i
<
si
.
length
;
i
++
)
{
if
(
num
>=
si
[
i
].
value
)
{
return
(
num
/
si
[
i
].
value
+
0.1
).
toFixed
(
digits
).
replace
(
/
\.
0+$|
(\.[
0-9
]
*
[
1-9
])
0+$/
,
'$1'
)
+
si
[
i
].
symbol
}
const
si
=
[
{
value
:
1
E18
,
symbol
:
'E'
},
{
value
:
1
E15
,
symbol
:
'P'
},
{
value
:
1
E12
,
symbol
:
'T'
},
{
value
:
1
E9
,
symbol
:
'G'
},
{
value
:
1
E6
,
symbol
:
'M'
},
{
value
:
1
E3
,
symbol
:
'k'
}
]
for
(
let
i
=
0
;
i
<
si
.
length
;
i
++
)
{
if
(
num
>=
si
[
i
].
value
)
{
return
(
num
/
si
[
i
].
value
+
0.1
).
toFixed
(
digits
).
replace
(
/
\.
0+$|
(\.[
0-9
]
*
[
1-9
])
0+$/
,
'$1'
)
+
si
[
i
].
symbol
}
return
num
.
toString
()
}
return
num
.
toString
()
}
export
function
html2Text
(
val
)
{
const
div
=
document
.
createElement
(
'div'
)
div
.
innerHTML
=
val
return
div
.
textContent
||
div
.
innerText
const
div
=
document
.
createElement
(
'div'
)
div
.
innerHTML
=
val
return
div
.
textContent
||
div
.
innerText
}
export
function
toThousandslsFilter
(
num
)
{
return
(
+
num
||
0
).
toString
().
replace
(
/^-
?\d
+/g
,
m
=>
m
.
replace
(
/
(?=(?!\b)(\d{3})
+$
)
/g
,
','
))
}
\ No newline at end of file
return
(
+
num
||
0
).
toString
().
replace
(
/^-
?\d
+/g
,
m
=>
m
.
replace
(
/
(?=(?!\b)(\d{3})
+$
)
/g
,
','
))
}
src/main.js
View file @
05842014
...
...
@@ -10,32 +10,26 @@ import router from './router/router';
import
'avue-plugin-transfer/packages'
//引入avue-plugin-transfer插件
// import 'avue-plugin-ueditor/packages' //引入avue-plugin-ueditor插件(如果要兼容ie自行换掉富文本编辑器,此款插件不兼容ie)
import
store
from
'./store'
;
import
{
loadStyle
}
from
'./util/util'
import
{
loadStyle
}
from
'./util/util'
import
*
as
urls
from
'@/config/env'
;
import
{
iconfontUrl
,
iconfontVersion
}
from
'@/config/env'
;
import
{
iconfontUrl
,
iconfontVersion
}
from
'@/config/env'
;
import
*
as
filters
from
'./filters'
// 全局filter
import
'./styles/common.scss'
;
// // 引入avue的包
import
Avue
from
'@smallwei/avue/lib/index.js'
;
// // 引入avue的样式文件
import
'@smallwei/avue/lib/theme-chalk/index.css'
;
// //源文件包
// import '../packages/index.js';
// import '../packages/theme-chalk/src/index.scss';
import
basicContainer
from
'./components/basic-container/main'
import
VueClipboard
from
'vue-clipboard2'
// 插件 json 展示
import
vueJsonTreeView
from
'vue-json-tree-view'
// //源文件包
// import '../packages/index.js';
// import '../packages/theme-chalk/src/index.scss';
Vue
.
use
(
Avue
,
{
menuType
:
'text'
});
Vue
.
use
(
Avue
,
{
menuType
:
'text'
});
Vue
.
use
(
router
)
...
...
@@ -48,21 +42,21 @@ Vue.use(VueAxios, axios)
Vue
.
component
(
'basicContainer'
,
basicContainer
)
Object
.
keys
(
urls
).
forEach
(
key
=>
{
Vue
.
prototype
[
key
]
=
urls
[
key
];
Vue
.
prototype
[
key
]
=
urls
[
key
];
})
Object
.
keys
(
filters
).
forEach
(
key
=>
{
Vue
.
filter
(
key
,
filters
[
key
])
Vue
.
filter
(
key
,
filters
[
key
])
})
iconfontVersion
.
forEach
(
ele
=>
{
loadStyle
(
iconfontUrl
.
replace
(
'$key'
,
ele
));
loadStyle
(
iconfontUrl
.
replace
(
'$key'
,
ele
));
})
Vue
.
config
.
productionTip
=
false
;
new
Vue
({
router
,
store
,
render
:
h
=>
h
(
App
)
router
,
store
,
render
:
h
=>
h
(
App
)
}).
$mount
(
'#app'
)
src/page/lock/index.vue
View file @
05842014
...
...
@@ -22,84 +22,90 @@
</div>
</
template
>
<
script
>
import
{
mapGetters
,
mapState
}
from
"vuex"
;
export
default
{
name
:
"lock"
,
data
()
{
return
{
passwd
:
""
,
passwdError
:
false
,
pass
:
false
};
},
created
()
{
},
mounted
()
{
},
computed
:
{
...
mapState
({
userInfo
:
state
=>
state
.
user
.
userInfo
}),
...
mapGetters
([
"tag"
,
"lockPasswd"
])
},
props
:
[],
methods
:
{
handleLogout
()
{
this
.
$confirm
(
"是否退出系统, 是否继续?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}).
then
(()
=>
{
this
.
$store
.
dispatch
(
"LogOut"
).
then
(()
=>
{
this
.
$router
.
push
({
path
:
"/login"
});
});
});
import
{
mapGetters
,
mapState
}
from
"vuex"
;
export
default
{
name
:
"lock"
,
data
()
{
return
{
passwd
:
""
,
passwdError
:
false
,
pass
:
false
};
},
created
()
{
},
mounted
()
{
},
handleLogin
()
{
if
(
this
.
passwd
!=
this
.
lockPasswd
)
{
this
.
passwd
=
""
;
this
.
$message
({
message
:
"解锁密码错误,请重新输入"
,
type
:
"error"
computed
:
{
...
mapState
({
userInfo
:
state
=>
state
.
user
.
userInfo
}),
...
mapGetters
([
"tag"
,
"lockPasswd"
])
},
props
:
[],
methods
:
{
handleLogout
()
{
this
.
$confirm
(
"是否退出系统, 是否继续?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}).
then
(()
=>
{
this
.
$store
.
dispatch
(
"LogOut"
).
then
(()
=>
{
this
.
$router
.
push
({
path
:
"/login"
});
});
});
this
.
passwdError
=
true
;
},
handleLogin
()
{
if
(
this
.
passwd
!=
this
.
lockPasswd
)
{
this
.
passwd
=
""
;
this
.
$message
({
message
:
"解锁密码错误,请重新输入"
,
type
:
"error"
});
this
.
passwdError
=
true
;
setTimeout
(()
=>
{
this
.
passwdError
=
false
;
},
1000
);
return
;
}
this
.
pass
=
true
;
setTimeout
(()
=>
{
this
.
passwdError
=
false
;
this
.
$store
.
commit
(
"CLEAR_LOCK"
);
this
.
$router
.
push
({
path
:
this
.
$router
.
$avueRouter
.
getPath
({
src
:
this
.
tag
.
value
})});
},
1000
);
return
;
}
this
.
pass
=
true
;
setTimeout
(()
=>
{
this
.
$store
.
commit
(
"CLEAR_LOCK"
);
this
.
$router
.
push
({
path
:
this
.
$router
.
$avueRouter
.
getPath
({
src
:
this
.
tag
.
value
})
});
},
1000
);
}
},
components
:
{}
};
},
components
:
{}
};
</
script
>
<
style
lang=
"scss"
>
.lock-container
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
position
:
relative
;
.title
{
margin-bottom
:
8px
;
color
:
#333
;
.lock-container
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
position
:
relative
;
.title
{
margin-bottom
:
8px
;
color
:
#333
;
}
}
.
lock-container
:
:
before
{
z-index
:
-999
;
content
:
''
;
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
background-image
:
url('/img/login.png')
;
background-size
:
cover
;
}
.lock-form
{
width
:
300px
;
}
}
.
lock-container
:
:
before
{
z-index
:
-999
;
content
:
''
;
position
:
absolute
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
background-image
:
url('/img/login.png')
;
background-size
:
cover
;
}
.lock-form
{
width
:
300px
;
}
</
style
>
\ No newline at end of file
</
style
>
src/page/login/index.vue
View file @
05842014
...
...
@@ -20,11 +20,10 @@
class=
"login-select animated fadeIn"
v-model=
"active"
@
change=
"handleCommand"
placeholder=
"请选择租户,不选为默认"
size=
"mini"
>
<el-option
label=
"租户1"
value=
"1"
></el-option>
<el-option
label=
"租户2"
value=
"2"
></el-option>
placeholder=
"点击请选择租户"
size=
"mini"
>
<el-option
label=
"租户1 用户登录"
value=
"1"
></el-option>
<el-option
label=
"租户2 用户登录"
value=
"2"
></el-option>
</el-select>
</h4>
<userLogin
v-if=
"activeName==='user'"
></userLogin>
...
...
src/page/login/userlogin.vue
View file @
05842014
...
...
@@ -57,7 +57,6 @@
</el-row>
</el-form-item>
<el-checkbox
v-model=
"checked"
>
记住账号
</el-checkbox>
<el-form-item>
<el-button
type=
"primary"
size=
"small"
...
...
src/page/wel.vue
View file @
05842014
...
...
@@ -57,78 +57,80 @@
</
template
>
<
script
>
import
{
mapGetters
}
from
'vuex'
;
export
default
{
name
:
'wel'
,
data
()
{
return
{
activeNames
:
[
'1'
,
'2'
,
'3'
,
'4'
],
DATA
:
[],
text
:
''
,
actor
:
''
,
count
:
0
,
isText
:
false
import
{
mapGetters
}
from
'vuex'
;
export
default
{
name
:
'wel'
,
data
()
{
return
{
activeNames
:
[
'1'
,
'2'
,
'3'
,
'4'
],
DATA
:
[],
text
:
''
,
actor
:
''
,
count
:
0
,
isText
:
false
}
},
computed
:
{
...
mapGetters
([
'website'
])
},
methods
:
{
getData
()
{
if
(
this
.
count
<
this
.
DATA
.
length
-
1
)
{
this
.
count
++
}
else
{
this
.
count
=
0
}
this
.
isText
=
true
this
.
actor
=
this
.
DATA
[
this
.
count
]
},
setData
()
{
let
num
=
0
let
count
=
0
let
active
=
false
let
timeoutstart
=
5000
let
timeoutend
=
1000
let
timespeed
=
10
setInterval
(()
=>
{
if
(
this
.
isText
)
{
if
(
count
==
this
.
actor
.
length
)
{
active
=
true
}
else
{
active
=
false
}
},
computed
:
{
...
mapGetters
([
'website'
])
},
methods
:
{
getData
()
{
if
(
this
.
count
<
this
.
DATA
.
length
-
1
)
{
this
.
count
++
}
else
{
this
.
count
=
0
}
this
.
isText
=
true
this
.
actor
=
this
.
DATA
[
this
.
count
]
},
setData
()
{
let
num
=
0
let
count
=
0
let
active
=
false
let
timeoutstart
=
5000
let
timeoutend
=
1000
let
timespeed
=
10
setInterval
(()
=>
{
if
(
this
.
isText
)
{
if
(
count
==
this
.
actor
.
length
)
{
active
=
true
}
else
{
active
=
false
}
if
(
active
)
{
num
--
this
.
text
=
this
.
actor
.
substr
(
0
,
num
)
if
(
num
==
0
)
{
this
.
isText
=
false
setTimeout
(()
=>
{
count
=
0
this
.
getData
()
},
timeoutend
)
}
}
else
{
num
++
this
.
text
=
this
.
actor
.
substr
(
0
,
num
)
if
(
num
==
this
.
actor
.
length
)
{
this
.
isText
=
false
setTimeout
(()
=>
{
this
.
isText
=
true
count
=
this
.
actor
.
length
},
timeoutstart
)
}
}
}
},
timespeed
)
if
(
active
)
{
num
--
this
.
text
=
this
.
actor
.
substr
(
0
,
num
)
if
(
num
==
0
)
{
this
.
isText
=
false
setTimeout
(()
=>
{
count
=
0
this
.
getData
()
},
timeoutend
)
}
}
else
{
num
++
this
.
text
=
this
.
actor
.
substr
(
0
,
num
)
if
(
num
==
this
.
actor
.
length
)
{
this
.
isText
=
false
setTimeout
(()
=>
{
this
.
isText
=
true
count
=
this
.
actor
.
length
},
timeoutstart
)
}
}
}
}
},
timespeed
)
}
}
}
</
script
>
<
style
scoped=
"scoped"
lang=
"scss"
>
.wel-contailer
{
position
:
relative
;
}
.banner-text
{
position
:
relative
;
padding
:
0
20px
;
...
...
@@ -136,6 +138,7 @@
text-align
:
center
;
color
:
#333
;
}
.banner-img
{
position
:
absolute
;
top
:
0
;
...
...
@@ -145,6 +148,7 @@
opacity
:
0
.8
;
display
:
none
;
}
.actor
{
height
:
250px
;
overflow
:
hidden
;
...
...
src/permission.js
View file @
05842014
/**
* 全站权限配置
*
*
*/
import
router
from
'./router/router'
import
store
from
'./store'
import
{
validatenull
}
from
'@/util/validate'
import
{
getToken
}
from
'@/util/auth'
import
{
validatenull
}
from
'@/util/validate'
import
{
getToken
}
from
'@/util/auth'
import
NProgress
from
'nprogress'
// progress bar
import
'nprogress/nprogress.css'
// progress bar style
NProgress
.
configure
({
showSpinner
:
false
});
NProgress
.
configure
({
showSpinner
:
false
});
const
lockPage
=
store
.
getters
.
website
.
lockPage
;
//锁屏页
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
//缓冲设置
if
(
to
.
meta
.
keepAlive
===
true
&&
store
.
state
.
tags
.
tagList
.
some
(
ele
=>
{
return
ele
.
value
===
to
.
fullPath
;
}))
{
to
.
meta
.
$keepAlive
=
true
;
//缓冲设置
if
(
to
.
meta
.
keepAlive
===
true
&&
store
.
state
.
tags
.
tagList
.
some
(
ele
=>
{
return
ele
.
value
===
to
.
fullPath
;
}))
{
to
.
meta
.
$keepAlive
=
true
;
}
else
{
NProgress
.
start
()
if
(
to
.
meta
.
keepAlive
===
true
&&
validatenull
(
to
.
meta
.
$keepAlive
))
{
to
.
meta
.
$keepAlive
=
true
;
}
else
{
NProgress
.
start
()
if
(
to
.
meta
.
keepAlive
===
true
&&
validatenull
(
to
.
meta
.
$keepAlive
))
{
to
.
meta
.
$keepAlive
=
true
;
}
else
{
to
.
meta
.
$keepAlive
=
false
;
}
to
.
meta
.
$keepAlive
=
false
;
}
const
meta
=
to
.
meta
||
{};
if
(
getToken
())
{
if
(
store
.
getters
.
isLock
&&
to
.
path
!=
lockPage
)
{
next
({
path
:
lockPage
})
}
else
if
(
to
.
path
===
'/login'
)
{
next
({
path
:
'/'
})
}
else
{
if
(
store
.
getters
.
roles
.
length
===
0
)
{
store
.
dispatch
(
'GetUserInfo'
).
then
(()
=>
{
next
({...
to
,
replace
:
true
})
}).
catch
(()
=>
{
store
.
dispatch
(
'FedLogOut'
).
then
(()
=>
{
next
({
path
:
'/login'
})
})
})
}
else
{
const
value
=
to
.
query
.
src
||
to
.
fullPath
;
const
label
=
to
.
query
.
name
||
to
.
name
;
if
(
meta
.
isTab
!==
false
&&
!
validatenull
(
value
)
&&
!
validatenull
(
label
))
{
store
.
commit
(
'ADD_TAG'
,
{
label
:
label
,
value
:
value
,
params
:
to
.
params
,
query
:
to
.
query
,
group
:
router
.
$avueRouter
.
group
||
[]
});
}
next
()
}
}
}
const
meta
=
to
.
meta
||
{};
if
(
getToken
())
{
if
(
store
.
getters
.
isLock
&&
to
.
path
!=
lockPage
)
{
next
({
path
:
lockPage
})
}
else
if
(
to
.
path
===
'/login'
)
{
next
({
path
:
'/'
})
}
else
{
if
(
meta
.
isAuth
===
false
)
{
next
()
}
else
{
next
(
'/login'
)
if
(
store
.
getters
.
roles
.
length
===
0
)
{
store
.
dispatch
(
'GetUserInfo'
).
then
(()
=>
{
next
({...
to
,
replace
:
true
})
}).
catch
(()
=>
{
store
.
dispatch
(
'FedLogOut'
).
then
(()
=>
{
next
({
path
:
'/login'
})
})
})
}
else
{
const
value
=
to
.
query
.
src
||
to
.
fullPath
;
const
label
=
to
.
query
.
name
||
to
.
name
;
if
(
meta
.
isTab
!==
false
&&
!
validatenull
(
value
)
&&
!
validatenull
(
label
))
{
store
.
commit
(
'ADD_TAG'
,
{
label
:
label
,
value
:
value
,
params
:
to
.
params
,
query
:
to
.
query
,
group
:
router
.
$avueRouter
.
group
||
[]
});
}
next
()
}
}
}
else
{
if
(
meta
.
isAuth
===
false
)
{
next
()
}
else
{
next
(
'/login'
)
}
}
})
router
.
afterEach
(()
=>
{
NProgress
.
done
();
const
title
=
store
.
getters
.
tag
.
label
;
router
.
$avueRouter
.
setTitle
(
title
);
});
\ No newline at end of file
NProgress
.
done
();
const
title
=
store
.
getters
.
tag
.
label
;
router
.
$avueRouter
.
setTitle
(
title
);
});
src/store/getters.js
View file @
05842014
const
getters
=
{
tag
:
state
=>
state
.
tags
.
tag
,
website
:
state
=>
state
.
common
.
website
,
userInfo
:
state
=>
state
.
user
.
userInfo
,
theme
:
state
=>
state
.
common
.
theme
,
themeName
:
state
=>
state
.
common
.
themeName
,
isShade
:
state
=>
state
.
common
.
isShade
,
isCollapse
:
state
=>
state
.
common
.
isCollapse
,
keyCollapse
:
(
state
,
getters
)
=>
getters
.
screen
>
1
?
getters
.
isCollapse
:
false
,
screen
:
state
=>
state
.
common
.
screen
,
isLock
:
state
=>
state
.
common
.
isLock
,
isFullScren
:
state
=>
state
.
common
.
isFullScren
,
lockPasswd
:
state
=>
state
.
common
.
lockPasswd
,
tagList
:
state
=>
state
.
tags
.
tagList
,
tagWel
:
state
=>
state
.
tags
.
tagWel
,
access_token
:
state
=>
state
.
user
.
access_token
,
refresh_token
:
state
=>
state
.
user
.
refresh_token
,
roles
:
state
=>
state
.
user
.
roles
,
permissions
:
state
=>
state
.
user
.
permissions
,
menu
:
state
=>
state
.
user
.
menu
,
menuAll
:
state
=>
state
.
user
.
menuAll
,
logsList
:
state
=>
state
.
logs
.
logsList
,
logsLen
:
state
=>
state
.
logs
.
logsList
.
length
||
0
,
logsFlag
:
(
state
,
getters
)
=>
getters
.
logsLen
===
0
tag
:
state
=>
state
.
tags
.
tag
,
website
:
state
=>
state
.
common
.
website
,
userInfo
:
state
=>
state
.
user
.
userInfo
,
theme
:
state
=>
state
.
common
.
theme
,
themeName
:
state
=>
state
.
common
.
themeName
,
isShade
:
state
=>
state
.
common
.
isShade
,
isCollapse
:
state
=>
state
.
common
.
isCollapse
,
keyCollapse
:
(
state
,
getters
)
=>
getters
.
screen
>
1
?
getters
.
isCollapse
:
false
,
screen
:
state
=>
state
.
common
.
screen
,
isLock
:
state
=>
state
.
common
.
isLock
,
isFullScren
:
state
=>
state
.
common
.
isFullScren
,
lockPasswd
:
state
=>
state
.
common
.
lockPasswd
,
tagList
:
state
=>
state
.
tags
.
tagList
,
tagWel
:
state
=>
state
.
tags
.
tagWel
,
access_token
:
state
=>
state
.
user
.
access_token
,
refresh_token
:
state
=>
state
.
user
.
refresh_token
,
roles
:
state
=>
state
.
user
.
roles
,
permissions
:
state
=>
state
.
user
.
permissions
,
menu
:
state
=>
state
.
user
.
menu
,
menuAll
:
state
=>
state
.
user
.
menuAll
,
logsList
:
state
=>
state
.
logs
.
logsList
,
logsLen
:
state
=>
state
.
logs
.
logsList
.
length
||
0
,
logsFlag
:
(
state
,
getters
)
=>
getters
.
logsLen
===
0
}
export
default
getters
\ No newline at end of file
export
default
getters
src/store/index.js
View file @
05842014
...
...
@@ -8,13 +8,13 @@ import getters from './getters'
Vue
.
use
(
Vuex
)
const
store
=
new
Vuex
.
Store
({
modules
:
{
user
,
common
,
logs
,
tags
},
getters
,
modules
:
{
user
,
common
,
logs
,
tags
},
getters
,
})
export
default
store
\ No newline at end of file
export
default
store
src/store/modules/common.js
View file @
05842014
import
{
setStore
,
getStore
,
removeStore
}
from
'@/util/store'
import
{
getStore
,
removeStore
,
setStore
}
from
'@/util/store'
import
website
from
'@/const/website'
const
common
=
{
state
:
{
isCollapse
:
false
,
isFullScren
:
false
,
isShade
:
false
,
screen
:
-
1
,
isLock
:
getStore
({
name
:
'isLock'
})
||
false
,
showTag
:
getStore
({
name
:
'showTag'
}),
showDebug
:
getStore
({
name
:
'showDebug'
}),
showCollapse
:
getStore
({
name
:
'showCollapse'
}),
showSearch
:
getStore
({
name
:
'showSearch'
}),
showLock
:
getStore
({
name
:
'showLock'
}),
showFullScren
:
getStore
({
name
:
'showFullScren'
}),
showTheme
:
getStore
({
name
:
'showTheme'
}),
showColor
:
getStore
({
name
:
'showColor'
}),
showMenu
:
getStore
({
name
:
'showMenu'
}),
theme
:
getStore
({
name
:
'theme'
})
||
'#409EFF'
,
themeName
:
getStore
({
name
:
'themeName'
})
||
''
,
lockPasswd
:
getStore
({
name
:
'lockPasswd'
})
||
''
,
website
:
website
,
},
actions
:
{
const
common
=
{
state
:
{
isCollapse
:
false
,
isFullScren
:
false
,
isShade
:
false
,
screen
:
-
1
,
isLock
:
getStore
({
name
:
'isLock'
})
||
false
,
showTag
:
getStore
({
name
:
'showTag'
}),
showDebug
:
getStore
({
name
:
'showDebug'
}),
showCollapse
:
getStore
({
name
:
'showCollapse'
}),
showSearch
:
getStore
({
name
:
'showSearch'
}),
showLock
:
getStore
({
name
:
'showLock'
}),
showFullScren
:
getStore
({
name
:
'showFullScren'
}),
showTheme
:
getStore
({
name
:
'showTheme'
}),
showColor
:
getStore
({
name
:
'showColor'
}),
showMenu
:
getStore
({
name
:
'showMenu'
}),
theme
:
getStore
({
name
:
'theme'
})
||
'#409EFF'
,
themeName
:
getStore
({
name
:
'themeName'
})
||
''
,
lockPasswd
:
getStore
({
name
:
'lockPasswd'
})
||
''
,
website
:
website
,
},
actions
:
{},
mutations
:
{
SET_SHADE
:
(
state
,
active
)
=>
{
state
.
isShade
=
active
;
},
SET_COLLAPSE
:
(
state
)
=>
{
state
.
isCollapse
=
!
state
.
isCollapse
;
},
SET_FULLSCREN
:
(
state
)
=>
{
state
.
isFullScren
=
!
state
.
isFullScren
;
},
SET_SHOWCOLLAPSE
:
(
state
,
active
)
=>
{
state
.
showCollapse
=
active
;
setStore
({
name
:
'showCollapse'
,
content
:
state
.
showCollapse
})
},
SET_SHOWTAG
:
(
state
,
active
)
=>
{
state
.
showTag
=
active
;
setStore
({
name
:
'showTag'
,
content
:
state
.
showTag
})
},
SET_SHOWMENU
:
(
state
,
active
)
=>
{
state
.
showMenu
=
active
;
setStore
({
name
:
'showMenu'
,
content
:
state
.
showMenu
})
},
SET_SHOWLOCK
:
(
state
,
active
)
=>
{
state
.
showLock
=
active
;
setStore
({
name
:
'showLock'
,
content
:
state
.
showLock
})
},
SET_SHOWSEARCH
:
(
state
,
active
)
=>
{
state
.
showSearch
=
active
;
setStore
({
name
:
'showSearch'
,
content
:
state
.
showSearch
})
},
SET_SHOWFULLSCREN
:
(
state
,
active
)
=>
{
state
.
showFullScren
=
active
;
setStore
({
name
:
'showFullScren'
,
content
:
state
.
showFullScren
})
},
SET_SHOWDEBUG
:
(
state
,
active
)
=>
{
state
.
showDebug
=
active
;
setStore
({
name
:
'showDebug'
,
content
:
state
.
showDebug
})
},
SET_SHOWTHEME
:
(
state
,
active
)
=>
{
state
.
showTheme
=
active
;
setStore
({
name
:
'showTheme'
,
content
:
state
.
showTheme
})
},
SET_SHOWCOLOR
:
(
state
,
active
)
=>
{
state
.
showColor
=
active
;
setStore
({
name
:
'showColor'
,
content
:
state
.
showColor
})
},
SET_LOCK
:
(
state
)
=>
{
state
.
isLock
=
true
;
setStore
({
name
:
'isLock'
,
content
:
state
.
isLock
,
type
:
'session'
})
},
SET_SCREEN
:
(
state
,
screen
)
=>
{
state
.
screen
=
screen
;
},
SET_THEME
:
(
state
,
color
)
=>
{
state
.
theme
=
color
;
setStore
({
name
:
'theme'
,
content
:
state
.
theme
,
})
},
SET_THEME_NAME
:
(
state
,
themeName
)
=>
{
state
.
themeName
=
themeName
;
setStore
({
name
:
'themeName'
,
content
:
state
.
themeName
,
})
},
SET_LOCK_PASSWD
:
(
state
,
lockPasswd
)
=>
{
state
.
lockPasswd
=
lockPasswd
;
setStore
({
name
:
'lockPasswd'
,
content
:
state
.
lockPasswd
,
type
:
'session'
})
},
CLEAR_LOCK
:
(
state
)
=>
{
state
.
isLock
=
false
;
state
.
lockPasswd
=
''
;
removeStore
({
name
:
'lockPasswd'
});
removeStore
({
name
:
'isLock'
});
},
mutations
:
{
SET_SHADE
:
(
state
,
active
)
=>
{
state
.
isShade
=
active
;
},
SET_COLLAPSE
:
(
state
)
=>
{
state
.
isCollapse
=
!
state
.
isCollapse
;
},
SET_FULLSCREN
:
(
state
)
=>
{
state
.
isFullScren
=
!
state
.
isFullScren
;
},
SET_SHOWCOLLAPSE
:
(
state
,
active
)
=>
{
state
.
showCollapse
=
active
;
setStore
({
name
:
'showCollapse'
,
content
:
state
.
showCollapse
})
},
SET_SHOWTAG
:
(
state
,
active
)
=>
{
state
.
showTag
=
active
;
setStore
({
name
:
'showTag'
,
content
:
state
.
showTag
})
},
SET_SHOWMENU
:
(
state
,
active
)
=>
{
state
.
showMenu
=
active
;
setStore
({
name
:
'showMenu'
,
content
:
state
.
showMenu
})
},
SET_SHOWLOCK
:
(
state
,
active
)
=>
{
state
.
showLock
=
active
;
setStore
({
name
:
'showLock'
,
content
:
state
.
showLock
})
},
SET_SHOWSEARCH
:
(
state
,
active
)
=>
{
state
.
showSearch
=
active
;
setStore
({
name
:
'showSearch'
,
content
:
state
.
showSearch
})
},
SET_SHOWFULLSCREN
:
(
state
,
active
)
=>
{
state
.
showFullScren
=
active
;
setStore
({
name
:
'showFullScren'
,
content
:
state
.
showFullScren
})
},
SET_SHOWDEBUG
:
(
state
,
active
)
=>
{
state
.
showDebug
=
active
;
setStore
({
name
:
'showDebug'
,
content
:
state
.
showDebug
})
},
SET_SHOWTHEME
:
(
state
,
active
)
=>
{
state
.
showTheme
=
active
;
setStore
({
name
:
'showTheme'
,
content
:
state
.
showTheme
})
},
SET_SHOWCOLOR
:
(
state
,
active
)
=>
{
state
.
showColor
=
active
;
setStore
({
name
:
'showColor'
,
content
:
state
.
showColor
})
},
SET_LOCK
:
(
state
)
=>
{
state
.
isLock
=
true
;
setStore
({
name
:
'isLock'
,
content
:
state
.
isLock
,
type
:
'session'
})
},
SET_SCREEN
:
(
state
,
screen
)
=>
{
state
.
screen
=
screen
;
},
SET_THEME
:
(
state
,
color
)
=>
{
state
.
theme
=
color
;
setStore
({
name
:
'theme'
,
content
:
state
.
theme
,
})
},
SET_THEME_NAME
:
(
state
,
themeName
)
=>
{
state
.
themeName
=
themeName
;
setStore
({
name
:
'themeName'
,
content
:
state
.
themeName
,
})
},
SET_LOCK_PASSWD
:
(
state
,
lockPasswd
)
=>
{
state
.
lockPasswd
=
lockPasswd
;
setStore
({
name
:
'lockPasswd'
,
content
:
state
.
lockPasswd
,
type
:
'session'
})
},
CLEAR_LOCK
:
(
state
)
=>
{
state
.
isLock
=
false
;
state
.
lockPasswd
=
''
;
removeStore
({
name
:
'lockPasswd'
});
removeStore
({
name
:
'isLock'
});
},
}
}
}
export
default
common
\ No newline at end of file
export
default
common
src/store/modules/logs.js
View file @
05842014
import
{
setStore
,
getStore
}
from
'@/util/store'
import
{
dateFormat
}
from
'@/filters/'
import
{
sendLogs
}
from
'@/api/admin/log'
import
{
getStore
,
setStore
}
from
'@/util/store'
import
{
dateFormat
}
from
'@/filters/'
import
{
sendLogs
}
from
'@/api/admin/log'
const
logs
=
{
state
:
{
logsList
:
getStore
({
name
:
'logsList'
})
||
[],
state
:
{
logsList
:
getStore
({
name
:
'logsList'
})
||
[],
},
actions
:
{
//发送错误日志
SendLogs
({
state
,
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
sendLogs
(
state
.
logsList
).
then
(()
=>
{
commit
(
'CLEAR_LOGS'
);
resolve
();
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
actions
:
{
//发送错误日志
SendLogs
({
state
,
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
sendLogs
(
state
.
logsList
).
then
(()
=>
{
commit
(
'CLEAR_LOGS'
);
resolve
();
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
},
mutations
:
{
ADD_LOGS
:
(
state
,
{
type
,
message
,
stack
,
info
})
=>
{
state
.
logsList
.
push
(
Object
.
assign
({
url
:
window
.
location
.
href
,
time
:
dateFormat
(
new
Date
())
},
{
type
,
message
,
stack
,
info
:
info
.
toString
()
}))
setStore
({
name
:
'logsList'
,
content
:
state
.
logsList
})
},
mutations
:
{
ADD_LOGS
:
(
state
,
{
type
,
message
,
stack
,
info
})
=>
{
state
.
logsList
.
push
(
Object
.
assign
({
url
:
window
.
location
.
href
,
time
:
dateFormat
(
new
Date
())
},
{
type
,
message
,
stack
,
info
:
info
.
toString
()
}))
setStore
({
name
:
'logsList'
,
content
:
state
.
logsList
})
},
CLEAR_LOGS
:
(
state
)
=>
{
state
.
logsList
=
[];
setStore
({
name
:
'logsList'
,
content
:
state
.
logsList
})
}
CLEAR_LOGS
:
(
state
)
=>
{
state
.
logsList
=
[];
setStore
({
name
:
'logsList'
,
content
:
state
.
logsList
})
}
}
};
...
...
src/store/modules/tags.js
View file @
05842014
import
{
setStore
,
getStore
}
from
'@/util/store'
import
{
diff
}
from
'@/util/util'
import
{
getStore
,
setStore
}
from
'@/util/store'
import
{
diff
}
from
'@/util/util'
import
website
from
'@/const/website'
const
isFirstPage
=
website
.
isFirstPage
;
const
tagWel
=
website
.
fistPage
;
const
tagObj
=
{
label
:
''
,
//标题名称
value
:
''
,
//标题的路径
params
:
''
,
//标题的路径参数
query
:
''
,
//标题的参数
group
:
[],
//分组
}
//处理首个标签
label
:
''
,
//标题名称
value
:
''
,
//标题的路径
params
:
''
,
//标题的路径参数
query
:
''
,
//标题的参数
group
:
[],
//分组
}
//处理首个标签
function
setFistTag
(
list
)
{
if
(
list
.
length
==
1
)
{
list
[
0
].
close
=
false
;
}
else
{
list
.
forEach
(
ele
=>
{
if
(
ele
.
value
===
tagWel
.
value
&&
isFirstPage
===
false
)
{
ele
.
close
=
false
}
else
{
ele
.
close
=
true
}
})
}
if
(
list
.
length
==
1
)
{
list
[
0
].
close
=
false
;
}
else
{
list
.
forEach
(
ele
=>
{
if
(
ele
.
value
===
tagWel
.
value
&&
isFirstPage
===
false
)
{
ele
.
close
=
false
}
else
{
ele
.
close
=
true
}
})
}
}
const
navs
=
{
state
:
{
tagList
:
getStore
({
name
:
'tagList'
})
||
[],
tag
:
getStore
({
name
:
'tag'
})
||
tagObj
,
tagWel
:
tagWel
state
:
{
tagList
:
getStore
({
name
:
'tagList'
})
||
[],
tag
:
getStore
({
name
:
'tag'
})
||
tagObj
,
tagWel
:
tagWel
},
actions
:
{},
mutations
:
{
ADD_TAG
:
(
state
,
action
)
=>
{
state
.
tag
=
action
;
setStore
({
name
:
'tag'
,
content
:
state
.
tag
,
type
:
'session'
})
if
(
state
.
tagList
.
some
(
ele
=>
diff
(
ele
,
action
)))
return
state
.
tagList
.
push
(
action
)
setFistTag
(
state
.
tagList
);
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
actions
:
{
DEL_TAG
:
(
state
,
action
)
=>
{
state
.
tagList
=
state
.
tagList
.
filter
(
item
=>
{
return
!
diff
(
item
,
action
);
})
setFistTag
(
state
.
tagList
);
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
DEL_ALL_TAG
:
(
state
)
=>
{
state
.
tagList
=
[
state
.
tagWel
];
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
DEL_TAG_OTHER
:
(
state
)
=>
{
state
.
tagList
=
state
.
tagList
.
filter
(
item
=>
item
.
value
===
state
.
tag
.
value
)
setFistTag
(
state
.
tagList
);
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
mutations
:
{
ADD_TAG
:
(
state
,
action
)
=>
{
state
.
tag
=
action
;
setStore
({
name
:
'tag'
,
content
:
state
.
tag
,
type
:
'session'
})
if
(
state
.
tagList
.
some
(
ele
=>
diff
(
ele
,
action
)))
return
state
.
tagList
.
push
(
action
)
setFistTag
(
state
.
tagList
);
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
DEL_TAG
:
(
state
,
action
)
=>
{
state
.
tagList
=
state
.
tagList
.
filter
(
item
=>
{
return
!
diff
(
item
,
action
);
})
setFistTag
(
state
.
tagList
);
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
DEL_ALL_TAG
:
(
state
)
=>
{
state
.
tagList
=
[
state
.
tagWel
];
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
DEL_TAG_OTHER
:
(
state
)
=>
{
state
.
tagList
=
state
.
tagList
.
filter
(
item
=>
item
.
value
===
state
.
tag
.
value
)
setFistTag
(
state
.
tagList
);
setStore
({
name
:
'tagList'
,
content
:
state
.
tagList
,
type
:
'session'
})
},
}
}
}
export
default
navs
\ No newline at end of file
export
default
navs
src/store/modules/user.js
View file @
05842014
import
{
setToken
,
removeToken
}
from
'@/util/auth'
import
{
setStore
,
getStore
}
from
'@/util/store'
import
{
isURL
}
from
'@/util/validate'
import
{
logout
,
loginByUsername
,
loginByMobile
,
loginBySocial
,
getUserInfo
}
from
'@/api/login'
import
{
encryption
,
deepClone
}
from
'@/util/util'
import
{
removeToken
,
setToken
}
from
'@/util/auth'
import
{
getStore
,
setStore
}
from
'@/util/store'
import
{
isURL
}
from
'@/util/validate'
import
{
getUserInfo
,
loginByMobile
,
loginBySocial
,
loginByUsername
,
logout
}
from
'@/api/login'
import
{
deepClone
,
encryption
}
from
'@/util/util'
import
webiste
from
'@/const/website'
;
import
{
GetMenu
}
from
'@/api/admin/menu'
import
{
GetMenu
}
from
'@/api/admin/menu'
function
addPath
(
ele
,
first
)
{
const
propsConfig
=
webiste
.
menu
.
props
;
const
propsDefault
=
{
label
:
propsConfig
.
label
||
'label'
,
path
:
propsConfig
.
path
||
'path'
,
icon
:
propsConfig
.
icon
||
'icon'
,
children
:
propsConfig
.
children
||
'children'
const
propsConfig
=
webiste
.
menu
.
props
;
const
propsDefault
=
{
label
:
propsConfig
.
label
||
'label'
,
path
:
propsConfig
.
path
||
'path'
,
icon
:
propsConfig
.
icon
||
'icon'
,
children
:
propsConfig
.
children
||
'children'
}
const
isChild
=
ele
[
propsDefault
.
children
]
&&
ele
[
propsDefault
.
children
].
length
!==
0
;
if
(
!
isChild
&&
first
)
{
ele
[
propsDefault
.
path
]
=
ele
[
propsDefault
.
path
]
+
'/index'
return
}
ele
[
propsDefault
.
children
].
forEach
(
child
=>
{
if
(
!
isURL
(
child
[
propsDefault
.
path
]))
{
child
[
propsDefault
.
path
]
=
`
${
ele
[
propsDefault
.
path
]}
/
${
child
[
propsDefault
.
path
]
?
child
[
propsDefault
.
path
]
:
'index'
}
`
}
const
isChild
=
ele
[
propsDefault
.
children
]
&&
ele
[
propsDefault
.
children
].
length
!==
0
;
if
(
!
isChild
&&
first
)
{
ele
[
propsDefault
.
path
]
=
ele
[
propsDefault
.
path
]
+
'/index'
return
}
ele
[
propsDefault
.
children
].
forEach
(
child
=>
{
if
(
!
isURL
(
child
[
propsDefault
.
path
]))
{
child
[
propsDefault
.
path
]
=
`
${
ele
[
propsDefault
.
path
]}
/
${
child
[
propsDefault
.
path
]?
child
[
propsDefault
.
path
]:
'index'
}
`
}
addPath
(
child
);
})
addPath
(
child
);
})
}
const
user
=
{
state
:
{
userInfo
:
{},
permissions
:
{},
roles
:
[],
menu
:
getStore
({
name
:
'menu'
})
||
[],
menuAll
:
[],
access_token
:
getStore
({
name
:
'access_token'
})
||
''
,
refresh_token
:
getStore
({
name
:
'refresh_token'
})
||
''
state
:
{
userInfo
:
{},
permissions
:
{},
roles
:
[],
menu
:
getStore
({
name
:
'menu'
})
||
[],
menuAll
:
[],
access_token
:
getStore
({
name
:
'access_token'
})
||
''
,
refresh_token
:
getStore
({
name
:
'refresh_token'
})
||
''
},
actions
:
{
//根据用户名登录
LoginByUsername
({
commit
},
userInfo
)
{
const
user
=
encryption
({
data
:
userInfo
,
key
:
'pigxpigxpigxpigx'
,
param
:
[
'password'
]
})
return
new
Promise
((
resolve
,
reject
)
=>
{
loginByUsername
(
user
.
username
,
user
.
password
,
user
.
code
,
user
.
randomStr
).
then
(
response
=>
{
const
data
=
response
.
data
setToken
(
data
.
access_token
)
commit
(
'SET_ACCESS_TOKEN'
,
data
.
access_token
)
commit
(
'SET_REFRESH_TOKEN'
,
data
.
refresh_token
)
commit
(
'CLEAR_LOCK'
)
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
//根据手机号登录
LoginByPhone
({
commit
},
userInfo
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
loginByMobile
(
userInfo
.
mobile
,
userInfo
.
code
).
then
(
response
=>
{
const
data
=
response
.
data
setToken
(
data
.
access_token
)
commit
(
'SET_ACCESS_TOKEN'
,
data
.
access_token
)
commit
(
'SET_REFRESH_TOKEN'
,
data
.
refresh_token
)
commit
(
'CLEAR_LOCK'
)
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
// 根据OpenId登录
LoginBySocial
({
commit
},
param
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
loginBySocial
(
param
.
state
,
param
.
code
).
then
(
response
=>
{
const
data
=
response
.
data
setToken
(
data
.
access_token
)
commit
(
'SET_ACCESS_TOKEN'
,
data
.
access_token
)
commit
(
'SET_REFRESH_TOKEN'
,
data
.
refresh_token
)
commit
(
'CLEAR_LOCK'
)
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
GetUserInfo
({
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
getUserInfo
().
then
((
res
)
=>
{
const
data
=
res
.
data
.
data
||
{};
commit
(
'SET_USERIFNO'
,
data
.
sysUser
);
commit
(
'SET_ROLES'
,
data
.
roles
||
[]);
commit
(
'SET_PERMISSIONS'
,
data
.
permissions
||
[])
resolve
(
data
);
}).
catch
((
err
)
=>
{
reject
();
})
})
},
//刷新token
RefeshToken
({
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
logout
().
then
(()
=>
{
commit
(
'SET_TOKEN'
,
new
Date
().
getTime
());
setToken
();
resolve
();
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
// 登出
LogOut
({
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
logout
().
then
(()
=>
{
commit
(
'SET_MENU'
,
[])
commit
(
'SET_PERMISSIONS'
,
[])
commit
(
'SET_USER_INFO'
,
{})
commit
(
'SET_ACCESS_TOKEN'
,
''
)
commit
(
'SET_REFRESH_TOKEN'
,
''
)
commit
(
'SET_ROLES'
,
[])
commit
(
'DEL_ALL_TAG'
)
commit
(
'CLEAR_LOCK'
);
removeToken
()
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
actions
:
{
//根据用户名登录
LoginByUsername
({
commit
},
userInfo
)
{
const
user
=
encryption
({
data
:
userInfo
,
key
:
'pigxpigxpigxpigx'
,
param
:
[
'password'
]
})
return
new
Promise
((
resolve
,
reject
)
=>
{
loginByUsername
(
user
.
username
,
user
.
password
,
user
.
code
,
user
.
randomStr
).
then
(
response
=>
{
const
data
=
response
.
data
setToken
(
data
.
access_token
)
commit
(
'SET_ACCESS_TOKEN'
,
data
.
access_token
)
commit
(
'SET_REFRESH_TOKEN'
,
data
.
refresh_token
)
commit
(
'CLEAR_LOCK'
)
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
//根据手机号登录
LoginByPhone
({
commit
},
userInfo
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
loginByMobile
(
userInfo
.
mobile
,
userInfo
.
code
).
then
(
response
=>
{
const
data
=
response
.
data
setToken
(
data
.
access_token
)
commit
(
'SET_ACCESS_TOKEN'
,
data
.
access_token
)
commit
(
'SET_REFRESH_TOKEN'
,
data
.
refresh_token
)
commit
(
'CLEAR_LOCK'
)
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
// 根据OpenId登录
LoginBySocial
({
commit
},
param
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
loginBySocial
(
param
.
state
,
param
.
code
).
then
(
response
=>
{
const
data
=
response
.
data
setToken
(
data
.
access_token
)
commit
(
'SET_ACCESS_TOKEN'
,
data
.
access_token
)
commit
(
'SET_REFRESH_TOKEN'
,
data
.
refresh_token
)
commit
(
'CLEAR_LOCK'
)
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
GetUserInfo
({
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
getUserInfo
().
then
((
res
)
=>
{
const
data
=
res
.
data
.
data
||
{};
commit
(
'SET_USERIFNO'
,
data
.
sysUser
);
commit
(
'SET_ROLES'
,
data
.
roles
||
[]);
commit
(
'SET_PERMISSIONS'
,
data
.
permissions
||
[])
resolve
(
data
);
}).
catch
((
err
)
=>
{
reject
();
})
})
},
//刷新token
RefeshToken
({
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
logout
().
then
(()
=>
{
commit
(
'SET_TOKEN'
,
new
Date
().
getTime
());
setToken
();
resolve
();
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
// 登出
LogOut
({
commit
})
{
return
new
Promise
((
resolve
,
reject
)
=>
{
logout
().
then
(()
=>
{
commit
(
'SET_MENU'
,
[])
commit
(
'SET_PERMISSIONS'
,
[])
commit
(
'SET_USER_INFO'
,
{})
commit
(
'SET_ACCESS_TOKEN'
,
''
)
commit
(
'SET_REFRESH_TOKEN'
,
''
)
commit
(
'SET_ROLES'
,
[])
commit
(
'DEL_ALL_TAG'
)
commit
(
'CLEAR_LOCK'
);
removeToken
()
resolve
()
}).
catch
(
error
=>
{
reject
(
error
)
})
})
},
//注销session
FedLogOut
({
commit
})
{
return
new
Promise
(
resolve
=>
{
commit
(
'SET_MENU'
,
[])
commit
(
'SET_PERMISSIONS'
,
[])
commit
(
'SET_USER_INFO'
,
{})
commit
(
'SET_ACCESS_TOKEN'
,
''
)
commit
(
'SET_REFRESH_TOKEN'
,
''
)
commit
(
'SET_ROLES'
,
[])
commit
(
'DEL_ALL_TAG'
)
commit
(
'CLEAR_LOCK'
);
removeToken
()
resolve
()
})
},
//获取系统菜单
GetMenu
({
commit
})
{
return
new
Promise
(
resolve
=>
{
GetMenu
().
then
((
res
)
=>
{
const
data
=
res
.
data
.
data
let
menu
=
deepClone
(
data
);
menu
.
forEach
(
ele
=>
{
addPath
(
ele
);
})
commit
(
'SET_MENU'
,
menu
)
resolve
(
menu
)
})
})
}
//注销session
FedLogOut
({
commit
})
{
return
new
Promise
(
resolve
=>
{
commit
(
'SET_MENU'
,
[])
commit
(
'SET_PERMISSIONS'
,
[])
commit
(
'SET_USER_INFO'
,
{})
commit
(
'SET_ACCESS_TOKEN'
,
''
)
commit
(
'SET_REFRESH_TOKEN'
,
''
)
commit
(
'SET_ROLES'
,
[])
commit
(
'DEL_ALL_TAG'
)
commit
(
'CLEAR_LOCK'
);
removeToken
()
resolve
()
})
},
//获取系统菜单
GetMenu
({
commit
})
{
return
new
Promise
(
resolve
=>
{
GetMenu
().
then
((
res
)
=>
{
const
data
=
res
.
data
.
data
let
menu
=
deepClone
(
data
);
menu
.
forEach
(
ele
=>
{
addPath
(
ele
);
})
commit
(
'SET_MENU'
,
menu
)
resolve
(
menu
)
})
})
}
},
mutations
:
{
SET_ACCESS_TOKEN
:
(
state
,
access_token
)
=>
{
state
.
access_token
=
access_token
setStore
({
name
:
'access_token'
,
content
:
state
.
access_token
,
type
:
'session'
})
},
SET_REFRESH_TOKEN
:
(
state
,
rfToken
)
=>
{
state
.
refresh_token
=
rfToken
setStore
({
name
:
'refresh_token'
,
content
:
state
.
refresh_token
,
type
:
'session'
})
},
SET_USERIFNO
:
(
state
,
userInfo
)
=>
{
state
.
userInfo
=
userInfo
;
},
mutations
:
{
SET_ACCESS_TOKEN
:
(
state
,
access_token
)
=>
{
state
.
access_token
=
access_token
setStore
({
name
:
'access_token'
,
content
:
state
.
access_token
,
type
:
'session'
})
},
SET_REFRESH_TOKEN
:
(
state
,
rfToken
)
=>
{
state
.
refresh_token
=
rfToken
setStore
({
name
:
'refresh_token'
,
content
:
state
.
refresh_token
,
type
:
'session'
})
},
SET_USERIFNO
:
(
state
,
userInfo
)
=>
{
state
.
userInfo
=
userInfo
;
},
SET_MENU
:
(
state
,
menu
)
=>
{
state
.
menu
=
menu
setStore
({
name
:
'menu'
,
content
:
state
.
menu
,
type
:
'session'
})
SET_MENU
:
(
state
,
menu
)
=>
{
state
.
menu
=
menu
setStore
({
name
:
'menu'
,
content
:
state
.
menu
,
type
:
'session'
})
},
SET_MENU_ALL
:
(
state
,
menuAll
)
=>
{
state
.
menuAll
=
menuAll
;
},
SET_ROLES
:
(
state
,
roles
)
=>
{
state
.
roles
=
roles
;
},
SET_PERMISSIONS
:
(
state
,
permissions
)
=>
{
const
list
=
{}
for
(
let
i
=
0
;
i
<
permissions
.
length
;
i
++
)
{
list
[
permissions
[
i
]]
=
true
}
state
.
permissions
=
list
}
},
SET_MENU_ALL
:
(
state
,
menuAll
)
=>
{
state
.
menuAll
=
menuAll
;
},
SET_ROLES
:
(
state
,
roles
)
=>
{
state
.
roles
=
roles
;
},
SET_PERMISSIONS
:
(
state
,
permissions
)
=>
{
const
list
=
{}
for
(
let
i
=
0
;
i
<
permissions
.
length
;
i
++
)
{
list
[
permissions
[
i
]]
=
true
}
state
.
permissions
=
list
}
}
}
export
default
user
src/util/admin.js
View file @
05842014
export
default
{
getScreen
:
function
()
{
var
width
=
document
.
body
.
clientWidth
;
if
(
width
>=
1200
)
{
return
3
;
//大屏幕
}
else
if
(
width
>=
992
)
{
return
2
;
//中屏幕
}
else
if
(
width
>=
768
)
{
return
1
;
//小屏幕
}
else
{
return
0
;
//超小屏幕
}
getScreen
:
function
()
{
var
width
=
document
.
body
.
clientWidth
;
if
(
width
>=
1200
)
{
return
3
;
//大屏幕
}
else
if
(
width
>=
992
)
{
return
2
;
//中屏幕
}
else
if
(
width
>=
768
)
{
return
1
;
//小屏幕
}
else
{
return
0
;
//超小屏幕
}
}
\ No newline at end of file
}
}
src/util/auth.js
View file @
05842014
import
Cookies
from
'js-cookie'
const
TokenKey
=
'x-access-token'
export
function
getToken
()
{
return
Cookies
.
get
(
TokenKey
)
return
Cookies
.
get
(
TokenKey
)
}
export
function
setToken
(
token
)
{
return
Cookies
.
set
(
TokenKey
,
token
)
return
Cookies
.
set
(
TokenKey
,
token
)
}
export
function
removeToken
()
{
return
Cookies
.
remove
(
TokenKey
)
}
\ No newline at end of file
return
Cookies
.
remove
(
TokenKey
)
}
src/util/date.js
View file @
05842014
export
const
calcDate
=
(
date1
,
date2
)
=>
{
var
date3
=
date2
-
date1
;
var
date3
=
date2
-
date1
;
var
days
=
Math
.
floor
(
date3
/
(
24
*
3600
*
1000
))
var
days
=
Math
.
floor
(
date3
/
(
24
*
3600
*
1000
))
var
leave1
=
date3
%
(
24
*
3600
*
1000
)
//计算天数后剩余的毫秒数
var
hours
=
Math
.
floor
(
leave1
/
(
3600
*
1000
))
var
leave1
=
date3
%
(
24
*
3600
*
1000
)
//计算天数后剩余的毫秒数
var
hours
=
Math
.
floor
(
leave1
/
(
3600
*
1000
))
var
leave2
=
leave1
%
(
3600
*
1000
)
//计算小时数后剩余的毫秒数
var
minutes
=
Math
.
floor
(
leave2
/
(
60
*
1000
))
var
leave2
=
leave1
%
(
3600
*
1000
)
//计算小时数后剩余的毫秒数
var
minutes
=
Math
.
floor
(
leave2
/
(
60
*
1000
))
var
leave3
=
leave2
%
(
60
*
1000
)
//计算分钟数后剩余的毫秒数
var
seconds
=
Math
.
round
(
date3
/
1000
)
return
{
leave1
,
leave2
,
leave3
,
days
:
days
,
hours
:
hours
,
minutes
:
minutes
,
seconds
:
seconds
,
}
}
\ No newline at end of file
var
leave3
=
leave2
%
(
60
*
1000
)
//计算分钟数后剩余的毫秒数
var
seconds
=
Math
.
round
(
date3
/
1000
)
return
{
leave1
,
leave2
,
leave3
,
days
:
days
,
hours
:
hours
,
minutes
:
minutes
,
seconds
:
seconds
,
}
}
src/util/store.js
View file @
05842014
import
{
validatenull
}
from
'@/util/validate'
;
import
{
validatenull
}
from
'@/util/validate'
;
/**
* 存储localStorage
*/
export
const
setStore
=
(
params
)
=>
{
let
{
name
,
content
,
type
,
}
=
params
;
let
obj
=
{
dataType
:
typeof
(
content
),
content
:
content
,
type
:
type
,
datetime
:
new
Date
().
getTime
()
}
if
(
type
)
window
.
sessionStorage
.
setItem
(
name
,
JSON
.
stringify
(
obj
));
else
window
.
localStorage
.
setItem
(
name
,
JSON
.
stringify
(
obj
));
}
/**
* 获取localStorage
*/
let
{
name
,
content
,
type
,
}
=
params
;
let
obj
=
{
dataType
:
typeof
(
content
),
content
:
content
,
type
:
type
,
datetime
:
new
Date
().
getTime
()
}
if
(
type
)
window
.
sessionStorage
.
setItem
(
name
,
JSON
.
stringify
(
obj
));
else
window
.
localStorage
.
setItem
(
name
,
JSON
.
stringify
(
obj
));
}
/**
* 获取localStorage
*/
export
const
getStore
=
(
params
)
=>
{
let
{
name
,
debug
}
=
params
;
let
obj
=
{},
content
;
obj
=
window
.
sessionStorage
.
getItem
(
name
);
if
(
validatenull
(
obj
))
obj
=
window
.
localStorage
.
getItem
(
name
);
if
(
validatenull
(
obj
))
return
;
obj
=
JSON
.
parse
(
obj
);
if
(
debug
)
{
return
obj
;
}
if
(
obj
.
dataType
==
'string'
)
{
content
=
obj
.
content
;
}
else
if
(
obj
.
dataType
==
'number'
)
{
content
=
Number
(
obj
.
content
);
}
else
if
(
obj
.
dataType
==
'boolean'
)
{
content
=
eval
(
obj
.
content
);
}
else
if
(
obj
.
dataType
==
'object'
)
{
content
=
obj
.
content
;
}
return
content
;
}
/**
* 删除localStorage
*/
let
{
name
,
debug
}
=
params
;
let
obj
=
{},
content
;
obj
=
window
.
sessionStorage
.
getItem
(
name
);
if
(
validatenull
(
obj
))
obj
=
window
.
localStorage
.
getItem
(
name
);
if
(
validatenull
(
obj
))
return
;
obj
=
JSON
.
parse
(
obj
);
if
(
debug
)
{
return
obj
;
}
if
(
obj
.
dataType
==
'string'
)
{
content
=
obj
.
content
;
}
else
if
(
obj
.
dataType
==
'number'
)
{
content
=
Number
(
obj
.
content
);
}
else
if
(
obj
.
dataType
==
'boolean'
)
{
content
=
eval
(
obj
.
content
);
}
else
if
(
obj
.
dataType
==
'object'
)
{
content
=
obj
.
content
;
}
return
content
;
}
/**
* 删除localStorage
*/
export
const
removeStore
=
params
=>
{
let
{
name
}
=
params
;
window
.
localStorage
.
removeItem
(
name
);
window
.
sessionStorage
.
removeItem
(
name
);
let
{
name
}
=
params
;
window
.
localStorage
.
removeItem
(
name
);
window
.
sessionStorage
.
removeItem
(
name
);
}
/**
* 获取全部localStorage
*/
export
const
getAllStore
=
(
params
)
=>
{
let
list
=
[];
let
{
type
}
=
params
;
for
(
let
i
=
1
;
i
<=
window
.
sessionStorage
.
length
;
i
++
)
{
if
(
type
)
{
list
.
push
({
name
:
window
.
sessionStorage
.
key
(
i
),
content
:
getStore
({
name
:
window
.
sessionStorage
.
key
(
i
),
type
:
'session'
})
})
}
else
{
list
.
push
(
getStore
({
name
:
window
.
localStorage
.
key
(
i
),
content
:
getStore
({
name
:
window
.
localStorage
.
key
(
i
),
})
}))
}
let
list
=
[];
let
{
type
}
=
params
;
for
(
let
i
=
1
;
i
<=
window
.
sessionStorage
.
length
;
i
++
)
{
if
(
type
)
{
list
.
push
({
name
:
window
.
sessionStorage
.
key
(
i
),
content
:
getStore
({
name
:
window
.
sessionStorage
.
key
(
i
),
type
:
'session'
})
})
}
else
{
list
.
push
(
getStore
({
name
:
window
.
localStorage
.
key
(
i
),
content
:
getStore
({
name
:
window
.
localStorage
.
key
(
i
),
})
}))
}
}
return
list
;
return
list
;
}
...
...
@@ -94,12 +93,12 @@ export const getAllStore = (params) => {
* 清空全部localStorage
*/
export
const
clearStore
=
(
params
)
=>
{
let
{
type
}
=
params
;
if
(
type
)
{
window
.
sessionStorage
.
clear
();
return
}
window
.
localStorage
.
clear
()
}
\ No newline at end of file
let
{
type
}
=
params
;
if
(
type
)
{
window
.
sessionStorage
.
clear
();
return
}
window
.
localStorage
.
clear
()
}
src/util/util.js
View file @
05842014
import
{
validatenull
}
from
'./validate'
import
{
validatenull
}
from
'./validate'
//表单序列化
export
const
serialize
=
data
=>
{
let
list
=
[];
Object
.
keys
(
data
).
forEach
(
ele
=>
{
list
.
push
(
`
${
ele
}
=
${
data
[
ele
]}
`
)
})
return
list
.
join
(
'&'
);
let
list
=
[];
Object
.
keys
(
data
).
forEach
(
ele
=>
{
list
.
push
(
`
${
ele
}
=
${
data
[
ele
]}
`
)
})
return
list
.
join
(
'&'
);
};
export
const
getObjType
=
obj
=>
{
var
toString
=
Object
.
prototype
.
toString
;
var
map
=
{
'[object Boolean]'
:
'boolean'
,
'[object Number]'
:
'number'
,
'[object String]'
:
'string'
,
'[object Function]'
:
'function'
,
'[object Array]'
:
'array'
,
'[object Date]'
:
'date'
,
'[object RegExp]'
:
'regExp'
,
'[object Undefined]'
:
'undefined'
,
'[object Null]'
:
'null'
,
'[object Object]'
:
'object'
};
if
(
obj
instanceof
Element
)
{
return
'element'
;
}
return
map
[
toString
.
call
(
obj
)];
var
toString
=
Object
.
prototype
.
toString
;
var
map
=
{
'[object Boolean]'
:
'boolean'
,
'[object Number]'
:
'number'
,
'[object String]'
:
'string'
,
'[object Function]'
:
'function'
,
'[object Array]'
:
'array'
,
'[object Date]'
:
'date'
,
'[object RegExp]'
:
'regExp'
,
'[object Undefined]'
:
'undefined'
,
'[object Null]'
:
'null'
,
'[object Object]'
:
'object'
};
if
(
obj
instanceof
Element
)
{
return
'element'
;
}
return
map
[
toString
.
call
(
obj
)];
};
/**
* 对象深拷贝
*/
export
const
deepClone
=
data
=>
{
var
type
=
getObjType
(
data
);
var
obj
;
if
(
type
===
'array'
)
{
obj
=
[];
}
else
if
(
type
===
'object'
)
{
obj
=
{};
}
else
{
//不再具有下一层次
return
data
;
var
type
=
getObjType
(
data
);
var
obj
;
if
(
type
===
'array'
)
{
obj
=
[];
}
else
if
(
type
===
'object'
)
{
obj
=
{};
}
else
{
//不再具有下一层次
return
data
;
}
if
(
type
===
'array'
)
{
for
(
var
i
=
0
,
len
=
data
.
length
;
i
<
len
;
i
++
)
{
obj
.
push
(
deepClone
(
data
[
i
]));
}
if
(
type
===
'array'
)
{
for
(
var
i
=
0
,
len
=
data
.
length
;
i
<
len
;
i
++
)
{
obj
.
push
(
deepClone
(
data
[
i
]));
}
}
else
if
(
type
===
'object'
)
{
for
(
var
key
in
data
)
{
obj
[
key
]
=
deepClone
(
data
[
key
]);
}
}
else
if
(
type
===
'object'
)
{
for
(
var
key
in
data
)
{
obj
[
key
]
=
deepClone
(
data
[
key
]);
}
return
obj
;
}
return
obj
;
};
/**
* 判断路由是否相等
*/
export
const
diff
=
(
obj1
,
obj2
)
=>
{
delete
obj1
.
close
;
var
o1
=
obj1
instanceof
Object
;
var
o2
=
obj2
instanceof
Object
;
if
(
!
o1
||
!
o2
)
{
/* 判断不是对象 */
return
obj1
===
obj2
;
}
delete
obj1
.
close
;
var
o1
=
obj1
instanceof
Object
;
var
o2
=
obj2
instanceof
Object
;
if
(
!
o1
||
!
o2
)
{
/* 判断不是对象 */
return
obj1
===
obj2
;
}
if
(
Object
.
keys
(
obj1
).
length
!==
Object
.
keys
(
obj2
).
length
)
{
return
false
;
//Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
}
if
(
Object
.
keys
(
obj1
).
length
!==
Object
.
keys
(
obj2
).
length
)
{
return
false
;
//Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
}
for
(
var
attr
in
obj1
)
{
var
t1
=
obj1
[
attr
]
instanceof
Object
;
var
t2
=
obj2
[
attr
]
instanceof
Object
;
if
(
t1
&&
t2
)
{
return
diff
(
obj1
[
attr
],
obj2
[
attr
]);
}
else
if
(
obj1
[
attr
]
!==
obj2
[
attr
])
{
return
false
;
}
}
return
true
;
for
(
var
attr
in
obj1
)
{
var
t1
=
obj1
[
attr
]
instanceof
Object
;
var
t2
=
obj2
[
attr
]
instanceof
Object
;
if
(
t1
&&
t2
)
{
return
diff
(
obj1
[
attr
],
obj2
[
attr
]);
}
else
if
(
obj1
[
attr
]
!==
obj2
[
attr
])
{
return
false
;
}
/**
* 设置灰度模式
*/
}
return
true
;
}
/**
* 设置灰度模式
*/
export
const
toggleGrayMode
=
(
status
)
=>
{
if
(
status
)
{
document
.
body
.
className
=
document
.
body
.
className
+
' grayMode'
;
}
else
{
document
.
body
.
className
=
document
.
body
.
className
.
replace
(
' grayMode'
,
''
);
}
if
(
status
)
{
document
.
body
.
className
=
document
.
body
.
className
+
' grayMode'
;
}
else
{
document
.
body
.
className
=
document
.
body
.
className
.
replace
(
' grayMode'
,
''
);
}
};
/**
* 设置主题
*/
export
const
setTheme
=
(
name
)
=>
{
document
.
body
.
className
=
name
;
document
.
body
.
className
=
name
;
}
/**
*加密处理
*/
export
const
encryption
=
(
params
)
=>
{
let
{
let
{
data
,
type
,
param
,
key
}
=
params
const
result
=
JSON
.
parse
(
JSON
.
stringify
(
data
))
if
(
type
===
'Base64'
)
{
param
.
forEach
(
ele
=>
{
result
[
ele
]
=
btoa
(
result
[
ele
])
})
}
else
{
param
.
forEach
(
ele
=>
{
var
data
=
result
[
ele
]
key
=
CryptoJS
.
enc
.
Latin1
.
parse
(
key
)
var
iv
=
key
// 加密
var
encrypted
=
CryptoJS
.
AES
.
encrypt
(
data
,
type
,
param
,
key
}
=
params
const
result
=
JSON
.
parse
(
JSON
.
stringify
(
data
))
if
(
type
===
'Base64'
)
{
param
.
forEach
(
ele
=>
{
result
[
ele
]
=
btoa
(
result
[
ele
])
})
}
else
{
param
.
forEach
(
ele
=>
{
var
data
=
result
[
ele
]
key
=
CryptoJS
.
enc
.
Latin1
.
parse
(
key
)
var
iv
=
key
// 加密
var
encrypted
=
CryptoJS
.
AES
.
encrypt
(
data
,
key
,
{
iv
:
iv
,
mode
:
CryptoJS
.
mode
.
CBC
,
padding
:
CryptoJS
.
pad
.
ZeroPadding
})
result
[
ele
]
=
encrypted
.
toString
()
key
,
{
iv
:
iv
,
mode
:
CryptoJS
.
mode
.
CBC
,
padding
:
CryptoJS
.
pad
.
ZeroPadding
})
}
return
result
result
[
ele
]
=
encrypted
.
toString
()
})
}
return
result
}
...
...
@@ -134,85 +134,86 @@ export const encryption = (params) => {
* 浏览器判断是否全屏
*/
export
const
fullscreenToggel
=
()
=>
{
if
(
fullscreenEnable
())
{
exitFullScreen
();
}
else
{
reqFullScreen
();
}
if
(
fullscreenEnable
())
{
exitFullScreen
();
}
else
{
reqFullScreen
();
}
};
/**
* esc监听全屏
*/
export
const
listenfullscreen
=
(
callback
)
=>
{
function
listen
()
{
callback
()
}
document
.
addEventListener
(
"fullscreenchange"
,
function
()
{
listen
();
});
document
.
addEventListener
(
"mozfullscreenchange"
,
function
()
{
listen
();
});
document
.
addEventListener
(
"webkitfullscreenchange"
,
function
()
{
listen
();
});
document
.
addEventListener
(
"msfullscreenchange"
,
function
()
{
listen
();
});
function
listen
()
{
callback
()
}
document
.
addEventListener
(
"fullscreenchange"
,
function
()
{
listen
();
});
document
.
addEventListener
(
"mozfullscreenchange"
,
function
()
{
listen
();
});
document
.
addEventListener
(
"webkitfullscreenchange"
,
function
()
{
listen
();
});
document
.
addEventListener
(
"msfullscreenchange"
,
function
()
{
listen
();
});
};
/**
* 浏览器判断是否全屏
*/
export
const
fullscreenEnable
=
()
=>
{
var
isFullscreen
=
document
.
fullscreenEnabled
||
window
.
fullScreen
||
document
.
mozFullscreenEnabled
||
document
.
webkitIsFullScreen
;
return
isFullscreen
;
var
isFullscreen
=
document
.
fullscreenEnabled
||
window
.
fullScreen
||
document
.
mozFullscreenEnabled
||
document
.
webkitIsFullScreen
;
return
isFullscreen
;
}
/**
* 浏览器全屏
*/
export
const
reqFullScreen
=
()
=>
{
if
(
document
.
documentElement
.
requestFullScreen
)
{
document
.
documentElement
.
requestFullScreen
();
}
else
if
(
document
.
documentElement
.
webkitRequestFullScreen
)
{
document
.
documentElement
.
webkitRequestFullScreen
();
}
else
if
(
document
.
documentElement
.
mozRequestFullScreen
)
{
document
.
documentElement
.
mozRequestFullScreen
();
}
if
(
document
.
documentElement
.
requestFullScreen
)
{
document
.
documentElement
.
requestFullScreen
();
}
else
if
(
document
.
documentElement
.
webkitRequestFullScreen
)
{
document
.
documentElement
.
webkitRequestFullScreen
();
}
else
if
(
document
.
documentElement
.
mozRequestFullScreen
)
{
document
.
documentElement
.
mozRequestFullScreen
();
}
};
/**
* 浏览器退出全屏
*/
export
const
exitFullScreen
=
()
=>
{
if
(
document
.
documentElement
.
requestFullScreen
)
{
document
.
exitFullScreen
();
}
else
if
(
document
.
documentElement
.
webkitRequestFullScreen
)
{
document
.
webkitCancelFullScreen
();
}
else
if
(
document
.
documentElement
.
mozRequestFullScreen
)
{
document
.
mozCancelFullScreen
();
}
if
(
document
.
documentElement
.
requestFullScreen
)
{
document
.
exitFullScreen
();
}
else
if
(
document
.
documentElement
.
webkitRequestFullScreen
)
{
document
.
webkitCancelFullScreen
();
}
else
if
(
document
.
documentElement
.
mozRequestFullScreen
)
{
document
.
mozCancelFullScreen
();
}
};
/**
* 递归寻找子类的父类
*/
export
const
findParent
=
(
menu
,
id
)
=>
{
for
(
let
i
=
0
;
i
<
menu
.
length
;
i
++
)
{
if
(
menu
[
i
].
children
.
length
!=
0
)
{
for
(
let
j
=
0
;
j
<
menu
[
i
].
children
.
length
;
j
++
)
{
if
(
menu
[
i
].
children
[
j
].
id
==
id
)
{
return
menu
[
i
];
}
else
{
if
(
menu
[
i
].
children
[
j
].
children
.
length
!=
0
)
{
return
findParent
(
menu
[
i
].
children
[
j
].
children
,
id
);
}
}
}
for
(
let
i
=
0
;
i
<
menu
.
length
;
i
++
)
{
if
(
menu
[
i
].
children
.
length
!=
0
)
{
for
(
let
j
=
0
;
j
<
menu
[
i
].
children
.
length
;
j
++
)
{
if
(
menu
[
i
].
children
[
j
].
id
==
id
)
{
return
menu
[
i
];
}
else
{
if
(
menu
[
i
].
children
[
j
].
children
.
length
!=
0
)
{
return
findParent
(
menu
[
i
].
children
[
j
].
children
,
id
);
}
}
}
}
}
};
/**
* 判断2个对象属性和值是否相等
...
...
@@ -223,91 +224,91 @@ export const findParent = (menu, id) => {
*/
export
const
loadStyle
=
url
=>
{
const
link
=
document
.
createElement
(
'link'
);
link
.
type
=
'text/css'
;
link
.
rel
=
'stylesheet'
;
link
.
href
=
url
;
const
head
=
document
.
getElementsByTagName
(
'head'
)[
0
];
head
.
appendChild
(
link
);
const
link
=
document
.
createElement
(
'link'
);
link
.
type
=
'text/css'
;
link
.
rel
=
'stylesheet'
;
link
.
href
=
url
;
const
head
=
document
.
getElementsByTagName
(
'head'
)[
0
];
head
.
appendChild
(
link
);
};
/**
* 判断路由是否相等
*/
export
const
isObjectValueEqual
=
(
a
,
b
)
=>
{
let
result
=
true
;
Object
.
keys
(
a
).
forEach
(
ele
=>
{
const
type
=
typeof
(
a
[
ele
]);
if
(
type
===
'string'
&&
a
[
ele
]
!==
b
[
ele
])
result
=
false
;
else
if
(
type
===
'object'
&&
JSON
.
stringify
(
a
[
ele
])
!==
JSON
.
stringify
(
b
[
ele
]))
result
=
false
;
})
return
result
;
}
/**
* 根据字典的value显示label
*/
let
result
=
true
;
Object
.
keys
(
a
).
forEach
(
ele
=>
{
const
type
=
typeof
(
a
[
ele
]);
if
(
type
===
'string'
&&
a
[
ele
]
!==
b
[
ele
])
result
=
false
;
else
if
(
type
===
'object'
&&
JSON
.
stringify
(
a
[
ele
])
!==
JSON
.
stringify
(
b
[
ele
]))
result
=
false
;
})
return
result
;
}
/**
* 根据字典的value显示label
*/
export
const
findByvalue
=
(
dic
,
value
)
=>
{
let
result
=
''
;
if
(
validatenull
(
dic
))
return
value
;
if
(
typeof
(
value
)
==
'string'
||
typeof
(
value
)
==
'number'
||
typeof
(
value
)
==
'boolean'
)
{
let
index
=
0
;
index
=
findArray
(
dic
,
value
);
if
(
index
!=
-
1
)
{
result
=
dic
[
index
].
label
;
}
else
{
result
=
value
;
}
}
else
if
(
value
instanceof
Array
)
{
result
=
[];
let
index
=
0
;
value
.
forEach
(
ele
=>
{
index
=
findArray
(
dic
,
ele
);
if
(
index
!=
-
1
)
{
result
.
push
(
dic
[
index
].
label
);
}
else
{
result
.
push
(
value
);
}
});
result
=
result
.
toString
();
let
result
=
''
;
if
(
validatenull
(
dic
))
return
value
;
if
(
typeof
(
value
)
==
'string'
||
typeof
(
value
)
==
'number'
||
typeof
(
value
)
==
'boolean'
)
{
let
index
=
0
;
index
=
findArray
(
dic
,
value
);
if
(
index
!=
-
1
)
{
result
=
dic
[
index
].
label
;
}
else
{
result
=
value
;
}
return
result
;
}
else
if
(
value
instanceof
Array
)
{
result
=
[];
let
index
=
0
;
value
.
forEach
(
ele
=>
{
index
=
findArray
(
dic
,
ele
);
if
(
index
!=
-
1
)
{
result
.
push
(
dic
[
index
].
label
);
}
else
{
result
.
push
(
value
);
}
});
result
=
result
.
toString
();
}
return
result
;
};
/**
* 根据字典的value查找对应的index
*/
export
const
findArray
=
(
dic
,
value
)
=>
{
for
(
let
i
=
0
;
i
<
dic
.
length
;
i
++
)
{
if
(
dic
[
i
].
value
==
value
)
{
return
i
;
}
for
(
let
i
=
0
;
i
<
dic
.
length
;
i
++
)
{
if
(
dic
[
i
].
value
==
value
)
{
return
i
;
}
return
-
1
;
}
return
-
1
;
};
/**
* 生成随机len位数字
*/
export
const
randomLenNum
=
(
len
,
date
)
=>
{
let
random
=
''
;
random
=
Math
.
ceil
(
Math
.
random
()
*
100000000000000
).
toString
().
substr
(
0
,
len
?
len
:
4
);
if
(
date
)
random
=
random
+
Date
.
now
();
return
random
;
let
random
=
''
;
random
=
Math
.
ceil
(
Math
.
random
()
*
100000000000000
).
toString
().
substr
(
0
,
len
?
len
:
4
);
if
(
date
)
random
=
random
+
Date
.
now
();
return
random
;
};
/**
* 打开小窗口
*/
export
const
openWindow
=
(
url
,
title
,
w
,
h
)
=>
{
// Fixes dual-screen position Most browsers Firefox
const
dualScreenLeft
=
window
.
screenLeft
!==
undefined
?
window
.
screenLeft
:
screen
.
left
const
dualScreenTop
=
window
.
screenTop
!==
undefined
?
window
.
screenTop
:
screen
.
top
// Fixes dual-screen position Most browsers Firefox
const
dualScreenLeft
=
window
.
screenLeft
!==
undefined
?
window
.
screenLeft
:
screen
.
left
const
dualScreenTop
=
window
.
screenTop
!==
undefined
?
window
.
screenTop
:
screen
.
top
const
width
=
window
.
innerWidth
?
window
.
innerWidth
:
document
.
documentElement
.
clientWidth
?
document
.
documentElement
.
clientWidth
:
screen
.
width
const
height
=
window
.
innerHeight
?
window
.
innerHeight
:
document
.
documentElement
.
clientHeight
?
document
.
documentElement
.
clientHeight
:
screen
.
height
const
width
=
window
.
innerWidth
?
window
.
innerWidth
:
document
.
documentElement
.
clientWidth
?
document
.
documentElement
.
clientWidth
:
screen
.
width
const
height
=
window
.
innerHeight
?
window
.
innerHeight
:
document
.
documentElement
.
clientHeight
?
document
.
documentElement
.
clientHeight
:
screen
.
height
const
left
=
((
width
/
2
)
-
(
w
/
2
))
+
dualScreenLeft
const
top
=
((
height
/
2
)
-
(
h
/
2
))
+
dualScreenTop
const
newWindow
=
window
.
open
(
url
,
title
,
'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width='
+
w
+
', height='
+
h
+
', top='
+
top
+
', left='
+
left
)
const
left
=
((
width
/
2
)
-
(
w
/
2
))
+
dualScreenLeft
const
top
=
((
height
/
2
)
-
(
h
/
2
))
+
dualScreenTop
const
newWindow
=
window
.
open
(
url
,
title
,
'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width='
+
w
+
', height='
+
h
+
', top='
+
top
+
', left='
+
left
)
// Puts focus on the newWindow
if
(
window
.
focus
)
{
newWindow
.
focus
()
}
}
\ No newline at end of file
// Puts focus on the newWindow
if
(
window
.
focus
)
{
newWindow
.
focus
()
}
}
src/util/validate.js
View file @
05842014
...
...
@@ -3,7 +3,7 @@
* @param {*} s
*/
export
function
isEmail
(
s
)
{
return
/^
([
a-zA-Z0-9_-
])
+@
([
a-zA-Z0-9_-
])
+
((
.
[
a-zA-Z0-9_-
]{2,3}){1,2})
$/
.
test
(
s
)
return
/^
([
a-zA-Z0-9_-
])
+@
([
a-zA-Z0-9_-
])
+
((
.
[
a-zA-Z0-9_-
]{2,3}){1,2})
$/
.
test
(
s
)
}
/**
...
...
@@ -11,7 +11,7 @@ export function isEmail(s) {
* @param {*} s
*/
export
function
isMobile
(
s
)
{
return
/^1
[
0-9
]{10}
$/
.
test
(
s
)
return
/^1
[
0-9
]{10}
$/
.
test
(
s
)
}
/**
...
...
@@ -19,7 +19,7 @@ export function isMobile(s) {
* @param {*} s
*/
export
function
isPhone
(
s
)
{
return
/^
([
0-9
]{3,4}
-
)?[
0-9
]{7,8}
$/
.
test
(
s
)
return
/^
([
0-9
]{3,4}
-
)?[
0-9
]{7,8}
$/
.
test
(
s
)
}
/**
...
...
@@ -27,223 +27,231 @@ export function isPhone(s) {
* @param {*} s
*/
export
function
isURL
(
s
)
{
return
/^http
[
s
]?
:
\/\/
.*/
.
test
(
s
)
return
/^http
[
s
]?
:
\/\/
.*/
.
test
(
s
)
}
export
function
isvalidUsername
(
str
)
{
const
valid_map
=
[
'admin'
,
'editor'
]
return
valid_map
.
indexOf
(
str
.
trim
())
>=
0
const
valid_map
=
[
'admin'
,
'editor'
]
return
valid_map
.
indexOf
(
str
.
trim
())
>=
0
}
/* 合法uri*/
export
function
validateURL
(
textval
)
{
const
urlregex
=
/^
(
https
?
|ftp
)
:
\/\/([
a-zA-Z0-9.-
]
+
(
:
[
a-zA-Z0-9.&%$-
]
+
)
*@
)
*
((
25
[
0-5
]
|2
[
0-4
][
0-9
]
|1
[
0-9
]{2}
|
[
1-9
][
0-9
]?)(\.(
25
[
0-5
]
|2
[
0-4
][
0-9
]
|1
[
0-9
]{2}
|
[
1-9
]?[
0-9
])){3}
|
([
a-zA-Z0-9-
]
+
\.)
*
[
a-zA-Z0-9-
]
+
\.(
com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|
[
a-zA-Z
]{2}))(
:
[
0-9
]
+
)
*
(\/(
$|
[
a-zA-Z0-9.,?'
\\
+&%$#=~_-
]
+
))
*$/
return
urlregex
.
test
(
textval
)
const
urlregex
=
/^
(
https
?
|ftp
)
:
\/\/([
a-zA-Z0-9.-
]
+
(
:
[
a-zA-Z0-9.&%$-
]
+
)
*@
)
*
((
25
[
0-5
]
|2
[
0-4
][
0-9
]
|1
[
0-9
]{2}
|
[
1-9
][
0-9
]?)(\.(
25
[
0-5
]
|2
[
0-4
][
0-9
]
|1
[
0-9
]{2}
|
[
1-9
]?[
0-9
])){3}
|
([
a-zA-Z0-9-
]
+
\.)
*
[
a-zA-Z0-9-
]
+
\.(
com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|
[
a-zA-Z
]{2}))(
:
[
0-9
]
+
)
*
(\/(
$|
[
a-zA-Z0-9.,?'
\\
+&%$#=~_-
]
+
))
*$/
return
urlregex
.
test
(
textval
)
}
/* 小写字母*/
export
function
validateLowerCase
(
str
)
{
const
reg
=
/^
[
a-z
]
+$/
return
reg
.
test
(
str
)
const
reg
=
/^
[
a-z
]
+$/
return
reg
.
test
(
str
)
}
/* 大写字母*/
export
function
validateUpperCase
(
str
)
{
const
reg
=
/^
[
A-Z
]
+$/
return
reg
.
test
(
str
)
const
reg
=
/^
[
A-Z
]
+$/
return
reg
.
test
(
str
)
}
/* 大小写字母*/
export
function
validatAlphabets
(
str
)
{
const
reg
=
/^
[
A-Za-z
]
+$/
return
reg
.
test
(
str
)
const
reg
=
/^
[
A-Za-z
]
+$/
return
reg
.
test
(
str
)
}
/*验证pad还是pc*/
export
const
vaildatePc
=
function
()
{
const
userAgentInfo
=
navigator
.
userAgent
;
const
Agents
=
[
"Android"
,
"iPhone"
,
"SymbianOS"
,
"Windows Phone"
,
"iPad"
,
"iPod"
];
let
flag
=
true
;
for
(
var
v
=
0
;
v
<
Agents
.
length
;
v
++
)
{
if
(
userAgentInfo
.
indexOf
(
Agents
[
v
])
>
0
)
{
flag
=
false
;
break
;
}
}
return
flag
;
export
const
vaildatePc
=
function
()
{
const
userAgentInfo
=
navigator
.
userAgent
;
const
Agents
=
[
"Android"
,
"iPhone"
,
"SymbianOS"
,
"Windows Phone"
,
"iPad"
,
"iPod"
];
let
flag
=
true
;
for
(
var
v
=
0
;
v
<
Agents
.
length
;
v
++
)
{
if
(
userAgentInfo
.
indexOf
(
Agents
[
v
])
>
0
)
{
flag
=
false
;
break
;
}
/**
* validate email
* @param email
* @returns {boolean}
*/
}
return
flag
;
}
/**
* validate email
* @param email
* @returns {boolean}
*/
export
function
validateEmail
(
email
)
{
const
re
=
/^
(([^
<>()
\\
[
\]\\
.,;:
\s
@"
]
+
(\.[^
<>()
\\
[
\]\\
.,;:
\s
@"
]
+
)
*
)
|
(
".+"
))
@
((\[[
0-9
]{1,3}\.[
0-9
]{1,3}\.[
0-9
]{1,3}\.[
0-9
]{1,3}\])
|
(([
a-zA-Z
\-
0-9
]
+
\.)
+
[
a-zA-Z
]{2,}))
$/
return
re
.
test
(
email
)
const
re
=
/^
(([^
<>()
\\
[
\]\\
.,;:
\s
@"
]
+
(\.[^
<>()
\\
[
\]\\
.,;:
\s
@"
]
+
)
*
)
|
(
".+"
))
@
((\[[
0-9
]{1,3}\.[
0-9
]{1,3}\.[
0-9
]{1,3}\.[
0-9
]{1,3}\])
|
(([
a-zA-Z
\-
0-9
]
+
\.)
+
[
a-zA-Z
]{2,}))
$/
return
re
.
test
(
email
)
}
/**
* 判断身份证号码
*/
export
function
cardid
(
code
)
{
let
list
=
[];
let
result
=
true
;
let
msg
=
''
;
var
city
=
{
11
:
"北京"
,
12
:
"天津"
,
13
:
"河北"
,
14
:
"山西"
,
15
:
"内蒙古"
,
21
:
"辽宁"
,
22
:
"吉林"
,
23
:
"黑龙江 "
,
31
:
"上海"
,
32
:
"江苏"
,
33
:
"浙江"
,
34
:
"安徽"
,
35
:
"福建"
,
36
:
"江西"
,
37
:
"山东"
,
41
:
"河南"
,
42
:
"湖北 "
,
43
:
"湖南"
,
44
:
"广东"
,
45
:
"广西"
,
46
:
"海南"
,
50
:
"重庆"
,
51
:
"四川"
,
52
:
"贵州"
,
53
:
"云南"
,
54
:
"西藏 "
,
61
:
"陕西"
,
62
:
"甘肃"
,
63
:
"青海"
,
64
:
"宁夏"
,
65
:
"新疆"
,
71
:
"台湾"
,
81
:
"香港"
,
82
:
"澳门"
,
91
:
"国外 "
};
if
(
!
validatenull
(
code
))
{
if
(
code
.
length
==
18
)
{
if
(
!
code
||
!
/
(
^
\d{18}
$
)
|
(
^
\d{17}(\d
|X|x
)
$
)
/
.
test
(
code
))
{
msg
=
"证件号码格式错误"
;
}
else
if
(
!
city
[
code
.
substr
(
0
,
2
)])
{
msg
=
"地址编码错误"
;
}
else
{
//18位身份证需要验证最后一位校验位
code
=
code
.
split
(
''
);
//∑(ai×Wi)(mod 11)
//加权因子
var
factor
=
[
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
];
//校验位
var
parity
=
[
1
,
0
,
'X'
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
'x'
];
var
sum
=
0
;
var
ai
=
0
;
var
wi
=
0
;
for
(
var
i
=
0
;
i
<
17
;
i
++
)
{
ai
=
code
[
i
];
wi
=
factor
[
i
];
sum
+=
ai
*
wi
;
}
if
(
parity
[
sum
%
11
]
!=
code
[
17
])
{
msg
=
"证件号码校验位错误"
;
}
else
{
result
=
false
;
}
}
let
list
=
[];
let
result
=
true
;
let
msg
=
''
;
var
city
=
{
11
:
"北京"
,
12
:
"天津"
,
13
:
"河北"
,
14
:
"山西"
,
15
:
"内蒙古"
,
21
:
"辽宁"
,
22
:
"吉林"
,
23
:
"黑龙江 "
,
31
:
"上海"
,
32
:
"江苏"
,
33
:
"浙江"
,
34
:
"安徽"
,
35
:
"福建"
,
36
:
"江西"
,
37
:
"山东"
,
41
:
"河南"
,
42
:
"湖北 "
,
43
:
"湖南"
,
44
:
"广东"
,
45
:
"广西"
,
46
:
"海南"
,
50
:
"重庆"
,
51
:
"四川"
,
52
:
"贵州"
,
53
:
"云南"
,
54
:
"西藏 "
,
61
:
"陕西"
,
62
:
"甘肃"
,
63
:
"青海"
,
64
:
"宁夏"
,
65
:
"新疆"
,
71
:
"台湾"
,
81
:
"香港"
,
82
:
"澳门"
,
91
:
"国外 "
};
if
(
!
validatenull
(
code
))
{
if
(
code
.
length
==
18
)
{
if
(
!
code
||
!
/
(
^
\d{18}
$
)
|
(
^
\d{17}(\d
|X|x
)
$
)
/
.
test
(
code
))
{
msg
=
"证件号码格式错误"
;
}
else
if
(
!
city
[
code
.
substr
(
0
,
2
)])
{
msg
=
"地址编码错误"
;
}
else
{
//18位身份证需要验证最后一位校验位
code
=
code
.
split
(
''
);
//∑(ai×Wi)(mod 11)
//加权因子
var
factor
=
[
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
];
//校验位
var
parity
=
[
1
,
0
,
'X'
,
9
,
8
,
7
,
6
,
5
,
4
,
3
,
2
,
'x'
];
var
sum
=
0
;
var
ai
=
0
;
var
wi
=
0
;
for
(
var
i
=
0
;
i
<
17
;
i
++
)
{
ai
=
code
[
i
];
wi
=
factor
[
i
];
sum
+=
ai
*
wi
;
}
if
(
parity
[
sum
%
11
]
!=
code
[
17
])
{
msg
=
"证件号码校验位错误"
;
}
else
{
msg
=
"证件号码长度不为18位"
;
result
=
false
;
}
}
}
else
{
msg
=
"证件号码不能为空
"
;
msg
=
"证件号码长度不为18位
"
;
}
list
.
push
(
result
);
list
.
push
(
msg
);
return
list
;
}
else
{
msg
=
"证件号码不能为空"
;
}
list
.
push
(
result
);
list
.
push
(
msg
);
return
list
;
}
/**
* 判断手机号码是否正确
*/
export
function
isvalidatemobile
(
phone
)
{
let
list
=
[];
let
result
=
true
;
let
msg
=
''
;
var
isPhone
=
/^0
\d{2,3}
-
?\d{7,8}
$/
;
//增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
if
(
!
validatenull
(
phone
))
{
if
(
phone
.
length
==
11
)
{
if
(
isPhone
.
test
(
phone
))
{
msg
=
'手机号码格式不正确'
;
}
else
{
result
=
false
;
}
}
else
{
msg
=
'手机号码长度不为11位'
;
}
let
list
=
[];
let
result
=
true
;
let
msg
=
''
;
var
isPhone
=
/^0
\d{2,3}
-
?\d{7,8}
$/
;
//增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
if
(
!
validatenull
(
phone
))
{
if
(
phone
.
length
==
11
)
{
if
(
isPhone
.
test
(
phone
))
{
msg
=
'手机号码格式不正确'
;
}
else
{
result
=
false
;
}
}
else
{
msg
=
'手机号码不能为空
'
;
msg
=
'手机号码长度不为11位
'
;
}
list
.
push
(
result
);
list
.
push
(
msg
);
return
list
;
}
else
{
msg
=
'手机号码不能为空'
;
}
list
.
push
(
result
);
list
.
push
(
msg
);
return
list
;
}
/**
* 判断姓名是否正确
*/
export
function
validatename
(
name
)
{
var
regName
=
/^
[\u
4e00-
\u
9fa5
]{2,4}
$/
;
if
(
!
regName
.
test
(
name
))
return
false
;
return
true
;
var
regName
=
/^
[\u
4e00-
\u
9fa5
]{2,4}
$/
;
if
(
!
regName
.
test
(
name
))
return
false
;
return
true
;
}
/**
* 判断是否为整数
*/
export
function
validatenum
(
num
,
type
)
{
let
regName
=
/
[^\d
.
]
/g
;
if
(
type
==
1
)
{
if
(
!
regName
.
test
(
num
))
return
false
;
}
else
if
(
type
==
2
)
{
regName
=
/
[^\d]
/g
;
if
(
!
regName
.
test
(
num
))
return
false
;
}
return
true
;
let
regName
=
/
[^\d
.
]
/g
;
if
(
type
==
1
)
{
if
(
!
regName
.
test
(
num
))
return
false
;
}
else
if
(
type
==
2
)
{
regName
=
/
[^\d]
/g
;
if
(
!
regName
.
test
(
num
))
return
false
;
}
return
true
;
}
/**
* 判断是否为小数
*/
export
function
validatenumord
(
num
,
type
)
{
let
regName
=
/
[^\d
.
]
/g
;
if
(
type
==
1
)
{
if
(
!
regName
.
test
(
num
))
return
false
;
}
else
if
(
type
==
2
)
{
regName
=
/
[^\d
.
]
/g
;
if
(
!
regName
.
test
(
num
))
return
false
;
}
return
true
;
let
regName
=
/
[^\d
.
]
/g
;
if
(
type
==
1
)
{
if
(
!
regName
.
test
(
num
))
return
false
;
}
else
if
(
type
==
2
)
{
regName
=
/
[^\d
.
]
/g
;
if
(
!
regName
.
test
(
num
))
return
false
;
}
return
true
;
}
/**
* 判断是否为空
*/
export
function
validatenull
(
val
)
{
if
(
typeof
val
==
'boolean'
)
{
return
false
;
}
if
(
typeof
val
==
'number'
)
{
return
false
;
}
if
(
val
instanceof
Array
)
{
if
(
val
.
length
==
0
)
return
true
;
}
else
if
(
val
instanceof
Object
)
{
if
(
JSON
.
stringify
(
val
)
===
'{}'
)
return
true
;
}
else
{
if
(
val
==
'null'
||
val
==
null
||
val
==
'undefined'
||
val
==
undefined
||
val
==
''
)
return
true
;
return
false
;
}
if
(
typeof
val
==
'boolean'
)
{
return
false
;
}
\ No newline at end of file
}
if
(
typeof
val
==
'number'
)
{
return
false
;
}
if
(
val
instanceof
Array
)
{
if
(
val
.
length
==
0
)
return
true
;
}
else
if
(
val
instanceof
Object
)
{
if
(
JSON
.
stringify
(
val
)
===
'{}'
)
return
true
;
}
else
{
if
(
val
==
'null'
||
val
==
null
||
val
==
'undefined'
||
val
==
undefined
||
val
==
''
)
return
true
;
return
false
;
}
return
false
;
}
src/views/activiti/detail.vue
View file @
05842014
...
...
@@ -5,7 +5,8 @@
<p
class=
"header__title"
>
{{
name
}}
</p>
<el-button
class=
"header__btn"
type=
"primary"
@
click=
"breaks"
>
关闭返回列表
</el-button>
@
click=
"breaks"
>
关闭返回列表
</el-button>
</div>
</basic-container>
...
...
@@ -17,51 +18,59 @@
</
template
>
<
script
>
export
default
{
data
()
{
return
{
id
:
''
,
name
:
''
}
},
created
()
{
this
.
id
=
this
.
$route
.
params
.
id
this
.
name
=
this
.
$route
.
query
.
name
},
computed
:
{
src
()
{
return
`
${
this
.
actUrl
}${
this
.
id
}
`
;
}
},
methods
:
{
breaks
()
{
this
.
$router
.
$avueRouter
.
closeTag
();
this
.
$router
.
push
({
path
:
'/activti/activiti'
})
export
default
{
data
()
{
return
{
id
:
''
,
name
:
''
}
},
created
()
{
this
.
id
=
this
.
$route
.
params
.
id
this
.
name
=
this
.
$route
.
query
.
name
},
computed
:
{
src
()
{
return
`
${
this
.
actUrl
}${
this
.
id
}
`
;
}
},
methods
:
{
breaks
()
{
this
.
$router
.
$avueRouter
.
closeTag
();
this
.
$router
.
push
({
path
:
'/activti/activiti'
})
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.header
{
position
:
relative
;
display
:
flex
;
align-items
:
center
;
&
__title
{
font-size
:
22px
;
}
&
__btn
{
position
:
absolute
;
right
:
10px
;
.execution
{
height
:
99%
;
.header
{
position
:
relative
;
display
:
flex
;
align-items
:
center
;
&
__title
{
font-size
:
22px
;
}
&
__btn
{
position
:
absolute
;
right
:
10px
;
}
}
.main
{
margin
:
0
auto
;
width
:
99%
;
height
:
calc
(
100%
-
100px
);
background-color
:
#fff
;
padding
:
20px
;
border-radius
:
3px
;
box-sizing
:
border-box
;
}
}
}
.main
{
margin
:
0
auto
;
width
:
99%
;
height
:
calc
(
100%
-
100px
);
background-color
:
#fff
;
padding
:
20px
;
border-radius
:
3px
;
box-sizing
:
border-box
;
}
</
style
>
src/views/activiti/index.vue
View file @
05842014
...
...
@@ -32,13 +32,16 @@
slot=
"menuBtn"
>
<el-dropdown-item
divided
v-if=
"permissions.act_model_manage"
@
click
.
native=
"handleView(scope.row,scope.index)"
>
模型图
</el-dropdown-item>
@
click
.
native=
"handleView(scope.row,scope.index)"
>
模型图
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_model_manage"
@
click
.
native=
"handleDeploy(scope.row,scope.index)"
>
部署
</el-dropdown-item>
@
click
.
native=
"handleDeploy(scope.row,scope.index)"
>
部署
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_model_manage"
@
click
.
native=
"handleDel(scope.row,scope.index)"
>
删除
</el-dropdown-item>
@
click
.
native=
"handleDel(scope.row,scope.index)"
>
删除
</el-dropdown-item>
</
template
>
</avue-crud>
...
...
@@ -47,126 +50,125 @@
</template>
<
script
>
import
{
fetchList
,
delObj
,
addObj
,
deploy
}
from
'@/api/activiti/activiti'
import
{
tableOption
}
from
'@/const/crud/activiti/activiti'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'activiti'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
descs
:
'create_time'
,
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
addObj
,
delObj
,
deploy
,
fetchList
}
from
'@/api/activiti/activiti'
import
{
tableOption
}
from
'@/const/crud/activiti/activiti'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'activiti'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
handleView
(
row
,
index
)
{
const
name
=
`模型id为
${
row
.
id
}
的
${
row
.
name
}
流程图`
,
src
=
`/activti/detail/
${
row
.
id
}
`
;
this
.
$router
.
push
({
path
:
src
,
query
:
{
name
:
name
}
})
mounted
:
function
()
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
computed
:
{
...
mapGetters
([
'permissions'
]
)
},
handleDeploy
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认部署ID为"'
+
row
.
id
+
'"的模型?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
deploy
(
row
.
id
)
})
.
then
(
data
=>
{
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
descs
:
'create_time'
,
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
},
handleView
(
row
,
index
)
{
const
name
=
`模型id为
${
row
.
id
}
的
${
row
.
name
}
流程图`
,
src
=
`/activti/detail/
${
row
.
id
}
`
;
this
.
$router
.
push
({
path
:
src
,
query
:
{
name
:
name
}
})
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
handleDeploy
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认部署ID为"'
+
row
.
id
+
'"的模型?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
deploy
(
row
.
id
)
}).
then
(
data
=>
{
this
.
getList
(
this
.
page
)
_this
.
$message
({
showClose
:
true
,
message
:
'部署成功'
,
type
:
'success'
})
}).
catch
(
function
(
err
)
{
})
.
catch
(
function
(
err
)
{
})
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为"'
+
row
.
id
+
'"的模型?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为"'
+
row
.
id
+
'"的模型?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
.
id
)
})
.
then
(
data
=>
{
}).
then
(
data
=>
{
this
.
getList
(
this
.
page
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
}).
catch
(
function
(
err
)
{
})
.
catch
(
function
(
err
)
{
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
done
()
this
.
getList
(
this
.
page
)
})
done
()
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
})
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/activiti/leave.vue
View file @
05842014
...
...
@@ -33,20 +33,24 @@
<el-button
type=
"primary"
@
click=
"handleAdd"
size=
"small"
v-if=
"permissions.act_leavebill_add"
>
新 增
</el-button>
v-if=
"permissions.act_leavebill_add"
>
新 增
</el-button>
</
template
>
<
template
slot-scope=
"scope"
slot=
"menuBtn"
>
<el-dropdown-item
divided
v-if=
"permissions.act_leavebill_edit && scope.row.state == 0"
@
click
.
native=
"handleSubmit(scope.row,scope.index)"
>
提交
</el-dropdown-item>
@
click
.
native=
"handleSubmit(scope.row,scope.index)"
>
提交
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_leavebill_edit"
@
click
.
native=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-dropdown-item>
@
click
.
native=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_leavebill_del"
@
click
.
native=
"handleDel(scope.row,'suspend')"
>
删除
</el-dropdown-item>
@
click
.
native=
"handleDel(scope.row,'suspend')"
>
删除
</el-dropdown-item>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -54,9 +58,10 @@
</template>
<
script
>
import
{
fetchList
,
getObj
,
addObj
,
putObj
,
delObj
,
submit
}
from
'@/api/activiti/leave-bill'
import
{
tableOption
}
from
'@/const/crud/activiti/leave-bill'
import
{
mapGetters
}
from
'vuex'
import
{
addObj
,
delObj
,
fetchList
,
getObj
,
putObj
,
submit
}
from
'@/api/activiti/leave-bill'
import
{
tableOption
}
from
'@/const/crud/activiti/leave-bill'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'leave-bill'
,
data
()
{
...
...
@@ -73,127 +78,125 @@
},
created
()
{
},
mounted
:
function
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
descs
:
'create_time'
,
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
leaveId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
leaveId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
.
leaveId
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
})
.
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
})
.
catch
(
function
(
err
)
{
})
},
handleSubmit
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认提交ID为'
+
row
.
leaveId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
submit
(
row
.
leaveId
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'提交成功'
,
type
:
'success'
})
this
.
getList
(
this
.
page
)
}).
catch
(
function
(
err
)
{
})
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
done
()
this
.
getList
(
this
.
page
)
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
done
()
this
.
getList
(
this
.
page
)
})
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
handleSubmit
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认提交ID为'
+
row
.
leaveId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
submit
(
row
.
leaveId
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'提交成功'
,
type
:
'success'
})
this
.
getList
(
this
.
page
)
})
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
done
()
this
.
getList
(
this
.
page
)
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
done
()
this
.
getList
(
this
.
page
)
})
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
page
.
state
=
form
.
state
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/activiti/process.vue
View file @
05842014
...
...
@@ -34,100 +34,105 @@
divided
v-if=
"permissions.act_process_manage"
@
click
.
native=
"handlePic(scope.row,scope.index)"
>
流程图
</el-dropdown-item>
>
流程图
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_process_manage && scope.row.suspend"
@
click
.
native=
"handleStatus(scope.row,'active')"
>
激活
</el-dropdown-item>
>
激活
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_process_manage && !scope.row.suspend"
@
click
.
native=
"handleStatus(scope.row,'suspend')"
>
失效
</el-dropdown-item>
>
失效
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_process_manage"
@
click
.
native=
"handleDel(scope.row,'suspend')"
>
删除
</el-dropdown-item>
>
删除
</el-dropdown-item>
</
template
>
</avue-crud>
</basic-container>
<el-dialog
title=
"流程图"
:visible
.
sync=
"showPicDialog"
>
<img
:src=
"actPicUrl"
width=
"100%"
style=
"margin-left:-60px"
>
<img
:src=
"actPicUrl"
width=
"100%"
>
</el-dialog>
</div>
</template>
<
script
>
import
{
fetchList
,
delObj
,
addObj
,
status
}
from
"@/api/activiti/process"
;
import
{
tableOption
}
from
"@/const/crud/activiti/process"
;
import
{
mapGetters
}
from
"vuex"
;
export
default
{
name
:
"process"
,
data
()
{
return
{
showPicDialog
:
false
,
actPicUrl
:
""
,
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
};
},
created
()
{},
mounted
:
function
()
{},
computed
:
{
...
mapGetters
([
"permissions"
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
;
fetchList
(
Object
.
assign
(
{
descs
:
"create_time"
,
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)
).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
;
this
.
page
.
total
=
response
.
data
.
data
.
total
;
this
.
tableLoading
=
false
;
});
import
{
addObj
,
delObj
,
fetchList
,
status
}
from
"@/api/activiti/process"
;
import
{
tableOption
}
from
"@/const/crud/activiti/process"
;
import
{
mapGetters
}
from
"vuex"
;
export
default
{
name
:
"process"
,
data
()
{
return
{
showPicDialog
:
false
,
actPicUrl
:
""
,
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
};
},
created
()
{
},
mounted
:
function
()
{
},
handlePic
(
row
,
index
)
{
this
.
actPicUrl
=
`/act/process/resource/`
+
row
.
deploymentId
+
"/"
+
row
.
processonDefinitionId
+
"/image"
;
this
.
showPicDialog
=
true
;
computed
:
{
...
mapGetters
([
"permissions"
])
},
handleStatus
(
row
,
type
)
{
var
_this
=
this
;
this
.
$confirm
(
'是否确认操作ID为"'
+
row
.
processonDefinitionId
+
'"的流程?'
,
"警告"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}
)
.
then
(
function
()
{
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
;
fetchList
(
Object
.
assign
(
{
descs
:
"create_time"
,
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)
).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
;
this
.
page
.
total
=
response
.
data
.
data
.
total
;
this
.
tableLoading
=
false
;
});
},
handlePic
(
row
,
index
)
{
this
.
actPicUrl
=
`/act/process/resource/`
+
row
.
deploymentId
+
"/"
+
row
.
processonDefinitionId
+
"/image"
;
this
.
showPicDialog
=
true
;
},
handleStatus
(
row
,
type
)
{
var
_this
=
this
;
this
.
$confirm
(
'是否确认操作ID为"'
+
row
.
processonDefinitionId
+
'"的流程?'
,
"警告"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}
).
then
(
function
()
{
return
status
(
row
.
processonDefinitionId
,
type
);
})
.
then
(
data
=>
{
}).
then
(
data
=>
{
this
.
getList
(
this
.
page
);
_this
.
$message
({
showClose
:
true
,
...
...
@@ -135,49 +140,46 @@ export default {
type
:
"success"
});
})
.
catch
(
function
(
err
)
{});
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
);
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
;
this
.
$confirm
(
'是否确认删除ID为"'
+
row
.
deploymentId
+
'"的模型?'
,
"警告"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}
)
.
then
(
function
()
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
);
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
;
this
.
$confirm
(
'是否确认删除ID为"'
+
row
.
deploymentId
+
'"的模型?'
,
"警告"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}
).
then
(
function
()
{
return
delObj
(
row
.
deploymentId
);
})
.
then
(
data
=>
{
}).
then
(
data
=>
{
this
.
getList
(
this
.
page
);
_this
.
$message
({
showClose
:
true
,
message
:
"删除成功"
,
type
:
"success"
});
})
.
catch
(
function
(
err
)
{});
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
);
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
);
}).
catch
(
function
(
err
)
{
});
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
);
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
);
}
}
}
};
};
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/activiti/task.vue
View file @
05842014
...
...
@@ -29,13 +29,16 @@
slot=
"menuBtn"
>
<el-dropdown-item
divided
v-if=
"permissions.act_task_manage"
@
click
.
native=
"audit(scope.row,scope.index)"
>
审批
</el-dropdown-item>
@
click
.
native=
"audit(scope.row,scope.index)"
>
审批
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_task_manage"
@
click
.
native=
"comment(scope.row,scope.index)"
>
批注
</el-dropdown-item>
@
click
.
native=
"comment(scope.row,scope.index)"
>
批注
</el-dropdown-item>
<el-dropdown-item
divided
v-if=
"permissions.act_task_manage"
@
click
.
native=
"viewPic(scope.row,scope.index)"
>
流程图
</el-dropdown-item>
@
click
.
native=
"viewPic(scope.row,scope.index)"
>
流程图
</el-dropdown-item>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -43,10 +46,11 @@
:visible
.
sync=
"showTask"
>
<avue-form
ref=
"form"
v-model=
"obj"
:option=
"formOption"
>
<
template
slot-scope=
"scope"
slot=
"menuForm"
>
<el-button
icon=
"el-icon-check"
v-for=
"flag in flagList"
:key=
"flag"
@
click=
"handleTask(scope.row,flag)"
plain
>
{{
flag
}}
</el-button>
<el-button
icon=
"el-icon-check"
v-for=
"flag in flagList"
:key=
"flag"
@
click=
"handleTask(scope.row,flag)"
plain
>
{{
flag
}}
</el-button>
</
template
>
</avue-form>
</el-dialog>
...
...
@@ -62,16 +66,17 @@
</template>
<
script
>
import
{
fetchList
,
fetchDetail
,
doTask
,
fetchComment
}
from
'@/api/activiti/task'
import
{
tableOption
,
formOption
,
taskOption
}
from
'@/const/crud/activiti/task'
import
{
mapGetters
}
from
'vuex'
import
{
doTask
,
fetchComment
,
fetchDetail
,
fetchList
}
from
'@/api/activiti/task'
import
{
formOption
,
tableOption
,
taskOption
}
from
'@/const/crud/activiti/task'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'task'
,
data
()
{
return
{
actPicUrl
:
''
,
actPicUrl
:
''
,
obj
:
{},
flagList
:{},
flagList
:
{},
showTask
:
false
,
showComment
:
false
,
showPicDialog
:
false
,
...
...
@@ -85,85 +90,86 @@
tableLoading
:
false
,
tableOption
:
tableOption
,
formOption
:
formOption
,
taskOption
:
taskOption
,
taskOption
:
taskOption
,
}
},
created
()
{
},
mounted
:
function
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})},
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
},
audit
:
function
(
row
,
index
)
{
audit
:
function
(
row
,
index
)
{
fetchDetail
(
row
.
taskId
).
then
(
response
=>
{
this
.
obj
=
response
.
data
.
data
// 根据连线判断下次的流程
// 根据连线判断下次的流程
this
.
flagList
=
this
.
obj
.
flagList
this
.
showTask
=
true
})
this
.
obj
=
row
},
comment
:
function
(
row
,
index
)
{
},
comment
:
function
(
row
,
index
)
{
fetchComment
(
row
.
taskId
).
then
(
response
=>
{
this
.
taskTableData
=
response
.
data
.
data
this
.
taskTableData
=
response
.
data
.
data
})
this
.
showComment
=
true
},
handleSubmit
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认提交ID为'
+
row
.
leaveId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
submit
(
row
.
leaveId
)
})
.
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'提交成功'
,
type
:
'success'
})
},
handleSubmit
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认提交ID为'
+
row
.
leaveId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
submit
(
row
.
leaveId
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'提交成功'
,
type
:
'success'
})
.
catch
(
function
(
err
)
{
})
}).
catch
(
function
(
err
)
{
})
},
handleTask
:
function
(
row
,
result
)
{
handleTask
:
function
(
row
,
result
)
{
this
.
obj
.
taskFlag
=
result
doTask
(
this
.
obj
).
then
(
response
=>
{
this
.
$message
({
showClose
:
true
,
message
:
'提交成功'
,
type
:
'success'
})
this
.
showTask
=
false
this
.
getList
(
this
.
page
)
doTask
(
this
.
obj
).
then
(
response
=>
{
this
.
$message
({
showClose
:
true
,
message
:
'提交成功'
,
type
:
'success'
})
this
.
showTask
=
false
this
.
getList
(
this
.
page
)
})
},
viewPic
:
function
(
row
,
index
)
{
this
.
actPicUrl
=
`/act/task/view/`
+
row
.
taskId
this
.
showPicDialog
=
true
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
viewPic
:
function
(
row
,
index
)
{
this
.
actPicUrl
=
`/act/task/view/`
+
row
.
taskId
this
.
showPicDialog
=
true
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/admin/client/index.vue
View file @
05842014
...
...
@@ -35,13 +35,15 @@
icon=
"el-icon-check"
size=
"mini"
plain
@
click=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-button>
@
click=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-button>
<el-button
type=
"text"
v-if=
"permissions.sys_client_del"
icon=
"el-icon-delete"
size=
"mini"
plain
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -49,66 +51,66 @@
</template>
<
script
>
import
{
fetchList
,
addObj
,
putObj
,
delObj
}
from
'@/api/admin/client'
import
{
tableOption
}
from
'@/const/crud/admin/client'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'client'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
addObj
,
delObj
,
fetchList
,
putObj
}
from
'@/api/admin/client'
import
{
tableOption
}
from
'@/const/crud/admin/client'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'client'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
created
()
{
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
mounted
:
function
()
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
computed
:
{
...
mapGetters
([
'permissions'
]
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
clientId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
return
delObj
(
row
.
clientId
)
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
.
then
(
data
=>
{
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
clientId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
.
clientId
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
...
...
@@ -116,54 +118,54 @@ export default {
type
:
'success'
})
this
.
refreshChange
()
}).
catch
(
function
(
err
)
{
})
.
catch
(
function
(
err
)
{
})
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
this
.
refreshChange
()
done
()
})
this
.
refreshChange
()
done
()
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
(
{
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
this
.
refreshChange
()
done
()
})
this
.
refreshChange
()
done
()
})
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/admin/dept/index.vue
View file @
05842014
...
...
@@ -23,15 +23,18 @@
<el-button
type=
"primary"
v-if=
"deptManager_btn_add"
icon=
"plus"
@
click=
"handlerAdd"
>
添加
</el-button>
@
click=
"handlerAdd"
>
添加
</el-button>
<el-button
type=
"primary"
v-if=
"deptManager_btn_edit"
icon=
"edit"
@
click=
"handlerEdit"
>
编辑
</el-button>
@
click=
"handlerEdit"
>
编辑
</el-button>
<el-button
type=
"primary"
v-if=
"deptManager_btn_del"
icon=
"delete"
@
click=
"handleDelete"
>
删除
</el-button>
@
click=
"handleDelete"
>
删除
</el-button>
</el-button-group>
</div>
...
...
@@ -78,18 +81,20 @@
<el-form-item
label=
"排序"
prop=
"orderNum"
>
<el-input
type=
"number"
v-model=
"form.sort"
v-model=
"form.sort"
:disabled=
"formEdit"
placeholder=
"请输入排序"
></el-input>
</el-form-item>
<el-form-item
v-if=
"formStatus == 'update'"
>
<el-button
type=
"primary"
@
click=
"update"
>
更新
</el-button>
@
click=
"update"
>
更新
</el-button>
<el-button
@
click=
"onCancel"
>
取消
</el-button>
</el-form-item>
<el-form-item
v-if=
"formStatus == 'create'"
>
<el-button
type=
"primary"
@
click=
"create"
>
保存
</el-button>
@
click=
"create"
>
保存
</el-button>
<el-button
@
click=
"onCancel"
>
取消
</el-button>
</el-form-item>
</el-form>
...
...
@@ -101,153 +106,154 @@
</
template
>
<
script
>
import
{
fetchTree
,
getObj
,
addObj
,
delObj
,
putObj
}
from
'@/api/admin/dept'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'dept'
,
data
()
{
return
{
list
:
null
,
total
:
null
,
formEdit
:
true
,
formAdd
:
true
,
formStatus
:
''
,
showElement
:
false
,
typeOptions
:
[
'0'
,
'1'
],
methodOptions
:
[
'GET'
,
'POST'
,
'PUT'
,
'DELETE'
],
listQuery
:
{
name
:
undefined
import
{
addObj
,
delObj
,
fetchTree
,
getObj
,
putObj
}
from
'@/api/admin/dept'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'dept'
,
data
()
{
return
{
list
:
null
,
total
:
null
,
formEdit
:
true
,
formAdd
:
true
,
formStatus
:
''
,
showElement
:
false
,
typeOptions
:
[
'0'
,
'1'
],
methodOptions
:
[
'GET'
,
'POST'
,
'PUT'
,
'DELETE'
],
listQuery
:
{
name
:
undefined
},
treeData
:
[],
defaultProps
:
{
children
:
'children'
,
label
:
'name'
},
rules
:
{
parentId
:
[
{
required
:
true
,
message
:
'请输入父级节点'
,
trigger
:
'blur'
}
],
deptId
:
[
{
required
:
true
,
message
:
'请输入节点编号'
,
trigger
:
'blur'
}
],
name
:
[
{
required
:
true
,
message
:
'请输入部门名称'
,
trigger
:
'blur'
}
],
},
labelPosition
:
'right'
,
form
:
{
name
:
undefined
,
orderNum
:
undefined
,
parentId
:
undefined
,
deptId
:
undefined
},
currentId
:
0
,
deptManager_btn_add
:
false
,
deptManager_btn_edit
:
false
,
deptManager_btn_del
:
false
}
},
created
()
{
this
.
getList
()
this
.
deptManager_btn_add
=
this
.
permissions
[
'sys_dept_add'
]
this
.
deptManager_btn_edit
=
this
.
permissions
[
'sys_dept_edit'
]
this
.
deptManager_btn_del
=
this
.
permissions
[
'sys_dept_del'
]
},
computed
:
{
...
mapGetters
([
'elements'
,
'permissions'
])
},
methods
:
{
getList
()
{
fetchTree
(
this
.
listQuery
).
then
(
response
=>
{
this
.
treeData
=
response
.
data
.
data
})
},
treeData
:
[],
defaultProps
:
{
children
:
'children'
,
label
:
'name'
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
return
data
.
label
.
indexOf
(
value
)
!==
-
1
},
rules
:
{
parentId
:
[
{
required
:
true
,
message
:
'请输入父级节点'
,
trigger
:
'blur'
}
],
deptId
:
[
{
required
:
true
,
message
:
'请输入节点编号'
,
trigger
:
'blur'
}
],
name
:
[
{
required
:
true
,
message
:
'请输入部门名称'
,
trigger
:
'blur'
}
],
getNodeData
(
data
)
{
if
(
!
this
.
formEdit
)
{
this
.
formStatus
=
'update'
}
getObj
(
data
.
id
).
then
(
response
=>
{
this
.
form
=
response
.
data
.
data
})
this
.
currentId
=
data
.
id
this
.
showElement
=
true
},
labelPosition
:
'right'
,
form
:
{
name
:
undefined
,
orderNum
:
undefined
,
parentId
:
undefined
,
deptId
:
undefined
handlerEdit
()
{
if
(
this
.
form
.
deptId
)
{
this
.
formEdit
=
false
this
.
formStatus
=
'update'
}
},
currentId
:
0
,
deptManager_btn_add
:
false
,
deptManager_btn_edit
:
false
,
deptManager_btn_del
:
false
}
},
created
()
{
this
.
getList
()
this
.
deptManager_btn_add
=
this
.
permissions
[
'sys_dept_add'
]
this
.
deptManager_btn_edit
=
this
.
permissions
[
'sys_dept_edit'
]
this
.
deptManager_btn_del
=
this
.
permissions
[
'sys_dept_del'
]
},
computed
:
{
...
mapGetters
([
'elements'
,
'permissions'
])
},
methods
:
{
getList
()
{
fetchTree
(
this
.
listQuery
).
then
(
response
=>
{
this
.
treeData
=
response
.
data
.
data
})
},
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
return
data
.
label
.
indexOf
(
value
)
!==
-
1
},
getNodeData
(
data
)
{
if
(
!
this
.
formEdit
)
{
this
.
formStatus
=
'update'
}
getObj
(
data
.
id
).
then
(
response
=>
{
this
.
form
=
response
.
data
.
data
})
this
.
currentId
=
data
.
id
this
.
showElement
=
true
},
handlerEdit
()
{
if
(
this
.
form
.
deptId
)
{
handlerAdd
()
{
this
.
resetForm
()
this
.
formEdit
=
false
this
.
formStatus
=
'update'
}
},
handlerAdd
()
{
this
.
resetForm
()
this
.
formEdit
=
false
this
.
formStatus
=
'create'
},
handleDelete
()
{
this
.
$confirm
(
'此操作将永久删除, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
delObj
(
this
.
currentId
).
then
(()
=>
{
this
.
getList
()
this
.
resetForm
()
this
.
onCancel
()
this
.
$notify
({
title
:
'成功'
,
message
:
'删除成功'
,
type
:
'success'
,
duration
:
2000
this
.
formStatus
=
'create'
},
handleDelete
()
{
this
.
$confirm
(
'此操作将永久删除, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
delObj
(
this
.
currentId
).
then
(()
=>
{
this
.
getList
()
this
.
resetForm
()
this
.
onCancel
()
this
.
$notify
({
title
:
'成功'
,
message
:
'删除成功'
,
type
:
'success'
,
duration
:
2000
})
})
})
}
)
},
update
()
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
!
valid
)
return
putObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
$notify
({
title
:
'
成功'
,
message
:
'更新成功
'
,
type
:
'success'
,
duration
:
2000
}
,
update
()
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
!
valid
)
return
putObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
$notify
({
title
:
'成功'
,
message
:
'更新
成功'
,
type
:
'success
'
,
duration
:
2000
})
})
})
})
},
create
()
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
!
valid
)
return
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
$notify
({
title
:
'成功'
,
message
:
'创建成功'
,
type
:
'success'
,
duration
:
2000
},
create
()
{
this
.
$refs
.
form
.
validate
((
valid
)
=>
{
if
(
!
valid
)
return
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
$notify
({
title
:
'成功'
,
message
:
'创建成功'
,
type
:
'success'
,
duration
:
2000
})
})
})
}
)
},
onCancel
()
{
this
.
formEdit
=
true
this
.
formStatus
=
''
},
resetForm
()
{
this
.
form
=
{
parentId
:
this
.
currentId
,
}
,
onCancel
()
{
this
.
formEdit
=
true
this
.
formStatus
=
''
},
resetForm
()
{
this
.
form
=
{
parentId
:
this
.
currentId
,
}
}
}
}
}
</
script
>
src/views/admin/dict/index.vue
View file @
05842014
...
...
@@ -35,13 +35,15 @@
icon=
"el-icon-check"
size=
"mini"
plain
@
click=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-button>
@
click=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-button>
<el-button
type=
"text"
v-if=
"permissions.sys_dict_del"
icon=
"el-icon-delete"
size=
"mini"
plain
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -49,117 +51,117 @@
</template>
<
script
>
import
{
fetchList
,
addObj
,
putObj
,
delObj
}
from
'@/api/admin/dict'
import
{
tableOption
}
from
'@/const/crud/admin/dict'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'dict'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
addObj
,
delObj
,
fetchList
,
putObj
}
from
'@/api/admin/dict'
import
{
tableOption
}
from
'@/const/crud/admin/dict'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'dict'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
created
()
{
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
mounted
:
function
()
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
computed
:
{
...
mapGetters
([
'permissions'
]
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除标签名为"'
+
row
.
label
+
'",数据类型为"'
+
row
.
type
+
'"的数据项?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
return
delObj
(
row
)
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
.
then
(()
=>
{
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除标签名为"'
+
row
.
label
+
'",数据类型为"'
+
row
.
type
+
'"的数据项?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
)
}).
then
(()
=>
{
this
.
getList
(
this
.
page
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
}).
catch
(
function
()
{
})
.
catch
(
function
()
{
})
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(()
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(()
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
this
.
getList
(
this
.
page
)
done
()
})
this
.
getList
(
this
.
page
)
done
()
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
(
{
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
this
.
getList
(
this
.
page
)
done
()
})
this
.
getList
(
this
.
page
)
done
()
})
},
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/admin/log/index.vue
View file @
05842014
...
...
@@ -33,7 +33,8 @@
v-if=
"permissions.sys_log_del"
icon=
"el-icon-delete"
size=
"mini"
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -41,79 +42,79 @@
</template>
<
script
>
import
{
fetchList
,
delObj
}
from
'@/api/admin/log'
import
{
tableOption
}
from
'@/const/crud/admin/log'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'log'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
descs
:
'create_time'
,
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
delObj
,
fetchList
}
from
'@/api/admin/log'
import
{
tableOption
}
from
'@/const/crud/admin/log'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'log'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
created
()
{
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为"'
+
row
.
id
+
'"的日志?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
return
delObj
(
row
.
id
)
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
descs
:
'create_time'
,
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
.
then
(
data
=>
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为"'
+
row
.
id
+
'"的日志?'
,
'警告'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
.
id
)
}).
then
(
data
=>
{
this
.
getList
(
this
.
page
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
}).
catch
(
function
(
err
)
{
})
.
catch
(
function
(
err
)
{
})
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/admin/menu/index.vue
View file @
05842014
...
...
@@ -23,15 +23,18 @@
<el-button
type=
"primary"
v-if=
"menuManager_btn_add"
icon=
"plus"
@
click=
"handlerAdd"
>
添加
</el-button>
@
click=
"handlerAdd"
>
添加
</el-button>
<el-button
type=
"primary"
v-if=
"menuManager_btn_edit"
icon=
"edit"
@
click=
"handlerEdit"
>
编辑
</el-button>
@
click=
"handlerEdit"
>
编辑
</el-button>
<el-button
type=
"primary"
v-if=
"menuManager_btn_del"
icon=
"delete"
@
click=
"handleDelete"
>
删除
</el-button>
@
click=
"handleDelete"
>
删除
</el-button>
</el-button-group>
</div>
...
...
@@ -96,7 +99,7 @@
<el-option
v-for=
"item in typeOptions"
:key=
"item"
:label=
"item | typeFilter"
:value=
"item"
>
</el-option>
:value=
"item"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"排序"
...
...
@@ -130,12 +133,14 @@
</el-form-item>
<el-form-item
v-if=
"formStatus == 'update'"
>
<el-button
type=
"primary"
@
click=
"update"
>
更新
</el-button>
@
click=
"update"
>
更新
</el-button>
<el-button
@
click=
"onCancel"
>
取消
</el-button>
</el-form-item>
<el-form-item
v-if=
"formStatus == 'create'"
>
<el-button
type=
"primary"
@
click=
"create"
>
保存
</el-button>
@
click=
"create"
>
保存
</el-button>
<el-button
@
click=
"onCancel"
>
取消
</el-button>
</el-form-item>
</el-form>
...
...
@@ -147,202 +152,202 @@
</
template
>
<
script
>
import
{
addObj
,
delObj
,
fetchTree
,
getObj
,
putObj
}
from
'@/api/admin/menu'
import
{
mapGetters
}
from
'vuex'
import
{
addObj
,
delObj
,
fetchTree
,
getObj
,
putObj
}
from
'@/api/admin/menu'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'menu'
,
data
()
{
return
{
list
:
null
,
total
:
null
,
formEdit
:
true
,
formAdd
:
true
,
formStatus
:
''
,
showElement
:
false
,
typeOptions
:
[
'0'
,
'1'
],
methodOptions
:
[
'GET'
,
'POST'
,
'PUT'
,
'DELETE'
],
listQuery
:
{
name
:
undefined
},
treeData
:
[],
oExpandedKey
:
{
// key (from tree id) : expandedOrNot boolean
},
oTreeNodeChildren
:
{
// id1 : [children] (from tree node id1)
// id2 : [children] (from tree node id2)
},
aExpandedKeys
:
[],
defaultProps
:
{
children
:
'children'
,
label
:
'name'
},
labelPosition
:
'right'
,
form
:
{
permission
:
undefined
,
name
:
undefined
,
menuId
:
undefined
,
parentId
:
undefined
,
icon
:
undefined
,
sort
:
undefined
,
component
:
undefined
,
type
:
undefined
,
path
:
undefined
},
currentId
:
-
1
,
menuManager_btn_add
:
false
,
menuManager_btn_edit
:
false
,
menuManager_btn_del
:
false
}
},
filters
:
{
typeFilter
(
type
)
{
const
typeMap
=
{
0
:
'菜单'
,
1
:
'按钮'
export
default
{
name
:
'menu'
,
data
()
{
return
{
list
:
null
,
total
:
null
,
formEdit
:
true
,
formAdd
:
true
,
formStatus
:
''
,
showElement
:
false
,
typeOptions
:
[
'0'
,
'1'
],
methodOptions
:
[
'GET'
,
'POST'
,
'PUT'
,
'DELETE'
],
listQuery
:
{
name
:
undefined
},
treeData
:
[],
oExpandedKey
:
{
// key (from tree id) : expandedOrNot boolean
},
oTreeNodeChildren
:
{
// id1 : [children] (from tree node id1)
// id2 : [children] (from tree node id2)
},
aExpandedKeys
:
[],
defaultProps
:
{
children
:
'children'
,
label
:
'name'
},
labelPosition
:
'right'
,
form
:
{
permission
:
undefined
,
name
:
undefined
,
menuId
:
undefined
,
parentId
:
undefined
,
icon
:
undefined
,
sort
:
undefined
,
component
:
undefined
,
type
:
undefined
,
path
:
undefined
},
currentId
:
-
1
,
menuManager_btn_add
:
false
,
menuManager_btn_edit
:
false
,
menuManager_btn_del
:
false
}
return
typeMap
[
type
]
}
},
created
()
{
this
.
getList
()
this
.
menuManager_btn_add
=
this
.
permissions
[
'sys_menu_add'
]
this
.
menuManager_btn_edit
=
this
.
permissions
[
'sys_menu_edit'
]
this
.
menuManager_btn_del
=
this
.
permissions
[
'sys_menu_del'
]
},
computed
:
{
...
mapGetters
([
'elements'
,
'permissions'
])
},
methods
:
{
getList
()
{
fetchTree
(
this
.
listQuery
).
then
(
response
=>
{
this
.
treeData
=
response
.
data
.
data
})
},
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
return
data
.
label
.
indexOf
(
value
)
!==
-
1
},
nodeExpand
(
data
)
{
let
aChildren
=
data
.
children
if
(
aChildren
.
length
>
0
)
{
this
.
oExpandedKey
[
data
.
id
]
=
true
this
.
oTreeNodeChildren
[
data
.
id
]
=
aChildren
filters
:
{
typeFilter
(
type
)
{
const
typeMap
=
{
0
:
'菜单'
,
1
:
'按钮'
}
return
typeMap
[
type
]
}
this
.
setExpandedKeys
()
},
nodeCollapse
(
data
)
{
this
.
oExpandedKey
[
data
.
id
]
=
false
// 如果有子节点
this
.
treeRecursion
(
this
.
oTreeNodeChildren
[
data
.
id
],
(
oNode
)
=>
{
this
.
oExpandedKey
[
oNode
.
id
]
=
false
});
this
.
setExpandedKeys
()
created
()
{
this
.
getList
()
this
.
menuManager_btn_add
=
this
.
permissions
[
'sys_menu_add'
]
this
.
menuManager_btn_edit
=
this
.
permissions
[
'sys_menu_edit'
]
this
.
menuManager_btn_del
=
this
.
permissions
[
'sys_menu_del'
]
},
setExpandedKeys
()
{
let
oTemp
=
this
.
oExpandedKey
this
.
aExpandedKeys
=
[]
for
(
let
sKey
in
oTemp
)
{
if
(
oTemp
[
sKey
])
{
this
.
aExpandedKeys
.
push
(
parseInt
(
sKey
));
}
}
computed
:
{
...
mapGetters
([
'elements'
,
'permissions'
])
},
treeRecursion
(
aChildren
,
fnCallback
)
{
if
(
aChildren
)
{
for
(
let
i
=
0
;
i
<
aChildren
.
length
;
++
i
)
{
let
oNode
=
aChildren
[
i
]
fnCallback
&&
fnCallback
(
oNode
)
this
.
treeRecursion
(
oNode
.
children
,
fnCallback
)
methods
:
{
getList
()
{
fetchTree
(
this
.
listQuery
).
then
(
response
=>
{
this
.
treeData
=
response
.
data
.
data
})
},
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
return
data
.
label
.
indexOf
(
value
)
!==
-
1
},
nodeExpand
(
data
)
{
let
aChildren
=
data
.
children
if
(
aChildren
.
length
>
0
)
{
this
.
oExpandedKey
[
data
.
id
]
=
true
this
.
oTreeNodeChildren
[
data
.
id
]
=
aChildren
}
}
},
this
.
setExpandedKeys
()
},
nodeCollapse
(
data
)
{
this
.
oExpandedKey
[
data
.
id
]
=
false
// 如果有子节点
this
.
treeRecursion
(
this
.
oTreeNodeChildren
[
data
.
id
],
(
oNode
)
=>
{
this
.
oExpandedKey
[
oNode
.
id
]
=
false
});
this
.
setExpandedKeys
()
},
setExpandedKeys
()
{
let
oTemp
=
this
.
oExpandedKey
this
.
aExpandedKeys
=
[]
for
(
let
sKey
in
oTemp
)
{
if
(
oTemp
[
sKey
])
{
this
.
aExpandedKeys
.
push
(
parseInt
(
sKey
));
}
}
},
treeRecursion
(
aChildren
,
fnCallback
)
{
if
(
aChildren
)
{
for
(
let
i
=
0
;
i
<
aChildren
.
length
;
++
i
)
{
let
oNode
=
aChildren
[
i
]
fnCallback
&&
fnCallback
(
oNode
)
this
.
treeRecursion
(
oNode
.
children
,
fnCallback
)
}
}
},
getNodeData
(
data
)
{
if
(
!
this
.
formEdit
)
{
this
.
formStatus
=
'update'
}
getObj
(
data
.
id
).
then
(
response
=>
{
this
.
form
=
response
.
data
.
data
})
this
.
currentId
=
data
.
id
this
.
showElement
=
true
},
handlerEdit
()
{
if
(
this
.
form
.
menuId
)
{
getNodeData
(
data
)
{
if
(
!
this
.
formEdit
)
{
this
.
formStatus
=
'update'
}
getObj
(
data
.
id
).
then
(
response
=>
{
this
.
form
=
response
.
data
.
data
})
this
.
currentId
=
data
.
id
this
.
showElement
=
true
},
handlerEdit
()
{
if
(
this
.
form
.
menuId
)
{
this
.
formEdit
=
false
this
.
formStatus
=
'update'
}
},
handlerAdd
()
{
this
.
resetForm
()
this
.
formEdit
=
false
this
.
formStatus
=
'update'
}
},
handlerAdd
()
{
this
.
resetForm
()
this
.
formEdit
=
false
this
.
formStatus
=
'create'
},
handleDelete
()
{
this
.
$confirm
(
'此操作将永久删除, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
delObj
(
this
.
currentId
).
then
(()
=>
{
this
.
formStatus
=
'create'
},
handleDelete
()
{
this
.
$confirm
(
'此操作将永久删除, 是否继续?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
delObj
(
this
.
currentId
).
then
(()
=>
{
this
.
getList
()
this
.
resetForm
()
this
.
onCancel
()
this
.
$notify
({
title
:
'成功'
,
message
:
'删除成功'
,
type
:
'success'
,
duration
:
2000
})
})
})
},
update
()
{
putObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
resetForm
()
this
.
onCancel
()
this
.
$notify
({
title
:
'成功'
,
message
:
'
删除
成功'
,
message
:
'
更新
成功'
,
type
:
'success'
,
duration
:
2000
})
})
})
},
update
()
{
putObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
$notify
({
title
:
'成功'
,
message
:
'更新成功'
,
type
:
'success'
,
duration
:
2000
})
})
},
create
()
{
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
$notify
({
title
:
'成功'
,
message
:
'创建成功'
,
type
:
'success'
,
duration
:
2000
},
create
()
{
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
()
this
.
$notify
({
title
:
'成功'
,
message
:
'创建成功'
,
type
:
'success'
,
duration
:
2000
})
})
}
)
},
onCancel
()
{
this
.
formEdit
=
true
this
.
formStatus
=
''
},
resetForm
()
{
this
.
form
=
{
permission
:
undefined
,
name
:
undefined
,
menuId
:
undefine
d
,
parentId
:
this
.
currentI
d
,
icon
:
undefined
,
sor
t
:
undefined
,
component
:
undefined
,
type
:
undefined
,
path
:
undefined
}
,
onCancel
()
{
this
.
formEdit
=
true
this
.
formStatus
=
''
},
resetForm
()
{
this
.
form
=
{
permission
:
undefined
,
name
:
undefined
,
menuId
:
undefined
,
parentId
:
this
.
currentI
d
,
icon
:
undefine
d
,
sort
:
undefined
,
componen
t
:
undefined
,
type
:
undefined
,
path
:
undefined
}
}
}
}
}
</
script
>
src/views/admin/role/index.vue
View file @
05842014
...
...
@@ -37,7 +37,8 @@
@
click=
"handleCreate"
size=
"small"
type=
"primary"
icon=
"el-icon-edit"
>
添加
</el-button>
icon=
"el-icon-edit"
>
添加
</el-button>
</
template
>
<
template
slot=
"menu"
slot-scope=
"scope"
>
...
...
@@ -80,194 +81,188 @@
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"updatePermession(roleId, roleCode)"
>
更 新
</el-button>
@
click=
"updatePermession(roleId, roleCode)"
>
更 新
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
{
fetchList
,
getObj
,
addObj
,
putObj
,
delObj
,
permissionUpd
,
fetchRoleTree
}
from
'@/api/admin/role'
import
{
fetchTree
}
from
'@/api/admin/menu'
import
{
mapGetters
}
from
'vuex'
import
{
tableOption
}
from
'@/const/crud/admin/role'
export
default
{
name
:
'table_role'
,
data
()
{
return
{
tableOption
:
tableOption
,
treeData
:
[],
checkedKeys
:
[],
defaultProps
:
{
label
:
"name"
,
value
:
'id'
},
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
menuIds
:
''
,
list
:
[],
listLoading
:
true
,
form
:
{},
roleId
:
undefined
,
roleCode
:
undefined
,
rolesOptions
:
undefined
,
dialogPermissionVisible
:
false
,
roleManager_btn_add
:
false
,
roleManager_btn_edit
:
false
,
roleManager_btn_del
:
false
,
roleManager_btn_perm
:
false
}
},
created
()
{
this
.
roleManager_btn_add
=
this
.
permissions
[
'sys_role_add'
]
this
.
roleManager_btn_edit
=
this
.
permissions
[
'sys_role_edit'
]
this
.
roleManager_btn_del
=
this
.
permissions
[
'sys_role_del'
]
this
.
roleManager_btn_perm
=
this
.
permissions
[
'sys_role_perm'
]
},
computed
:
{
...
mapGetters
([
'elements'
,
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
listLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
list
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
listLoading
=
false
})
},
handleRefreshChange
()
{
this
.
getList
(
this
.
page
)
},
handleFilter
(
param
)
{
this
.
page
.
page
=
1
;
this
.
getList
(
this
.
page
,
param
);
},
handleCreate
()
{
this
.
$refs
.
crud
.
rowAdd
();
},
handleOpenBefore
(
show
,
type
)
{
show
();
},
handleUpdate
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
);
},
handlePermission
(
row
)
{
fetchRoleTree
(
row
.
roleId
)
.
then
(
response
=>
{
this
.
checkedKeys
=
response
.
data
return
fetchTree
()
})
.
then
(
response
=>
{
this
.
treeData
=
response
.
data
.
data
// 解析出所有的太监节点
this
.
checkedKeys
=
this
.
resolveAllEunuchNodeId
(
this
.
treeData
,
this
.
checkedKeys
,
[])
this
.
dialogStatus
=
'permission'
this
.
dialogPermissionVisible
=
true
this
.
roleId
=
row
.
roleId
this
.
roleCode
=
row
.
roleCode
})
},
/**
* 解析出所有的太监节点id
* @param json 待解析的json串
* @param idArr 原始节点数组
* @param temp 临时存放节点id的数组
* @return 太监节点id数组
*/
resolveAllEunuchNodeId
(
json
,
idArr
,
temp
)
{
for
(
let
i
=
0
;
i
<
json
.
length
;
i
++
)
{
const
item
=
json
[
i
]
// 存在子节点,递归遍历;不存在子节点,将json的id添加到临时数组中
if
(
item
.
children
&&
item
.
children
.
length
!==
0
)
{
this
.
resolveAllEunuchNodeId
(
item
.
children
,
idArr
,
temp
)
}
else
{
temp
.
push
(
idArr
.
filter
(
id
=>
id
===
item
.
id
))
}
import
{
addObj
,
delObj
,
fetchList
,
fetchRoleTree
,
getObj
,
permissionUpd
,
putObj
}
from
'@/api/admin/role'
import
{
fetchTree
}
from
'@/api/admin/menu'
import
{
mapGetters
}
from
'vuex'
import
{
tableOption
}
from
'@/const/crud/admin/role'
export
default
{
name
:
'table_role'
,
data
()
{
return
{
tableOption
:
tableOption
,
treeData
:
[],
checkedKeys
:
[],
defaultProps
:
{
label
:
"name"
,
value
:
'id'
},
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
menuIds
:
''
,
list
:
[],
listLoading
:
true
,
form
:
{},
roleId
:
undefined
,
roleCode
:
undefined
,
rolesOptions
:
undefined
,
dialogPermissionVisible
:
false
,
roleManager_btn_add
:
false
,
roleManager_btn_edit
:
false
,
roleManager_btn_del
:
false
,
roleManager_btn_perm
:
false
}
return
temp
},
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
return
data
.
label
.
indexOf
(
value
)
!==
-
1
},
getNodeData
(
data
,
done
)
{
done
();
created
()
{
this
.
roleManager_btn_add
=
this
.
permissions
[
'sys_role_add'
]
this
.
roleManager_btn_edit
=
this
.
permissions
[
'sys_role_edit'
]
this
.
roleManager_btn_del
=
this
.
permissions
[
'sys_role_del'
]
this
.
roleManager_btn_perm
=
this
.
permissions
[
'sys_role_perm'
]
},
handleDelete
(
row
,
index
)
{
delObj
(
row
.
roleId
).
then
(
response
=>
{
this
.
list
.
splice
(
index
,
1
);
this
.
$notify
({
title
:
'成功'
,
message
:
'删除成功'
,
type
:
'success'
,
duration
:
2000
})
})
computed
:
{
...
mapGetters
([
'elements'
,
'permissions'
])
},
create
(
row
,
done
,
loading
)
{
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
(
this
.
page
)
done
();
this
.
$notify
({
title
:
'成功'
,
message
:
'创建成功'
,
type
:
'success'
,
duration
:
2000
methods
:
{
getList
(
page
,
params
)
{
this
.
listLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
list
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
listLoading
=
false
})
}).
catch
(()
=>
{
loading
();
});
},
update
(
row
,
index
,
done
,
loading
)
{
putObj
(
this
.
form
).
then
(()
=>
{
},
handleRefreshChange
()
{
this
.
getList
(
this
.
page
)
done
();
this
.
$notify
({
title
:
'成功'
,
message
:
'修改成功'
,
type
:
'success'
,
duration
:
2000
})
}).
catch
(()
=>
{
loading
();
});
},
updatePermession
(
roleId
,
roleCode
)
{
this
.
menuIds
=
''
this
.
menuIds
=
this
.
$refs
.
menuTree
.
getCheckedKeys
().
join
(
','
).
concat
(
','
).
concat
(
this
.
$refs
.
menuTree
.
getHalfCheckedKeys
().
join
(
','
))
permissionUpd
(
roleId
,
this
.
menuIds
).
then
(()
=>
{
this
.
dialogPermissionVisible
=
false
fetchTree
()
},
handleFilter
(
param
)
{
this
.
page
.
page
=
1
;
this
.
getList
(
this
.
page
,
param
);
},
handleCreate
()
{
this
.
$refs
.
crud
.
rowAdd
();
},
handleOpenBefore
(
show
,
type
)
{
show
();
},
handleUpdate
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
);
},
handlePermission
(
row
)
{
fetchRoleTree
(
row
.
roleId
)
.
then
(
response
=>
{
this
.
form
=
response
.
data
.
data
return
fetch
RoleTree
(
roleId
)
this
.
checkedKeys
=
response
.
data
return
fetch
Tree
(
)
})
.
then
(
response
=>
{
this
.
checkedKeys
=
response
.
data
this
.
$notify
({
title
:
'成功'
,
message
:
'修改成功'
,
type
:
'success'
,
duration
:
2000
})
this
.
treeData
=
response
.
data
.
data
// 解析出所有的太监节点
this
.
checkedKeys
=
this
.
resolveAllEunuchNodeId
(
this
.
treeData
,
this
.
checkedKeys
,
[])
this
.
dialogStatus
=
'permission'
this
.
dialogPermissionVisible
=
true
this
.
roleId
=
row
.
roleId
this
.
roleCode
=
row
.
roleCode
})
},
/**
* 解析出所有的太监节点id
* @param json 待解析的json串
* @param idArr 原始节点数组
* @param temp 临时存放节点id的数组
* @return 太监节点id数组
*/
resolveAllEunuchNodeId
(
json
,
idArr
,
temp
)
{
for
(
let
i
=
0
;
i
<
json
.
length
;
i
++
)
{
const
item
=
json
[
i
]
// 存在子节点,递归遍历;不存在子节点,将json的id添加到临时数组中
if
(
item
.
children
&&
item
.
children
.
length
!==
0
)
{
this
.
resolveAllEunuchNodeId
(
item
.
children
,
idArr
,
temp
)
}
else
{
temp
.
push
(
idArr
.
filter
(
id
=>
id
===
item
.
id
))
}
}
return
temp
},
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
return
data
.
label
.
indexOf
(
value
)
!==
-
1
},
getNodeData
(
data
,
done
)
{
done
();
},
handleDelete
(
row
,
index
)
{
delObj
(
row
.
roleId
).
then
(
response
=>
{
this
.
list
.
splice
(
index
,
1
);
this
.
$notify
({
title
:
'成功'
,
message
:
'删除成功'
,
type
:
'success'
,
duration
:
2000
})
})
},
create
(
row
,
done
,
loading
)
{
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
(
this
.
page
)
done
();
this
.
$notify
({
title
:
'成功'
,
message
:
'创建成功'
,
type
:
'success'
,
duration
:
2000
})
}).
catch
(()
=>
{
loading
();
});
},
update
(
row
,
index
,
done
,
loading
)
{
putObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
(
this
.
page
)
done
();
this
.
$notify
({
title
:
'成功'
,
message
:
'修改成功'
,
type
:
'success'
,
duration
:
2000
})
})
}).
catch
(()
=>
{
loading
();
});
},
updatePermession
(
roleId
,
roleCode
)
{
this
.
menuIds
=
''
this
.
menuIds
=
this
.
$refs
.
menuTree
.
getCheckedKeys
().
join
(
','
).
concat
(
','
).
concat
(
this
.
$refs
.
menuTree
.
getHalfCheckedKeys
().
join
(
','
))
permissionUpd
(
roleId
,
this
.
menuIds
).
then
(()
=>
{
this
.
dialogPermissionVisible
=
false
fetchTree
()
.
then
(
response
=>
{
this
.
form
=
response
.
data
.
data
return
fetchRoleTree
(
roleId
)
})
.
then
(
response
=>
{
this
.
checkedKeys
=
response
.
data
this
.
$notify
({
title
:
'成功'
,
message
:
'修改成功'
,
type
:
'success'
,
duration
:
2000
})
})
})
}
}
}
}
</
script
>
src/views/admin/route/index.vue
View file @
05842014
...
...
@@ -16,68 +16,68 @@
-->
<
template
>
<div
class=
"execution"
>
<basic-container>
<el-alert
title=
"路由配置是非常专业的事情,不建议非工程师操作"
type=
"warning"
>
</el-alert>
<vue-json-editor
v-model=
"json"
:show-btns=
"false"
></vue-json-editor>
<div
align=
"center"
>
<el-button
@
click=
"edit()"
>
更新
</el-button>
</div>
</basic-container>
</div>
<div
class=
"execution"
>
<basic-container>
<el-alert
title=
"路由配置是非常专业的事情,不建议非工程师操作"
type=
"warning"
>
</el-alert>
<vue-json-editor
v-model=
"json"
:show-btns=
"false"
></vue-json-editor>
<div
align=
"center"
>
<el-button
@
click=
"edit()"
>
更新
</el-button>
</div>
</basic-container>
</div>
</
template
>
<
script
>
import
vueJsonEditor
from
'vue-json-editor'
import
{
fetchList
,
putObj
,
fallback
}
from
'@/api/admin/route'
import
vueJsonEditor
from
'vue-json-editor'
import
{
fallback
,
fetchList
,
putObj
}
from
'@/api/admin/route'
export
default
{
data
()
{
return
{
json
:
null
}
},
// 注入vueJsonEditor组件
components
:
{
vueJsonEditor
},
export
default
{
data
()
{
return
{
json
:
null
}
},
created
()
{
this
.
getList
()
},
// 注入vueJsonEditor组件
components
:
{
vueJsonEditor
},
methods
:
{
getList
()
{
fetchList
().
then
(
response
=>
{
let
result
=
response
.
data
.
data
;
for
(
var
i
=
0
;
i
<
result
.
length
;
i
++
)
{
let
route
=
result
[
i
]
if
(
route
.
predicates
){
let
predicates
=
route
.
predicates
route
.
predicates
=
JSON
.
parse
(
predicates
)
}
if
(
route
.
filters
){
let
filters
=
route
.
filters
route
.
filters
=
JSON
.
parse
(
filters
)
}
}
this
.
json
=
result
})
},
created
()
{
this
.
getList
()
},
edit
()
{
putObj
(
this
.
json
).
then
(
response
=>
{
this
.
$notify
(
{
title
:
'成功'
,
message
:
'更新成功'
,
type
:
'success'
,
duration
:
2000
})
}
)
methods
:
{
getList
()
{
fetchList
().
then
(
response
=>
{
let
result
=
response
.
data
.
data
;
for
(
var
i
=
0
;
i
<
result
.
length
;
i
++
)
{
let
route
=
result
[
i
]
if
(
route
.
predicates
)
{
let
predicates
=
route
.
predicates
route
.
predicates
=
JSON
.
parse
(
predicates
)
}
}
if
(
route
.
filters
)
{
let
filters
=
route
.
filters
route
.
filters
=
JSON
.
parse
(
filters
)
}
}
this
.
json
=
result
})
},
edit
()
{
putObj
(
this
.
json
).
then
(
response
=>
{
this
.
$notify
({
title
:
'成功'
,
message
:
'更新成功'
,
type
:
'success'
,
duration
:
2000
})
})
}
}
}
</
script
>
src/views/admin/social/index.vue
View file @
05842014
...
...
@@ -33,8 +33,9 @@
<el-button
type=
"primary"
@
click=
"handleAdd"
size=
"small"
v-if=
"permissions.generator_syssocialdetails_add"
>
新 增
</el-button>
<br
/><br
/>
v-if=
"permissions.generator_syssocialdetails_add"
>
新 增
</el-button>
<br/><br/>
</
template
>
<
template
slot-scope=
"scope"
slot=
"menu"
>
...
...
@@ -43,13 +44,15 @@
icon=
"el-icon-check"
size=
"small"
plain
@
click=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-button>
@
click=
"handleEdit(scope.row,scope.index)"
>
编辑
</el-button>
<el-button
type=
"text"
v-if=
"permissions.generator_syssocialdetails_del"
icon=
"el-icon-delete"
size=
"small"
plain
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -57,66 +60,66 @@
</template>
<
script
>
import
{
fetchList
,
getObj
,
addObj
,
putObj
,
delObj
}
from
'@/api/admin/sys-social-details'
import
{
tableOption
}
from
'@/const/crud/admin/sys-social-details'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'sys-social-details'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
addObj
,
delObj
,
fetchList
,
getObj
,
putObj
}
from
'@/api/admin/sys-social-details'
import
{
tableOption
}
from
'@/const/crud/admin/sys-social-details'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'sys-social-details'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
created
()
{
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
mounted
:
function
()
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
computed
:
{
...
mapGetters
([
'permissions'
]
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
id
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
return
delObj
(
row
.
id
)
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
.
then
(
data
=>
{
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
id
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
.
id
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
...
...
@@ -124,60 +127,60 @@ export default {
type
:
'success'
})
this
.
refreshChange
()
}).
catch
(
function
(
err
)
{
})
.
catch
(
function
(
err
)
{
})
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
this
.
refreshChange
()
done
()
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(()
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
this
.
refreshChange
()
done
()
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(()
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
this
.
refreshChange
()
done
()
})
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
/**
* 搜索回调
*/
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/admin/token/index.vue
View file @
05842014
...
...
@@ -33,7 +33,8 @@
icon=
"el-icon-delete"
size=
"mini"
plain
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -41,72 +42,72 @@
</template>
<
script
>
import
{
fetchList
,
delObj
}
from
'@/api/admin/token'
import
{
tableOption
}
from
'@/const/crud/admin/token'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'token'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
delObj
,
fetchList
}
from
'@/api/admin/token'
import
{
tableOption
}
from
'@/const/crud/admin/token'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'token'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
created
()
{
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
token_value
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
return
delObj
(
row
.
token_value
)
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
.
then
(
data
=>
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
token_value
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
.
token_value
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
}).
catch
(
function
(
err
)
{
})
.
catch
(
function
(
err
)
{
})
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/admin/user/index.vue
View file @
05842014
...
...
@@ -50,7 +50,8 @@
@
click=
"handleCreate"
size=
"small"
type=
"primary"
icon=
"el-icon-edit"
>
添加
</el-button>
icon=
"el-icon-edit"
>
添加
</el-button>
</
template
>
<
template
slot=
"username"
slot-scope=
"scope"
>
...
...
@@ -112,209 +113,202 @@
</template>
<
script
>
import
{
fetchList
,
getObj
,
addObj
,
putObj
,
delObj
}
from
"@/api/admin/user"
;
import
{
deptRoleList
}
from
"@/api/admin/role"
;
import
{
fetchDeptTree
}
from
"@/api/admin/dept"
;
import
{
tableOption
}
from
'@/const/crud/admin/user'
;
import
{
mapGetters
}
from
"vuex"
;
import
{
constants
}
from
'fs'
;
import
{
connect
}
from
'tls'
;
export
default
{
name
:
"table_user"
,
data
()
{
return
{
treeOption
:
{
nodeKey
:
'id'
,
addBtn
:
false
,
menu
:
false
,
props
:
{
label
:
'name'
,
value
:
'id'
}
},
treeData
:
[],
option
:
tableOption
,
treeDeptData
:
[],
checkedKeys
:
[],
roleProps
:
{
label
:
"roleName"
,
value
:
'roleId'
},
defaultProps
:
{
label
:
"name"
,
value
:
'id'
,
},
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
,
// 每页显示多少条,
isAsc
:
false
//是否倒序
},
list
:
[],
listLoading
:
true
,
role
:
[],
form
:
{},
rolesOptions
:
[],
};
},
computed
:
{
...
mapGetters
([
"permissions"
])
},
watch
:
{
role
()
{
this
.
form
.
role
=
this
.
role
}
},
filters
:
{
statusFilter
(
status
)
{
const
statusMap
=
{
0
:
"有效"
,
1
:
"无效"
,
9
:
"锁定"
import
{
addObj
,
delObj
,
fetchList
,
getObj
,
putObj
}
from
"@/api/admin/user"
;
import
{
deptRoleList
}
from
"@/api/admin/role"
;
import
{
fetchDeptTree
}
from
"@/api/admin/dept"
;
import
{
tableOption
}
from
'@/const/crud/admin/user'
;
import
{
mapGetters
}
from
"vuex"
;
import
{
constants
}
from
'fs'
;
import
{
connect
}
from
'tls'
;
export
default
{
name
:
"table_user"
,
data
()
{
return
{
treeOption
:
{
nodeKey
:
'id'
,
addBtn
:
false
,
menu
:
false
,
props
:
{
label
:
'name'
,
value
:
'id'
}
},
treeData
:
[],
option
:
tableOption
,
treeDeptData
:
[],
checkedKeys
:
[],
roleProps
:
{
label
:
"roleName"
,
value
:
'roleId'
},
defaultProps
:
{
label
:
"name"
,
value
:
'id'
,
},
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
,
// 每页显示多少条,
isAsc
:
false
//是否倒序
},
list
:
[],
listLoading
:
true
,
role
:
[],
form
:
{},
rolesOptions
:
[],
};
return
statusMap
[
status
];
}
},
created
()
{
this
.
sys_user_add
=
this
.
permissions
[
"sys_user_add"
];
this
.
sys_user_edit
=
this
.
permissions
[
"sys_user_edit"
];
this
.
sys_user_del
=
this
.
permissions
[
"sys_user_del"
];
this
.
init
();
},
methods
:
{
init
()
{
fetchDeptTree
().
then
(
response
=>
{
this
.
treeData
=
response
.
data
.
data
;
});
},
nodeClick
(
data
)
{
this
.
page
.
page
=
1
;
this
.
getList
(
this
.
page
,
{
deptId
:
data
.
id
});
},
getList
(
page
,
params
)
{
this
.
listLoading
=
true
;
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
list
=
response
.
data
.
data
.
records
;
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
listLoading
=
false
;
});
},
getNodeData
(
data
)
{
deptRoleList
().
then
(
response
=>
{
this
.
rolesOptions
=
response
.
data
.
data
;
});
},
handleDept
()
{
fetchDeptTree
().
then
(
response
=>
{
this
.
treeDeptData
=
response
.
data
.
data
;
});
},
handleFilter
(
param
)
{
this
.
page
.
page
=
1
;
this
.
getList
(
this
.
page
,
param
);
computed
:
{
...
mapGetters
([
"permissions"
])
},
handleRefreshChange
()
{
this
.
getList
(
this
.
page
)
watch
:
{
role
()
{
this
.
form
.
role
=
this
.
role
}
},
handleCreate
()
{
this
.
$refs
.
crud
.
rowAdd
();
created
()
{
this
.
sys_user_add
=
this
.
permissions
[
"sys_user_add"
];
this
.
sys_user_edit
=
this
.
permissions
[
"sys_user_edit"
];
this
.
sys_user_del
=
this
.
permissions
[
"sys_user_del"
];
this
.
init
();
},
handleOpenBefore
(
show
,
type
)
{
window
.
boxType
=
type
;
this
.
handleDept
();
if
([
'edit'
,
'views'
].
includes
(
type
))
{
this
.
role
=
[];
for
(
var
i
=
0
;
i
<
this
.
form
.
roleList
.
length
;
i
++
)
{
this
.
role
[
i
]
=
this
.
form
.
roleList
[
i
].
roleId
;
}
methods
:
{
init
()
{
fetchDeptTree
().
then
(
response
=>
{
this
.
treeData
=
response
.
data
.
data
;
});
},
nodeClick
(
data
)
{
this
.
page
.
page
=
1
;
this
.
getList
(
this
.
page
,
{
deptId
:
data
.
id
});
},
getList
(
page
,
params
)
{
this
.
listLoading
=
true
;
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
list
=
response
.
data
.
data
.
records
;
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
listLoading
=
false
;
});
},
getNodeData
(
data
)
{
deptRoleList
().
then
(
response
=>
{
this
.
rolesOptions
=
response
.
data
.
data
;
});
}
else
if
(
type
===
'add'
)
{
this
.
role
=
[];
}
show
();
},
handleUpdate
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
);
this
.
form
.
password
=
undefined
},
create
(
row
,
done
,
loading
)
{
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
(
this
.
page
);
done
();
this
.
$notify
({
title
:
"成功"
,
message
:
"创建成功"
,
type
:
"success"
,
duration
:
2000
});
}).
catch
(()
=>
{
loading
();
});
},
update
(
row
,
index
,
done
,
loading
)
{
putObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
(
this
.
page
);
done
();
this
.
$notify
({
title
:
"成功"
,
message
:
"修改成功"
,
type
:
"success"
,
duration
:
2000
},
handleDept
()
{
fetchDeptTree
().
then
(
response
=>
{
this
.
treeDeptData
=
response
.
data
.
data
;
});
}).
catch
(()
=>
{
loading
();
});
},
deletes
(
row
,
index
)
{
this
.
$confirm
(
"此操作将永久删除该用户(用户名:"
+
row
.
username
+
"), 是否继续?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
},
handleFilter
(
param
)
{
this
.
page
.
page
=
1
;
this
.
getList
(
this
.
page
,
param
);
},
handleRefreshChange
()
{
this
.
getList
(
this
.
page
)
},
handleCreate
()
{
this
.
$refs
.
crud
.
rowAdd
();
},
handleOpenBefore
(
show
,
type
)
{
window
.
boxType
=
type
;
this
.
handleDept
();
if
([
'edit'
,
'views'
].
includes
(
type
))
{
this
.
role
=
[];
for
(
var
i
=
0
;
i
<
this
.
form
.
roleList
.
length
;
i
++
)
{
this
.
role
[
i
]
=
this
.
form
.
roleList
[
i
].
roleId
;
}
deptRoleList
().
then
(
response
=>
{
this
.
rolesOptions
=
response
.
data
.
data
;
});
}
else
if
(
type
===
'add'
)
{
this
.
role
=
[];
}
).
then
(()
=>
{
delObj
(
row
.
userId
)
.
then
(()
=>
{
this
.
list
.
splice
(
index
,
1
);
this
.
$notify
({
title
:
"成功"
,
message
:
"删除成功"
,
type
:
"success"
,
duration
:
2000
});
})
.
cache
(()
=>
{
this
.
$notify
({
title
:
"失败"
,
message
:
"删除失败"
,
type
:
"error"
,
duration
:
2000
});
show
();
},
handleUpdate
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
);
this
.
form
.
password
=
undefined
},
create
(
row
,
done
,
loading
)
{
addObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
(
this
.
page
);
done
();
this
.
$notify
({
title
:
"成功"
,
message
:
"创建成功"
,
type
:
"success"
,
duration
:
2000
});
});
}).
catch
(()
=>
{
loading
();
});
},
update
(
row
,
index
,
done
,
loading
)
{
putObj
(
this
.
form
).
then
(()
=>
{
this
.
getList
(
this
.
page
);
done
();
this
.
$notify
({
title
:
"成功"
,
message
:
"修改成功"
,
type
:
"success"
,
duration
:
2000
});
}).
catch
(()
=>
{
loading
();
});
},
deletes
(
row
,
index
)
{
this
.
$confirm
(
"此操作将永久删除该用户(用户名:"
+
row
.
username
+
"), 是否继续?"
,
"提示"
,
{
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
}
).
then
(()
=>
{
delObj
(
row
.
userId
)
.
then
(()
=>
{
this
.
list
.
splice
(
index
,
1
);
this
.
$notify
({
title
:
"成功"
,
message
:
"删除成功"
,
type
:
"success"
,
duration
:
2000
});
})
.
cache
(()
=>
{
this
.
$notify
({
title
:
"失败"
,
message
:
"删除失败"
,
type
:
"error"
,
duration
:
2000
});
});
});
}
}
}
};
};
</
script
>
<
style
lang=
"scss"
>
.user
{
height
:
100%
;
&
__tree
{
padding-top
:
3px
;
padding-right
:
20px
;
}
&
__main
{
.el-card__body
{
padding-top
:
0
;
.user
{
height
:
100%
;
&
__tree
{
padding-top
:
3px
;
padding-right
:
20px
;
}
&
__main
{
.el-card__body
{
padding-top
:
0
;
}
}
}
}
</
style
>
src/views/admin/user/info.vue
View file @
05842014
...
...
@@ -58,7 +58,8 @@
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submitForm('ruleForm2')"
>
提交
</el-button>
@
click=
"submitForm('ruleForm2')"
>
提交
</el-button>
<el-button
@
click=
"resetForm('ruleForm2')"
>
重置
</el-button>
</el-form-item>
</el-form>
...
...
@@ -71,91 +72,89 @@
<
script
>
import
{
openWindow
}
from
'@/util/util'
import
{
mapState
}
from
'vuex'
import
{
getToken
}
from
'@/util/auth'
import
ElFormItem
from
'element-ui/packages/form/src/form-item.vue'
import
request
from
'@/router/axios'
import
{
openWindow
}
from
'@/util/util'
import
{
mapState
}
from
'vuex'
import
{
getToken
}
from
'@/util/auth'
import
request
from
'@/router/axios'
export
default
{
components
:
{
ElFormItem
},
data
()
{
var
validatePass
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
ruleForm2
.
password
!==
''
)
{
if
(
value
===
''
)
{
callback
(
new
Error
(
'请再次输入密码'
))
}
else
if
(
value
!==
this
.
ruleForm2
.
newpassword1
)
{
callback
(
new
Error
(
'两次输入密码不一致!'
))
export
default
{
components
:
{
ElFormItem
},
data
()
{
var
validatePass
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
ruleForm2
.
password
!==
''
)
{
if
(
value
===
''
)
{
callback
(
new
Error
(
'请再次输入密码'
))
}
else
if
(
value
!==
this
.
ruleForm2
.
newpassword1
)
{
callback
(
new
Error
(
'两次输入密码不一致!'
))
}
else
{
callback
()
}
}
else
{
callback
()
}
}
else
{
callback
()
}
}
return
{
fileList
:
[]
,
show
:
false
,
headers
:
{
Authorization
:
'Bearer '
+
getToken
()
},
ruleForm2
:
{
username
:
''
,
password
:
''
,
newpassword1
:
''
,
newpassword2
:
''
},
rules2
:
{
password
:
[{
required
:
true
,
min
:
6
,
message
:
'原密码不能为空且不少于6位'
,
trigger
:
'change'
}],
newpassword1
:
[{
required
:
true
,
min
:
6
,
message
:
'新密码不能为空且不少于6位'
,
trigger
:
'change'
}],
newpassword2
:
[{
required
:
true
,
validator
:
validatePass
,
trigger
:
'blur'
}]
return
{
fileList
:
[],
show
:
false
,
headers
:
{
Authorization
:
'Bearer '
+
getToken
()
},
ruleForm2
:
{
username
:
''
,
password
:
''
,
newpassword1
:
''
,
newpassword2
:
''
},
rules2
:
{
password
:
[{
required
:
true
,
min
:
6
,
message
:
'原密码不能为空且不少于6位'
,
trigger
:
'change'
}],
newpassword1
:
[{
required
:
true
,
min
:
6
,
message
:
'新密码不能为空且不少于6位'
,
trigger
:
'change'
}],
newpassword2
:
[{
required
:
true
,
validator
:
validatePass
,
trigger
:
'blur'
}]
}
}
}
},
created
()
{
this
.
ruleForm2
.
username
=
this
.
userInfo
.
username
},
computed
:
{
...
mapState
({
userInfo
:
state
=>
state
.
user
.
userInfo
}),
},
methods
:
{
submitForm
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
valid
=>
{
if
(
valid
)
{
request
({
url
:
'/admin/user/edit'
,
method
:
'put'
,
data
:
this
.
ruleForm2
}).
then
(
response
=>
{
if
(
response
.
data
.
data
)
{
this
.
$notify
({
title
:
'成功'
,
message
:
'修改成功'
,
type
:
'success'
,
duration
:
2000
})
// 修改密码之后强制重新登录
if
(
this
.
ruleForm2
.
newpassword1
!==
''
)
{
this
.
$store
.
dispatch
(
'LogOut'
).
then
(()
=>
{
location
.
reload
()
// 为了重新实例化vue-router对象 避免bug
},
created
()
{
this
.
ruleForm2
.
username
=
this
.
userInfo
.
username
},
computed
:
{
...
mapState
({
userInfo
:
state
=>
state
.
user
.
userInfo
}),
},
methods
:
{
submitForm
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
valid
=>
{
if
(
valid
)
{
request
({
url
:
'/admin/user/edit'
,
method
:
'put'
,
data
:
this
.
ruleForm2
}).
then
(
response
=>
{
if
(
response
.
data
.
data
)
{
this
.
$notify
({
title
:
'成功'
,
message
:
'修改成功'
,
type
:
'success'
,
duration
:
2000
})
// 修改密码之后强制重新登录
if
(
this
.
ruleForm2
.
newpassword1
!==
''
)
{
this
.
$store
.
dispatch
(
'LogOut'
).
then
(()
=>
{
location
.
reload
()
// 为了重新实例化vue-router对象 避免bug
})
}
else
{
this
.
$router
.
push
({
path
:
'/'
})
}
}
else
{
this
.
$router
.
push
({
path
:
'/'
})
this
.
$notify
({
title
:
'失败'
,
message
:
response
.
data
.
msg
,
type
:
'error'
,
duration
:
2000
})
}
}
else
{
this
.
$notify
({
title
:
'失败'
,
message
:
response
.
data
.
msg
,
type
:
'error'
,
duration
:
2000
})
}
})
.
catch
(()
=>
{
}).
catch
(()
=>
{
this
.
$notify
({
title
:
'失败'
,
message
:
'修改失败'
,
...
...
@@ -163,38 +162,26 @@ export default {
duration
:
2000
})
})
}
else
{
return
false
}
else
{
return
false
}
})
},
resetForm
(
formName
)
{
this
.
$refs
[
formName
].
resetFields
()
},
handleClick
(
thirdpart
)
{
let
appid
,
client_id
,
redirect_uri
,
url
redirect_uri
=
encodeURIComponent
(
window
.
location
.
origin
+
'/#/authredirect?type=BIND'
)
if
(
thirdpart
===
'wechat'
)
{
appid
=
'wxd1678d3f83b1d83a'
url
=
'https://open.weixin.qq.com/connect/qrconnect?appid='
+
appid
+
'&redirect_uri='
+
redirect_uri
+
'&state='
+
appid
+
'&response_type=code&scope=snsapi_login#wechat_redirect'
}
else
if
(
thirdpart
===
'tencent'
)
{
client_id
=
'101322838'
url
=
'https://graph.qq.com/oauth2.0/authorize?response_type=code&state='
+
appid
+
'&client_id='
+
client_id
+
'&redirect_uri='
+
redirect_uri
}
})
},
resetForm
(
formName
)
{
this
.
$refs
[
formName
].
resetFields
()
},
toggleShow
()
{
this
.
show
=
!
this
.
show
},
/**
* upload success
*
* [param] jsonData 服务器返回数据,已进行json转码
* [param] field
*/
cropUploadSuccess
(
jsonData
)
{
this
.
$store
.
commit
(
'SET_AVATAR'
,
jsonData
.
filename
)
},
handleClick
(
thirdpart
)
{
let
appid
,
client_id
,
redirect_uri
,
url
redirect_uri
=
encodeURIComponent
(
window
.
location
.
origin
+
'/#/authredirect?type=BIND'
)
if
(
thirdpart
===
'wechat'
)
{
appid
=
'wxd1678d3f83b1d83a'
url
=
'https://open.weixin.qq.com/connect/qrconnect?appid='
+
appid
+
'&redirect_uri='
+
redirect_uri
+
'&state='
+
appid
+
'&response_type=code&scope=snsapi_login#wechat_redirect'
}
else
if
(
thirdpart
===
'tencent'
)
{
client_id
=
'101322838'
url
=
'https://graph.qq.com/oauth2.0/authorize?response_type=code&state='
+
appid
+
'&client_id='
+
client_id
+
'&redirect_uri='
+
redirect_uri
openWindow
(
url
,
thirdpart
,
540
,
540
)
}
openWindow
(
url
,
thirdpart
,
540
,
540
)
}
}
}
</
script
>
src/views/crud/index.vue
View file @
05842014
...
...
@@ -47,7 +47,7 @@
<a
:href=
'props.row.address'
target=
"_blank"
>
<img
:src=
"props.row.stars"
alt=
'star'
/>
alt=
'star'
/>
</a>
</el-form-item>
</el-form>
...
...
@@ -61,7 +61,7 @@
<a
:href=
'scope.row.git'
target=
"_blank"
>
<img
:src=
"scope.row.stars"
alt=
'star'
/>
alt=
'star'
/>
</a>
</
template
>
<
template
slot-scope=
"scope"
...
...
@@ -75,82 +75,87 @@
</template>
<
script
>
import
{
tableOption
}
from
'@/const/crud/option'
import
{
tableData
}
from
'@/const/crud/data'
export
default
{
name
:
'crud'
,
data
()
{
return
{
tableData
:
tableData
,
tableOption
:
tableOption
}
},
mounted
:
function
()
{
},
methods
:
{
handleDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除序号为'
+
row
.
username
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
})
.
catch
(
function
(
err
)
{
})
import
{
tableOption
}
from
'@/const/crud/option'
import
{
tableData
}
from
'@/const/crud/data'
export
default
{
name
:
'crud'
,
data
()
{
return
{
tableData
:
tableData
,
tableOption
:
tableOption
}
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
done
()
mounted
:
function
()
{
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
done
()
methods
:
{
handleDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除序号为'
+
row
.
username
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
})
.
catch
(
function
(
err
)
{
})
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
done
()
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
done
()
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.demo-table-expand
{
font-size
:
0
;
}
.demo-table-expand
label
{
width
:
90px
;
color
:
#99a9bf
;
}
.demo-table-expand
.el-form-item
{
margin-right
:
0
;
margin-bottom
:
0
;
width
:
50%
;
}
.demo-table-expand
{
font-size
:
0
;
}
.demo-table-expand
label
{
width
:
90px
;
color
:
#99a9bf
;
}
.demo-table-expand
.el-form-item
{
margin-right
:
0
;
margin-bottom
:
0
;
width
:
50%
;
}
</
style
>
src/views/daemon/execution-log/index.vue
View file @
05842014
...
...
@@ -35,7 +35,8 @@
icon=
"el-icon-delete"
size=
"small"
plain
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -43,9 +44,10 @@
</template>
<
script
>
import
{
fetchList
,
getObj
,
addObj
,
putObj
,
delObj
}
from
'@/api/daemon/execution-log'
import
{
tableOption
}
from
'@/const/crud/daemon/execution-log'
import
{
mapGetters
}
from
'vuex'
import
{
addObj
,
delObj
,
fetchList
,
getObj
,
putObj
}
from
'@/api/daemon/execution-log'
import
{
tableOption
}
from
'@/const/crud/daemon/execution-log'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'execution-log'
,
data
()
{
...
...
@@ -61,14 +63,15 @@
}
},
created
()
{
this
.
page
.
pageSize
=
20
;
this
.
page
.
pageSize
=
20
;
},
mounted
:
function
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
=
{})
{
getList
(
page
,
params
=
{})
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
...
...
@@ -85,7 +88,7 @@
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
},
handleEdit
(
row
,
index
)
{
...
...
@@ -94,17 +97,15 @@
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
id
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
return
delObj
(
row
.
id
)
})
.
then
(
data
=>
{
}).
then
(
function
()
{
return
delObj
(
row
.
id
)
}).
then
(
data
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
...
...
@@ -112,8 +113,8 @@
type
:
'success'
})
this
.
getList
(
this
.
page
)
}).
catch
(
function
(
err
)
{
})
.
catch
(
function
(
err
)
{
})
},
/**
* @title 数据更新
...
...
@@ -122,7 +123,7 @@
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
...
...
@@ -140,7 +141,7 @@
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(
data
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
...
...
src/views/daemon/status-trace-log/index.vue
View file @
05842014
...
...
@@ -36,7 +36,8 @@
icon=
"el-icon-delete"
size=
"small"
plain
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
@
click=
"handleDel(scope.row,scope.index)"
>
删除
</el-button>
</
template
>
</avue-crud>
</basic-container>
...
...
@@ -44,121 +45,121 @@
</template>
<
script
>
import
{
fetchList
,
addObj
,
putObj
,
delObj
}
from
'@/api/daemon/status-trace-log'
import
{
tableOption
}
from
'@/const/crud/daemon/status-trace-log'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'status-trace-log'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
addObj
,
delObj
,
fetchList
,
putObj
}
from
'@/api/daemon/status-trace-log'
import
{
tableOption
}
from
'@/const/crud/daemon/status-trace-log'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'status-trace-log'
,
data
()
{
return
{
tableData
:
[],
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
}
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
created
()
{
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
mounted
:
function
()
{
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
computed
:
{
...
mapGetters
([
'permissions'
]
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
clientId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(
function
()
{
return
delObj
(
row
.
clientId
)
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
.
then
(()
=>
{
},
/**
* @title 打开新增窗口
* @detail 调用crud的handleadd方法即可
*
**/
handleAdd
:
function
()
{
this
.
$refs
.
crud
.
rowAdd
()
},
handleEdit
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowEdit
(
row
,
index
)
},
handleDel
(
row
,
index
)
{
this
.
$refs
.
crud
.
rowDel
(
row
,
index
)
},
rowDel
:
function
(
row
,
index
)
{
var
_this
=
this
this
.
$confirm
(
'是否确认删除ID为'
+
row
.
clientId
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
function
()
{
return
delObj
(
row
.
clientId
)
}).
then
(()
=>
{
_this
.
tableData
.
splice
(
index
,
1
)
_this
.
$message
({
showClose
:
true
,
message
:
'删除成功'
,
type
:
'success'
})
}).
catch
(
function
()
{
})
.
catch
(
function
()
{
})
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(()
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
},
/**
* @title 数据更新
* @param row 为当前的数据
* @param index 为当前更新数据的行数
* @param done 为表单关闭函数
*
**/
handleUpdate
:
function
(
row
,
index
,
done
)
{
putObj
(
row
).
then
(()
=>
{
this
.
tableData
.
splice
(
index
,
1
,
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'修改成功'
,
type
:
'success'
})
done
()
})
done
()
})
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(()
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
({
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
},
/**
* @title 数据添加
* @param row 为当前的数据
* @param done 为表单关闭函数
*
**/
handleSave
:
function
(
row
,
done
)
{
addObj
(
row
).
then
(()
=>
{
this
.
tableData
.
push
(
Object
.
assign
({},
row
))
this
.
$message
(
{
showClose
:
true
,
message
:
'添加成功'
,
type
:
'success'
})
done
()
})
done
()
})
},
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/dashboard/index.vue
View file @
05842014
...
...
@@ -29,24 +29,25 @@
</
template
>
<
script
>
import
{
mapGetters
}
from
"vuex"
;
import
{
mapGetters
}
from
"vuex"
;
export
default
{
name
:
"dashboard"
,
computed
:
{
...
mapGetters
([
"name"
,
"roles"
])
}
};
export
default
{
name
:
"dashboard"
,
computed
:
{
...
mapGetters
([
"name"
,
"roles"
])
}
};
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.dashboard
{
&
-container
{
margin
:
30px
;
}
&
-text
{
font-size
:
30px
;
line-height
:
46px
;
.dashboard
{
&
-container
{
margin
:
30px
;
}
&
-text
{
font-size
:
30px
;
line-height
:
46px
;
}
}
}
</
style
>
src/views/gen/index.vue
View file @
05842014
...
...
@@ -29,10 +29,12 @@
<template
slot-scope=
"scope"
slot=
"menu"
>
<el-button
type=
"text"
v-if=
"permissions.sys_client_del"
icon=
"el-icon-check"
size=
"mini"
plain
@
click=
"handleDown(scope.row,scope.index)"
>
生成
</el-button>
@
click=
"handleDown(scope.row,scope.index)"
>
生成
</el-button>
</
template
>
</avue-crud>
...
...
@@ -53,64 +55,66 @@
</template>
<
script
>
import
{
fetchList
,
handleDown
}
from
'@/api/gen/gen'
import
{
tableOption
,
formOption
}
from
'@/const/crud/gen/gen'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'code-generator'
,
data
()
{
return
{
tableData
:
[],
formData
:
{},
box
:
false
,
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
,
formOption
:
formOption
}
},
created
()
{
},
mounted
:
function
()
{
},
computed
:
{
...
mapGetters
([
'permissions'
])
},
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
import
{
fetchList
,
handleDown
}
from
'@/api/gen/gen'
import
{
formOption
,
tableOption
}
from
'@/const/crud/gen/gen'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'client'
,
data
()
{
return
{
tableData
:
[],
formData
:
{},
box
:
false
,
page
:
{
total
:
0
,
// 总页数
currentPage
:
1
,
// 当前页数
pageSize
:
20
// 每页显示多少条
},
tableLoading
:
false
,
tableOption
:
tableOption
,
formOption
:
formOption
}
},
handleDown
:
function
(
row
,
index
)
{
this
.
formData
.
tableName
=
row
.
tableName
this
.
box
=
true
created
()
{
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
mounted
:
function
()
{
},
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
computed
:
{
...
mapGetters
([
'permissions'
]
)
},
gen
(
form
)
{
handleDown
(
this
.
formData
).
then
(
response
=>
{
methods
:
{
getList
(
page
,
params
)
{
this
.
tableLoading
=
true
fetchList
(
Object
.
assign
({
current
:
page
.
currentPage
,
size
:
page
.
pageSize
},
params
)).
then
(
response
=>
{
this
.
tableData
=
response
.
data
.
data
.
records
this
.
page
.
total
=
response
.
data
.
data
.
total
this
.
tableLoading
=
false
})
},
handleDown
:
function
(
row
,
index
)
{
this
.
formData
.
tableName
=
row
.
tableName
this
.
box
=
true
})
},
/**
* 刷新回调
*/
refreshChange
()
{
this
.
getList
(
this
.
page
)
},
searchChange
(
form
)
{
this
.
getList
(
this
.
page
,
form
)
},
gen
(
form
)
{
handleDown
(
this
.
formData
).
then
(()
=>
{
this
.
box
=
true
})
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/tx/index.vue
View file @
05842014
...
...
@@ -19,43 +19,44 @@
<div
class=
"execution"
>
<basic-container>
<avue-crud
:data=
"data"
:option=
"option"
/>
:option=
"option"
/>
</basic-container>
</div>
</
template
>
<
script
>
import
request
from
'@/router/axios'
export
default
{
data
()
{
return
{
obj
:
{},
data
:
[],
option
:
{
menu
:
false
,
page
:
false
,
addBtn
:
false
,
align
:
'center'
,
menuAlign
:
'center'
,
column
:
[
{
label
:
'属性名称'
,
prop
:
'key'
},
{
label
:
'属性值'
,
prop
:
'value'
}
]
import
request
from
'@/router/axios'
export
default
{
data
()
{
return
{
obj
:
{},
data
:
[],
option
:
{
menu
:
false
,
page
:
false
,
addBtn
:
false
,
align
:
'center'
,
menuAlign
:
'center'
,
column
:
[
{
label
:
'属性名称'
,
prop
:
'key'
},
{
label
:
'属性值'
,
prop
:
'value'
}
]
}
}
},
created
()
{
request
({
url
:
'/tx/admin/avueSetting'
,
method
:
'get'
}).
then
((
resp
)
=>
{
this
.
data
=
resp
.
data
})
}
},
created
()
{
request
({
url
:
'/tx/admin/avueSetting'
,
method
:
'get'
}).
then
((
resp
)
=>
{
this
.
data
=
resp
.
data
})
}
}
</
script
>
src/views/tx/model.vue
View file @
05842014
...
...
@@ -23,46 +23,47 @@
</div>
</
template
>
<
script
>
import
request
from
'@/router/axios'
export
default
{
data
()
{
return
{
obj
:
{},
data
:
[],
option
:
{
menu
:
false
,
page
:
false
,
addBtn
:
false
,
align
:
'center'
,
menuAlign
:
'center'
,
column
:
[
{
label
:
'模块名称'
,
prop
:
'model'
},
{
label
:
'唯一标示'
,
prop
:
'uniqueKey'
},
{
label
:
'模块地址'
,
prop
:
'ipAddress'
},
{
label
:
'管道名称'
,
prop
:
'channelName'
}
]
import
request
from
'@/router/axios'
export
default
{
data
()
{
return
{
obj
:
{},
data
:
[],
option
:
{
menu
:
false
,
page
:
false
,
addBtn
:
false
,
align
:
'center'
,
menuAlign
:
'center'
,
column
:
[
{
label
:
'模块名称'
,
prop
:
'model'
},
{
label
:
'唯一标示'
,
prop
:
'uniqueKey'
},
{
label
:
'模块地址'
,
prop
:
'ipAddress'
},
{
label
:
'管道名称'
,
prop
:
'channelName'
}
]
}
}
},
created
()
{
request
({
url
:
'/tx/admin/onlines'
,
method
:
'get'
}).
then
((
resp
)
=>
{
this
.
data
=
resp
.
data
})
}
},
created
()
{
request
({
url
:
'/tx/admin/onlines'
,
method
:
'get'
}).
then
((
resp
)
=>
{
this
.
data
=
resp
.
data
})
}
}
</
script
>
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