Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
web-template
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
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
张伯涛
web-template
Commits
9302af52
Commit
9302af52
authored
Jan 08, 2021
by
shen_yan_pu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善用户功能,角色数据权限
parent
e98cc3d2
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
124 additions
and
24 deletions
+124
-24
role.js
src/api/system/role.js
+9
-2
index.vue
src/views/system/role/index.vue
+114
-21
index.vue
src/views/system/user/index.vue
+1
-1
No files found.
src/api/system/role.js
View file @
9302af52
...
@@ -37,16 +37,23 @@ export function updateRole(data) {
...
@@ -37,16 +37,23 @@ export function updateRole(data) {
return
request
({
return
request
({
url
:
'/system/role/update/'
+
businessId
,
url
:
'/system/role/update/'
+
businessId
,
method
:
'put'
,
method
:
'put'
,
data
data
,
headers
:
{
'Content-Type'
:
'application/x-www-form-urlencoded'
}
})
})
}
}
// 角色数据权限
// 角色数据权限
export
function
dataScope
(
data
)
{
export
function
dataScope
(
data
)
{
data
=
Qs
.
stringify
(
data
)
return
request
({
return
request
({
url
:
'/system/role/dataScope'
,
url
:
'/system/role/dataScope'
,
method
:
'put'
,
method
:
'put'
,
data
data
,
headers
:
{
'Content-Type'
:
'application/x-www-form-urlencoded'
}
})
})
}
}
...
...
src/views/system/role/index.vue
View file @
9302af52
...
@@ -156,14 +156,19 @@
...
@@ -156,14 +156,19 @@
</el-radio-group>
</el-radio-group>
</el-form-item>
</el-form-item>
<el-form-item
label=
"菜单权限"
>
<el-form-item
label=
"菜单权限"
>
<el-checkbox
v-model=
"menuExpand"
@
change=
"handleCheckedTreeExpand($event, 'menu')"
>
展开/折叠
</el-checkbox>
<el-checkbox
v-model=
"menuNodeAll"
@
change=
"handleCheckedTreeNodeAll($event, 'menu')"
>
全选/全不选
</el-checkbox>
<el-checkbox
v-model=
"form.menuCheckStrictly"
@
change=
"handleCheckedTreeConnect($event, 'menu')"
>
父子联动
</el-checkbox>
<el-tree
<el-tree
ref=
"menu
"
class=
"tree-border
"
:data=
"menuOptions"
:data=
"menuOptions"
show-checkbox
show-checkbox
ref=
"menu"
node-key=
"id"
node-key=
"id"
:check-strictly=
"!form.menuCheckStrictly"
empty-text=
"加载中,请稍后"
empty-text=
"加载中,请稍后"
:props=
"defaultProps"
:props=
"defaultProps"
/
>
></el-tree
>
</el-form-item>
</el-form-item>
<el-form-item
label=
"备注"
>
<el-form-item
label=
"备注"
>
<el-input
v-model
.
trim=
"form.remark"
maxlength=
"200"
show-word-limit
type=
"textarea"
placeholder=
"请输入内容"
/>
<el-input
v-model
.
trim=
"form.remark"
maxlength=
"200"
show-word-limit
type=
"textarea"
placeholder=
"请输入内容"
/>
...
@@ -188,9 +193,9 @@
...
@@ -188,9 +193,9 @@
:tree-props=
"{children: 'children', hasChildren: 'hasChildren'}"
:tree-props=
"{children: 'children', hasChildren: 'hasChildren'}"
max-height=
"400px"
max-height=
"400px"
>
>
<el-form-item
label=
"权限字符"
>
<!-- <el-form-item label="权限字符">--
>
<el-input
v-model
.
trim=
"form.roleKey"
placeholder=
"请输入角色名称"
show-word-limit
:maxlength=
"30"
:disabled=
"true"
/
>
<!-- <el-input v-model.trim="form.roleKey" placeholder="请输入角色名称" show-word-limit :maxlength="30" :disabled="true" />--
>
</el-form-item
>
<!-- </el-form-item>--
>
<el-table-column
prop=
"menuName"
label=
"菜单名称"
:show-overflow-tooltip=
"true"
width=
"160"
></el-table-column>
<el-table-column
prop=
"menuName"
label=
"菜单名称"
:show-overflow-tooltip=
"true"
width=
"160"
></el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
...
@@ -204,6 +209,40 @@
...
@@ -204,6 +209,40 @@
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-form>
</el-form>
<div
class=
"dividerStyle"
>
<el-divider
direction=
"vertical"
/>
</div>
<el-form
:model=
"form"
label-width=
"80px"
style=
"width:60%"
>
<el-form-item
label=
"菜单名称"
prop=
"roleName"
>
<el-input
v-model=
"form.menuName"
placeholder=
"未选择菜单名称"
disabled
/>
</el-form-item>
<el-form-item
label=
"权限范围"
>
<el-select
v-model=
"form.dataScope"
>
<el-option
v-for=
"item in dataScopeOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"数据权限"
v-show=
"form.dataScope == 2"
>
<el-checkbox
v-model=
"deptExpand"
@
change=
"handleCheckedTreeExpand($event, 'dept')"
>
展开/折叠
</el-checkbox>
<el-checkbox
v-model=
"deptNodeAll"
@
change=
"handleCheckedTreeNodeAll($event, 'dept')"
>
全选/全不选
</el-checkbox>
<el-checkbox
v-model=
"form.deptCheckStrictly"
@
change=
"handleCheckedTreeConnect($event, 'dept')"
>
父子联动
</el-checkbox>
<el-tree
class=
"tree-border"
:data=
"deptOptions"
show-checkbox
default-expand-all
ref=
"dept"
node-key=
"id"
:check-strictly=
"!form.deptCheckStrictly"
empty-text=
"加载中,请稍后"
:props=
"defaultProps"
></el-tree>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"cancelDataScope"
>
取 消
</el-button>
<el-button
@
click=
"cancelDataScope"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"submitDataScope"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"submitDataScope"
>
确 定
</el-button>
...
@@ -216,6 +255,7 @@
...
@@ -216,6 +255,7 @@
import
{
listRole
,
getRole
,
delRole
,
addRole
,
updateRole
,
exportRole
,
dataScope
,
changeRoleStatus
}
from
'@/api/system/role'
import
{
listRole
,
getRole
,
delRole
,
addRole
,
updateRole
,
exportRole
,
dataScope
,
changeRoleStatus
}
from
'@/api/system/role'
import
{
roleMenuTreeselectMC
,
treeselect
as
menuTreeselect
,
roleMenuTreeselect
}
from
'@/api/system/menu'
import
{
roleMenuTreeselectMC
,
treeselect
as
menuTreeselect
,
roleMenuTreeselect
}
from
'@/api/system/menu'
import
{
treeselect
as
deptTreeselect
,
roleDeptTreeselect
}
from
'@/api/system/dept'
import
{
treeselect
as
deptTreeselect
,
roleDeptTreeselect
}
from
'@/api/system/dept'
// import { getRolesByInsId } from '../../../api/businessManage/template'
export
default
{
export
default
{
name
:
'Role'
,
name
:
'Role'
,
data
()
{
data
()
{
...
@@ -242,15 +282,19 @@ export default {
...
@@ -242,15 +282,19 @@ export default {
// dateRange: [],
// dateRange: [],
// 菜单表格数据
// 菜单表格数据
menuList
:
[],
menuList
:
[],
menuExpand
:
false
,
menuNodeAll
:
false
,
deptExpand
:
true
,
deptNodeAll
:
false
,
// 状态数据字典
// 状态数据字典
statusOptions
:
[
statusOptions
:
[
{
{
dictLabel
:
'启用'
,
dictLabel
:
'启用'
,
dictValue
:
'
0
'
dictValue
:
'
1
'
},
},
{
{
dictLabel
:
'停用'
,
dictLabel
:
'停用'
,
dictValue
:
'
1
'
dictValue
:
'
0
'
}
}
],
],
// 数据范围选项
// 数据范围选项
...
@@ -371,11 +415,13 @@ export default {
...
@@ -371,11 +415,13 @@ export default {
this
.
$refs
.
menu
.
setCheckedKeys
(
response
.
checkedKeys
)
this
.
$refs
.
menu
.
setCheckedKeys
(
response
.
checkedKeys
)
})
})
},
},
/** 根据角色ID查询部门树结构 */
/** 根据角色ID和菜单ID查询部门树结构 */
getRoleDeptTreeselect
(
roleId
)
{
getRoleDeptTreeselect
(
roleId
,
menuId
)
{
roleDeptTreeselect
(
roleId
).
then
(
response
=>
{
return
roleDeptTreeselect
(
roleId
,
menuId
).
then
(
response
=>
{
this
.
deptOptions
=
response
.
depts
this
.
form
.
deptCheckStrictly
=
response
.
data
.
deptCheckStrictly
this
.
$refs
.
dept
.
setCheckedKeys
(
response
.
checkedKeys
)
this
.
deptOptions
=
response
.
data
.
depts
this
.
form
.
dataScope
=
this
.
dataScopeOptions
[
response
.
data
.
dataScope
-
1
].
value
return
response
})
})
},
},
// 角色状态修改
// 角色状态修改
...
@@ -411,14 +457,22 @@ export default {
...
@@ -411,14 +457,22 @@ export default {
if
(
this
.
$refs
.
menu
!==
undefined
)
{
if
(
this
.
$refs
.
menu
!==
undefined
)
{
this
.
$refs
.
menu
.
setCheckedKeys
([])
this
.
$refs
.
menu
.
setCheckedKeys
([])
}
}
this
.
menuExpand
=
false
this
.
menuNodeAll
=
false
this
.
deptExpand
=
true
this
.
deptNodeAll
=
false
this
.
form
=
{
this
.
form
=
{
roleId
:
undefined
,
roleId
:
undefined
,
businessId
:
undefined
,
roleName
:
undefined
,
roleName
:
undefined
,
roleKey
:
undefined
,
roleKey
:
undefined
,
roleSort
:
0
,
roleSort
:
0
,
flag
:
undefined
,
flag
:
undefined
,
menuIds
:
[],
menuIds
:
[],
menuName
:
undefined
,
deptIds
:
[],
deptIds
:
[],
menuCheckStrictly
:
true
,
deptCheckStrictly
:
true
,
remark
:
undefined
remark
:
undefined
}
}
this
.
resetForm
(
'form'
)
this
.
resetForm
(
'form'
)
...
@@ -440,6 +494,36 @@ export default {
...
@@ -440,6 +494,36 @@ export default {
this
.
single
=
selection
.
length
!==
1
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
this
.
multiple
=
!
selection
.
length
},
},
// 树权限(父子联动)
handleCheckedTreeConnect
(
value
,
type
)
{
if
(
type
===
'menu'
)
{
this
.
form
.
menuCheckStrictly
=
value
?
true
:
false
}
else
if
(
type
===
'dept'
)
{
this
.
form
.
deptCheckStrictly
=
value
?
true
:
false
}
},
// 树权限(全选/全不选)
handleCheckedTreeNodeAll
(
value
,
type
)
{
if
(
type
===
'menu'
)
{
this
.
$refs
.
menu
.
setCheckedNodes
(
value
?
this
.
menuOptions
:
[])
}
else
if
(
type
===
'dept'
)
{
this
.
$refs
.
dept
.
setCheckedNodes
(
value
?
this
.
deptOptions
:
[])
}
},
// 树权限(展开/折叠)
handleCheckedTreeExpand
(
value
,
type
)
{
if
(
type
===
'menu'
)
{
const
treeList
=
this
.
menuOptions
for
(
let
i
=
0
;
i
<
treeList
.
length
;
i
++
)
{
this
.
$refs
.
menu
.
store
.
nodesMap
[
treeList
[
i
].
id
].
expanded
=
value
}
}
else
if
(
type
===
'dept'
)
{
const
treeList
=
this
.
deptOptions
for
(
let
i
=
0
;
i
<
treeList
.
length
;
i
++
)
{
this
.
$refs
.
dept
.
store
.
nodesMap
[
treeList
[
i
].
id
].
expanded
=
value
}
}
},
/** 新增按钮操作 */
/** 新增按钮操作 */
handleAdd
()
{
handleAdd
()
{
this
.
reset
()
this
.
reset
()
...
@@ -455,6 +539,7 @@ export default {
...
@@ -455,6 +539,7 @@ export default {
getRole
(
roleId
).
then
(
response
=>
{
getRole
(
roleId
).
then
(
response
=>
{
this
.
form
=
response
.
data
this
.
form
=
response
.
data
this
.
open
=
true
this
.
open
=
true
this
.
getMenuTreeselect
(
roleId
)
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
roleMenu
.
then
(
res
=>
{
roleMenu
.
then
(
res
=>
{
this
.
$refs
.
menu
.
setCheckedKeys
(
res
.
data
.
checkedKeys
)
this
.
$refs
.
menu
.
setCheckedKeys
(
res
.
data
.
checkedKeys
)
...
@@ -513,17 +598,13 @@ export default {
...
@@ -513,17 +598,13 @@ export default {
},
},
/** 提交按钮(数据权限) */
/** 提交按钮(数据权限) */
submitDataScope
:
function
()
{
submitDataScope
:
function
()
{
if
(
this
.
form
.
roleId
!==
undefined
)
{
console
.
log
(
this
.
form
)
if
(
this
.
form
.
businessId
!==
undefined
&&
this
.
form
.
menuId
!==
undefined
)
{
this
.
form
.
deptIds
=
this
.
getDeptAllCheckedKeys
()
this
.
form
.
deptIds
=
this
.
getDeptAllCheckedKeys
()
dataScope
(
this
.
form
).
then
(
response
=>
{
dataScope
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
code
===
200
)
{
this
.
msgSuccess
(
'修改成功'
)
this
.
$message
({
this
.
openDataScope
=
false
message
:
'修改成功'
,
this
.
getList
()
type
:
'success'
})
this
.
openDataScope
=
false
this
.
getList
()
}
})
})
}
}
},
},
...
@@ -584,4 +665,16 @@ export default {
...
@@ -584,4 +665,16 @@ export default {
margin-left
:
15px
;
margin-left
:
15px
;
}
}
}
}
.roleDialog
{
.el-dialog__body
{
display
:
flex
;
}
}
.dividerStyle
{
.el-divider--vertical
{
height
:
100%
;
margin-left
:
20px
;
width
:
2px
;
}
}
</
style
>
</
style
>
src/views/system/user/index.vue
View file @
9302af52
...
@@ -724,7 +724,7 @@ export default {
...
@@ -724,7 +724,7 @@ export default {
/** 重置密码按钮操作 */
/** 重置密码按钮操作 */
handleResetPwd
(
row
)
{
handleResetPwd
(
row
)
{
this
.
ruleForm
.
newPassword
=
''
this
.
ruleForm
.
newPassword
=
''
this
.
ruleForm
.
row
=
row
.
user
Id
this
.
ruleForm
.
row
=
row
.
business
Id
this
.
resetPwdDiaLog
=
!
this
.
resetPwdDiaLog
this
.
resetPwdDiaLog
=
!
this
.
resetPwdDiaLog
},
},
handleResetPwdSure
()
{
handleResetPwdSure
()
{
...
...
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