Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
zhu
dataease
Commits
2ba005db
提交
2ba005db
authored
2月 24, 2021
作者:
fit2cloud-chenyw
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 角色管理完善
上级
7056db3b
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
288 行增加
和
25 行删除
+288
-25
SysMenu.java
backend/src/main/java/io/dataease/base/domain/SysMenu.java
+29
-0
ExtSysRoleMapper.java
...in/java/io/dataease/base/mapper/ext/ExtSysRoleMapper.java
+5
-0
ExtSysRoleMapper.xml
...ain/java/io/dataease/base/mapper/ext/ExtSysRoleMapper.xml
+12
-0
SysMenuController.java
...in/java/io/dataease/controller/sys/SysMenuController.java
+15
-7
SysRoleController.java
...in/java/io/dataease/controller/sys/SysRoleController.java
+9
-2
RoleMenusRequest.java
.../io/dataease/controller/sys/request/RoleMenusRequest.java
+13
-0
MenuService.java
...nd/src/main/java/io/dataease/service/sys/MenuService.java
+32
-0
SysRoleService.java
...src/main/java/io/dataease/service/sys/SysRoleService.java
+20
-0
role.vue
frontend/src/business/components/settings/sys/role.vue
+151
-16
zh-CN.js
frontend/src/i18n/zh-CN.js
+2
-0
没有找到文件。
backend/src/main/java/io/dataease/base/domain/SysMenu.java
浏览文件 @
2ba005db
package
io
.
dataease
.
base
.
domain
;
package
io
.
dataease
.
base
.
domain
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.util.Objects
;
import
lombok.Data
;
import
lombok.Data
;
@Data
@Data
...
@@ -42,4 +44,30 @@ public class SysMenu implements Serializable {
...
@@ -42,4 +44,30 @@ public class SysMenu implements Serializable {
private
Long
updateTime
;
private
Long
updateTime
;
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
/**
* 由于该类型作为HashSet key所以必须重写以下方法
* @param o
* @return
*/
@Override
public
boolean
equals
(
Object
o
)
{
if
(
this
==
o
)
{
return
true
;
}
if
(
o
==
null
||
getClass
()
!=
o
.
getClass
())
{
return
false
;
}
SysMenu
menu
=
(
SysMenu
)
o
;
return
Objects
.
equals
(
menuId
,
menu
.
menuId
);
}
@Override
public
int
hashCode
()
{
return
Objects
.
hash
(
menuId
);
}
}
}
\ No newline at end of file
backend/src/main/java/io/dataease/base/mapper/ext/ExtSysRoleMapper.java
浏览文件 @
2ba005db
...
@@ -5,10 +5,15 @@ import io.dataease.controller.sys.response.RoleNodeResponse;
...
@@ -5,10 +5,15 @@ import io.dataease.controller.sys.response.RoleNodeResponse;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
public
interface
ExtSysRoleMapper
{
public
interface
ExtSysRoleMapper
{
List
<
RoleNodeResponse
>
query
(
@Param
(
"request"
)
RoleGridRequest
request
);
List
<
RoleNodeResponse
>
query
(
@Param
(
"request"
)
RoleGridRequest
request
);
int
deleteRoleMenu
(
@Param
(
"roleId"
)
Long
roleId
);
int
batchInsertRoleMenu
(
@Param
(
"maps"
)
List
<
Map
<
String
,
Long
>>
maps
);
}
}
backend/src/main/java/io/dataease/base/mapper/ext/ExtSysRoleMapper.xml
浏览文件 @
2ba005db
...
@@ -23,4 +23,16 @@
...
@@ -23,4 +23,16 @@
</select>
</select>
<delete
id=
"deleteRoleMenu"
>
delete from sys_roles_menus where role_id = #{roleId}
</delete>
<insert
id=
"batchInsertRoleMenu"
>
insert into sys_roles_menus (role_id, menu_id) values
<foreach
collection=
"maps"
item=
"map"
separator=
","
>
(#{map.roleId},#{map.menuId})
</foreach>
</insert>
</mapper>
</mapper>
backend/src/main/java/io/dataease/controller/sys/SysMenuController.java
浏览文件 @
2ba005db
...
@@ -14,6 +14,7 @@ import lombok.RequiredArgsConstructor;
...
@@ -14,6 +14,7 @@ import lombok.RequiredArgsConstructor;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@RestController
@RestController
...
@@ -29,15 +30,11 @@ public class SysMenuController {
...
@@ -29,15 +30,11 @@ public class SysMenuController {
@PostMapping
(
"/childNodes/{pid}"
)
@PostMapping
(
"/childNodes/{pid}"
)
public
List
<
MenuNodeResponse
>
childNodes
(
@PathVariable
(
"pid"
)
Long
pid
){
public
List
<
MenuNodeResponse
>
childNodes
(
@PathVariable
(
"pid"
)
Long
pid
){
List
<
SysMenu
>
nodes
=
menuService
.
nodesByPid
(
pid
);
List
<
SysMenu
>
nodes
=
menuService
.
nodesByPid
(
pid
);
List
<
MenuNodeResponse
>
nodeResponses
=
nodes
.
stream
().
map
(
node
->
{
return
menuService
.
convert
(
nodes
);
MenuNodeResponse
menuNodeResponse
=
BeanUtils
.
copyBean
(
new
MenuNodeResponse
(),
node
);
menuNodeResponse
.
setHasChildren
(
node
.
getSubCount
()
>
0
);
menuNodeResponse
.
setTop
(
node
.
getPid
()
==
menuService
.
MENU_ROOT_PID
);
return
menuNodeResponse
;
}).
collect
(
Collectors
.
toList
());
return
nodeResponses
;
}
}
@ApiOperation
(
"新增菜单"
)
@ApiOperation
(
"新增菜单"
)
@PostMapping
(
"/create"
)
@PostMapping
(
"/create"
)
public
void
create
(
@RequestBody
MenuCreateRequest
request
){
public
void
create
(
@RequestBody
MenuCreateRequest
request
){
...
@@ -49,6 +46,7 @@ public class SysMenuController {
...
@@ -49,6 +46,7 @@ public class SysMenuController {
public
void
delete
(
@RequestBody
MenuDeleteRequest
request
){
public
void
delete
(
@RequestBody
MenuDeleteRequest
request
){
menuService
.
delete
(
request
);
menuService
.
delete
(
request
);
}
}
@ApiOperation
(
"更新菜单"
)
@ApiOperation
(
"更新菜单"
)
@PostMapping
(
"/update"
)
@PostMapping
(
"/update"
)
public
void
update
(
@RequestBody
MenuCreateRequest
menu
){
public
void
update
(
@RequestBody
MenuCreateRequest
menu
){
...
@@ -56,4 +54,14 @@ public class SysMenuController {
...
@@ -56,4 +54,14 @@ public class SysMenuController {
}
}
@PostMapping
(
"/childMenus/{pid}"
)
public
Set
<
Long
>
childMenus
(
@PathVariable
Long
pid
){
List
<
MenuNodeResponse
>
childs
=
menuService
.
childs
(
pid
);
Set
<
Long
>
sets
=
childs
.
stream
().
map
(
MenuNodeResponse:
:
getMenuId
).
collect
(
Collectors
.
toSet
());
sets
.
add
(
pid
);
return
sets
;
}
}
}
backend/src/main/java/io/dataease/controller/sys/SysRoleController.java
浏览文件 @
2ba005db
...
@@ -7,6 +7,7 @@ import io.dataease.base.domain.SysRole;
...
@@ -7,6 +7,7 @@ import io.dataease.base.domain.SysRole;
import
io.dataease.commons.utils.PageUtils
;
import
io.dataease.commons.utils.PageUtils
;
import
io.dataease.commons.utils.Pager
;
import
io.dataease.commons.utils.Pager
;
import
io.dataease.controller.sys.request.RoleGridRequest
;
import
io.dataease.controller.sys.request.RoleGridRequest
;
import
io.dataease.controller.sys.request.RoleMenusRequest
;
import
io.dataease.controller.sys.response.RoleNodeResponse
;
import
io.dataease.controller.sys.response.RoleNodeResponse
;
import
io.dataease.service.sys.SysRoleService
;
import
io.dataease.service.sys.SysRoleService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
...
@@ -34,8 +35,8 @@ public class SysRoleController {
...
@@ -34,8 +35,8 @@ public class SysRoleController {
@ApiOperation
(
"删除角色"
)
@ApiOperation
(
"删除角色"
)
@PostMapping
(
"/delete"
)
@PostMapping
(
"/delete
/{roleId}
"
)
public
void
delete
(
Long
roleId
){
public
void
delete
(
@PathVariable
(
"roleId"
)
Long
roleId
){
sysRoleService
.
delete
(
roleId
);
sysRoleService
.
delete
(
roleId
);
}
}
...
@@ -52,4 +53,10 @@ public class SysRoleController {
...
@@ -52,4 +53,10 @@ public class SysRoleController {
Page
<
Object
>
page
=
PageHelper
.
startPage
(
goPage
,
pageSize
,
true
);
Page
<
Object
>
page
=
PageHelper
.
startPage
(
goPage
,
pageSize
,
true
);
return
PageUtils
.
setPageInfo
(
page
,
sysRoleService
.
query
(
request
));
return
PageUtils
.
setPageInfo
(
page
,
sysRoleService
.
query
(
request
));
}
}
@PostMapping
(
"/saveRolesMenus"
)
public
void
saveRolesMenus
(
@RequestBody
RoleMenusRequest
request
){
sysRoleService
.
batchSaveRolesMenus
(
request
);
}
}
}
backend/src/main/java/io/dataease/controller/sys/request/RoleMenusRequest.java
0 → 100644
浏览文件 @
2ba005db
package
io
.
dataease
.
controller
.
sys
.
request
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
RoleMenusRequest
{
private
Long
roleId
;
private
List
<
Long
>
menuIds
;
}
backend/src/main/java/io/dataease/service/sys/MenuService.java
浏览文件 @
2ba005db
...
@@ -7,11 +7,16 @@ import io.dataease.base.mapper.ext.ExtMenuMapper;
...
@@ -7,11 +7,16 @@ import io.dataease.base.mapper.ext.ExtMenuMapper;
import
io.dataease.commons.utils.BeanUtils
;
import
io.dataease.commons.utils.BeanUtils
;
import
io.dataease.controller.sys.request.MenuCreateRequest
;
import
io.dataease.controller.sys.request.MenuCreateRequest
;
import
io.dataease.controller.sys.request.MenuDeleteRequest
;
import
io.dataease.controller.sys.request.MenuDeleteRequest
;
import
io.dataease.controller.sys.response.MenuNodeResponse
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
@Service
@Service
public
class
MenuService
{
public
class
MenuService
{
...
@@ -108,5 +113,32 @@ public class MenuService {
...
@@ -108,5 +113,32 @@ public class MenuService {
return
sysMenuMapper
.
updateByPrimaryKeySelective
(
sysMenu
);
return
sysMenuMapper
.
updateByPrimaryKeySelective
(
sysMenu
);
}
}
public
List
<
MenuNodeResponse
>
childs
(
Long
pid
){
Set
<
SysMenu
>
childs
=
getChilds
(
nodesByPid
(
pid
),
new
HashSet
());
List
<
SysMenu
>
menus
=
childs
.
stream
().
collect
(
Collectors
.
toList
());
List
<
MenuNodeResponse
>
responses
=
convert
(
menus
);
return
responses
;
}
private
Set
<
SysMenu
>
getChilds
(
List
<
SysMenu
>
lists
,
Set
<
SysMenu
>
sets
){
lists
.
forEach
(
menu
->
{
sets
.
add
(
menu
);
List
<
SysMenu
>
kidMenus
=
nodesByPid
(
menu
.
getMenuId
());
if
(
CollectionUtils
.
isNotEmpty
(
kidMenus
)){
getChilds
(
kidMenus
,
sets
);
}
});
return
sets
;
}
public
List
<
MenuNodeResponse
>
convert
(
List
<
SysMenu
>
menus
){
return
menus
.
stream
().
map
(
node
->
{
MenuNodeResponse
menuNodeResponse
=
BeanUtils
.
copyBean
(
new
MenuNodeResponse
(),
node
);
menuNodeResponse
.
setHasChildren
(
node
.
getSubCount
()
>
0
);
menuNodeResponse
.
setTop
(
node
.
getPid
()
==
MENU_ROOT_PID
);
return
menuNodeResponse
;
}).
collect
(
Collectors
.
toList
());
}
}
}
backend/src/main/java/io/dataease/service/sys/SysRoleService.java
浏览文件 @
2ba005db
...
@@ -5,11 +5,16 @@ import io.dataease.base.domain.SysRole;
...
@@ -5,11 +5,16 @@ import io.dataease.base.domain.SysRole;
import
io.dataease.base.mapper.SysRoleMapper
;
import
io.dataease.base.mapper.SysRoleMapper
;
import
io.dataease.base.mapper.ext.ExtSysRoleMapper
;
import
io.dataease.base.mapper.ext.ExtSysRoleMapper
;
import
io.dataease.controller.sys.request.RoleGridRequest
;
import
io.dataease.controller.sys.request.RoleGridRequest
;
import
io.dataease.controller.sys.request.RoleMenusRequest
;
import
io.dataease.controller.sys.response.RoleNodeResponse
;
import
io.dataease.controller.sys.response.RoleNodeResponse
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Service
@Service
public
class
SysRoleService
{
public
class
SysRoleService
{
...
@@ -45,4 +50,19 @@ public class SysRoleService {
...
@@ -45,4 +50,19 @@ public class SysRoleService {
return
result
;
return
result
;
}
}
@Transactional
public
int
batchSaveRolesMenus
(
RoleMenusRequest
request
){
extSysRoleMapper
.
deleteRoleMenu
(
request
.
getRoleId
());
List
<
Map
<
String
,
Long
>>
maps
=
request
.
getMenuIds
().
stream
().
map
(
menuId
->
{
Map
<
String
,
Long
>
map
=
new
HashMap
<>();
map
.
put
(
"roleId"
,
request
.
getRoleId
());
map
.
put
(
"menuId"
,
menuId
);
return
map
;
}).
collect
(
Collectors
.
toList
());
return
extSysRoleMapper
.
batchInsertRoleMenu
(
maps
);
}
}
}
frontend/src/business/components/settings/sys/role.vue
浏览文件 @
2ba005db
...
@@ -4,12 +4,12 @@
...
@@ -4,12 +4,12 @@
<el-aside
width=
"70%"
style=
"border: 1px solid #eee"
>
<el-aside
width=
"70%"
style=
"border: 1px solid #eee"
>
<el-card
class=
"table-card"
>
<el-card
class=
"table-card"
>
<template
v-slot:header
>
<template
v-slot:header
>
<ms-table-header
:condition
.
sync=
"condition"
@
search=
"search"
@
create=
"create"
:create-tip=
"$t('
user.create')"
:title=
"$t('commons.user
')"
/>
<ms-table-header
:condition
.
sync=
"condition"
@
search=
"search"
@
create=
"create"
:create-tip=
"$t('
role.add')"
:title=
"$t('commons.role
')"
/>
</
template
>
</
template
>
<el-table
border
class=
"adjust-table"
:data=
"tableData"
style=
"width: 100%;
"
>
<el-table
border
highlight-current-row
class=
"adjust-table"
:data=
"tableData"
style=
"width: 100%;"
@
row-click=
"rowClick
"
>
<el-table-column
prop=
"name"
label=
"名称"
/>
<el-table-column
prop=
"name"
label=
"名称"
/>
<el-table-column
:show-overflow-tooltip=
"true"
width=
"135px"
prop=
"createTime"
label=
"创建日期"
>
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"createTime"
label=
"创建日期"
>
<
template
v-slot:default=
"scope"
>
<
template
v-slot:default=
"scope"
>
<span>
{{
scope
.
row
.
createTime
|
timestampFormatDate
}}
</span>
<span>
{{
scope
.
row
.
createTime
|
timestampFormatDate
}}
</span>
</
template
>
</
template
>
...
@@ -35,9 +35,8 @@
...
@@ -35,9 +35,8 @@
:load=
"getMenuDatas"
:load=
"getMenuDatas"
:props=
"defaultProps"
:props=
"defaultProps"
check-strictly
check-strictly
accordion
show-checkbox
show-checkbox
node-key=
"
menuI
d"
node-key=
"
i
d"
@
check=
"menuChange"
@
check=
"menuChange"
/>
/>
</el-tab-pane>
</el-tab-pane>
...
@@ -45,6 +44,26 @@
...
@@ -45,6 +44,26 @@
</el-tabs>
</el-tabs>
</el-main>
</el-main>
</el-container>
</el-container>
<el-dialog
:close-on-click-modal=
"false"
:title=
"formType=='add' ? $t('role.add') : $t('role.modify')"
:visible
.
sync=
"dialogVisible"
width=
"580px"
@
closed=
"closeFunc"
:destroy-on-close=
"true"
>
<el-form
ref=
"roleForm"
inline
:model=
"form"
:rules=
"rule"
size=
"small"
label-width=
"80px"
>
<el-form-item
label=
"角色名称"
prop=
"name"
>
<el-input
v-model=
"form.name"
style=
"width: 380px;"
/>
</el-form-item>
<el-form-item
label=
"描述信息"
prop=
"description"
>
<el-input
v-model=
"form.description"
style=
"width: 380px;"
rows=
"5"
type=
"textarea"
/>
</el-form-item>
</el-form>
<
template
v-slot:footer
>
<ms-dialog-footer
@
cancel=
"dialogVisible = false"
@
confirm=
"saveRole('roleForm')"
/>
</
template
>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -55,7 +74,10 @@ import MsTableHeader from "../../common/components/MsTableHeader";
...
@@ -55,7 +74,10 @@ import MsTableHeader from "../../common/components/MsTableHeader";
import
MsTableOperator
from
"../../common/components/MsTableOperator"
;
import
MsTableOperator
from
"../../common/components/MsTableOperator"
;
import
MsDialogFooter
from
"../../common/components/MsDialogFooter"
;
import
MsDialogFooter
from
"../../common/components/MsDialogFooter"
;
import
MsTableOperatorButton
from
"../../common/components/MsTableOperatorButton"
;
import
MsTableOperatorButton
from
"../../common/components/MsTableOperatorButton"
;
import
{
listenGoBack
,
removeGoBackListener
}
from
"@/common/js/utils"
;
export
default
{
export
default
{
name
:
'role'
,
name
:
'role'
,
components
:
{
components
:
{
...
@@ -70,9 +92,12 @@ export default {
...
@@ -70,9 +92,12 @@ export default {
return
{
return
{
result
:
{},
result
:
{},
queryPath
:
'/api/role/roleGrid'
,
queryPath
:
'/api/role/roleGrid'
,
deletePath
:
'/user/special/delete/'
,
deletePath
:
'/api/role/delete/'
,
createPath
:
'/user/special/add'
,
createPath
:
'/api/role/create'
,
updatePath
:
'/user/special/update'
,
updatePath
:
'/api/role/update'
,
queryMenusPath
:
'/api/menu/childNodes/'
,
childMenusPath
:
'/api/menu/childMenus/'
,
saveRoleMenusPath
:
'/api/role/saveRolesMenus'
,
currentPage
:
1
,
currentPage
:
1
,
pageSize
:
10
,
pageSize
:
10
,
total
:
0
,
total
:
0
,
...
@@ -80,37 +105,147 @@ export default {
...
@@ -80,37 +105,147 @@ export default {
tableData
:
[],
tableData
:
[],
menus
:
[],
menus
:
[],
menuIds
:
[],
menuIds
:
[],
defaultProps
:
{},
defaultProps
:
{
children
:
'children'
,
label
:
'label'
,
isLeaf
:
'isLeaf'
},
activeName
:
'second'
activeName
:
'first'
,
dialogVisible
:
false
,
formType
:
'add'
,
form
:
{},
rule
:
{
name
:
[
{
required
:
true
,
message
:
'请输入名称'
,
trigger
:
'blur'
}
]
},
currentRow
:
null
};
};
},
},
activated
()
{
activated
()
{
this
.
search
();
this
.
search
();
},
},
watch
:
{
currentRow
:
'currentRowChange'
},
methods
:
{
methods
:
{
handleClick
(
tab
,
event
)
{
handleClick
(
tab
,
event
)
{
console
.
log
(
tab
,
event
);
console
.
log
(
tab
,
event
);
},
},
create
(){},
create
(){
this
.
form
=
{}
this
.
formType
=
"add"
;
this
.
dialogVisible
=
true
listenGoBack
(
this
.
closeFunc
)
},
search
(){
search
(){
this
.
result
=
this
.
$post
(
this
.
queryPath
+
"/"
+
this
.
currentPage
+
"/"
+
this
.
pageSize
,
this
.
condition
,
response
=>
{
this
.
result
=
this
.
$post
(
this
.
queryPath
+
"/"
+
this
.
currentPage
+
"/"
+
this
.
pageSize
,
this
.
condition
,
response
=>
{
let
data
=
response
.
data
;
let
data
=
response
.
data
this
.
total
=
data
.
itemCount
;
this
.
total
=
data
.
itemCount
this
.
tableData
=
data
.
listObject
;
this
.
tableData
=
data
.
listObject
})
})
},
},
edit
(
row
){
edit
(
row
){
this
.
formType
=
'modify'
this
.
dialogVisible
=
true
this
.
form
=
Object
.
assign
({},
row
)
listenGoBack
(
this
.
closeFunc
)
},
saveRole
(
roleForm
){
this
.
$refs
[
roleForm
].
validate
(
valid
=>
{
if
(
valid
)
{
const
url
=
this
.
formType
==
'add'
?
this
.
createPath
:
this
.
updatePath
this
.
result
=
this
.
$post
(
url
,
this
.
form
,
()
=>
{
this
.
$success
(
this
.
$t
(
'commons.save_success'
))
this
.
search
();
this
.
dialogVisible
=
false
});
}
else
{
return
false
;
}
})
},
},
getMenuDatas
(
node
,
resolve
){
closeFunc
()
{
this
.
dialogVisible
=
false
removeGoBackListener
(
this
.
closeFunc
);
},
getMenuDatas
(
node
,
resolve
){
this
.
$post
(
this
.
queryMenusPath
+
(
node
.
data
.
id
?
node
.
data
.
id
:
0
),
null
,
(
res
)
=>
{
const
datas
=
res
.
data
const
nodes
=
datas
.
map
(
data
=>
this
.
formatNode
(
data
))
resolve
&&
resolve
(
nodes
)
})
},
formatNode
(
node
)
{
const
result
=
{
id
:
node
.
menuId
,
label
:
node
.
title
,
isLeaf
:
!
node
.
hasChildren
,
children
:
node
.
children
}
return
result
},
},
menuChange
(
menu
){
menuChange
(
menu
){
this
.
$post
(
this
.
childMenusPath
+
menu
.
id
,
null
,
res
=>
{
const
childIds
=
res
.
data
if
(
this
.
menuIds
.
indexOf
(
menu
.
id
)
!==
-
1
)
{
for
(
let
i
=
0
;
i
<
childIds
.
length
;
i
++
)
{
const
index
=
this
.
menuIds
.
indexOf
(
childIds
[
i
])
if
(
index
!==
-
1
)
{
this
.
menuIds
.
splice
(
index
,
1
)
}
}
}
else
{
for
(
let
i
=
0
;
i
<
childIds
.
length
;
i
++
)
{
const
index
=
this
.
menuIds
.
indexOf
(
childIds
[
i
])
if
(
index
===
-
1
)
{
this
.
menuIds
.
push
(
childIds
[
i
])
}
}
}
console
.
log
(
this
.
menuIds
)
this
.
$refs
.
menu
.
setCheckedKeys
(
this
.
menuIds
)
this
.
saveMenus
()
})
},
saveMenus
(){
if
(
!
this
.
currentRow
)
{
return
}
const
param
=
{
roleId
:
this
.
currentRow
.
roleId
,
menuIds
:
this
.
menuIds
}
this
.
$post
(
this
.
saveRoleMenusPath
,
param
,
res
=>
{
this
.
search
()
})
},
rowClick
(
row
,
column
,
event
){
this
.
currentRow
=
row
},
currentRowChange
(
newVal
,
oldVal
){
if
(
newVal
==
oldVal
)
{
return
}
if
(
!
newVal
)
{
this
.
menuIds
=
[]
return
}
this
.
menuIds
=
newVal
.
menuIds
;
this
.
$refs
.
menu
.
setCheckedKeys
(
this
.
menuIds
)
},
},
handleDelete
(
row
){
handleDelete
(
row
){
this
.
$confirm
(
'确认删除角色['
+
row
.
name
+
']?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
const
url
=
this
.
deletePath
+
row
.
roleId
this
.
$post
(
url
,
null
,
()
=>
{
this
.
$success
(
this
.
$t
(
'commons.modify_success'
))
this
.
search
()
});
}).
catch
(()
=>
{
})
}
}
}
}
}
}
...
...
frontend/src/i18n/zh-CN.js
浏览文件 @
2ba005db
...
@@ -385,6 +385,8 @@ export default {
...
@@ -385,6 +385,8 @@ export default {
test_user
:
'测试人员'
,
test_user
:
'测试人员'
,
test_viewer
:
'只读用户'
,
test_viewer
:
'只读用户'
,
add
:
'添加角色'
,
add
:
'添加角色'
,
delete
:
'删除角色'
,
modify
:
'修改角色'
,
},
},
report
:
{
report
:
{
api_test_report
:
'接口测试报告'
,
api_test_report
:
'接口测试报告'
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论