后台代码
/**
* 获取某个角色的所有权限
* @param roleId
* @return
*/
@RequestMapping(value="/get_role_authority",method = RequestMethod.POST)
@ResponseBody
public List<Authority> getRoleAuthority(
@RequestParam(name="roleId",required = true) Long roleId
)
{
return authorityService.findListByRoleId(roleId);
}
前端代码
//某个角色已经拥有的权限
var existAuthority =null;
function isAdded(id){
for(var k=0;k<existAuthority.length;k++)
{
if(existAuthority[k].menuId==id)
return true;
}
return false;
}
//转换原始数据至符合tree的要求
function convert(rows){
var nodes = [];
// get the top level nodes
//首先获取所有的父分类
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (!exists(rows, row.parentId)){
nodes.push({
id:row.id,
text:row.name
});
}
}
var toDo = [];
for(var i=0; i<nodes.length; i++){
toDo.push(nodes[i]);
}
while(toDo.length){
var node = toDo.shift(); // the parent node
// get the children nodes
for(var i=0; i<rows.length; i++){
var row = rows[i];
if (row.parentId == node.id){
var child = {id:row.id,text:row.name};
//关键代码
**if(isAdded(row.id))
{
child.checked=true;
}**
if (node.children){
node.children.push(child);
} else {
node.children = [child];
}
//把刚才创建的孩子在添加到父分类的数组中
toDo.push(child);
}
}
}
return nodes;
}
//首先获取该角色已经拥有的权限
$.ajax({
url:'get_role_authority',
data:{roleId:item.id},
type:'post',
dataType:'json',
success:function(data){
existAuthority = data
$("#authority-tree").tree({
loadFilter: function(rows){
return convert(rows);
}
});
}
});