<!-- 选择权限弹窗 -->
<div id="select-authority-dialog" class="easyui-dialog" data-options="closed:true,iconCls:'icon-save'" style="width:220px; height:450px;padding:10px;">
<ul id="authority-tree" url="get_all_menu" checkbox="true" ></ul>
</div>
function exists(rows,parentId){
for(var i=0;i<rows.length;i++){
if(rows[i].id==parentId) return true;
}
return false;
}
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 (node.children){
node.children.push(child);
} else {
node.children = [child];
}
toDo.push(child);
}
}
}
return nodes;
}
//打开权限选择框
function selectAuthority(){
$('#select-authority-dialog').dialog({
closed: false,
modal:true,
title: "选择权限信息",
buttons: [{
text: '确定',
iconCls: 'icon-ok',
handler: function(){
//getChecked获取选中的节点(第一种'getChecked能接受到全选(全选的话,子权限和父权限都能够获取到) 和 选的子权限(只获得子权限),第二种getChecked','indeterminate接受到半选(这时只能获取到父权限,而全选的话,获取到的会为空,两种结合起来就实现了选择菜单的过滤)
var checkedNodes = $("#authority-tree").tree('getChecked');
var ids='';
for(var i=0;i<checkedNodes.length;i++){
ids +=checkedNodes[i].id + ',';
}
var checkedParentNodes = $("#authority-tree").tree('getChecked','indeterminate');
for(var i=0;i<checkedNodes.length;i++){
ids +=checkedParentNodes[i].id + ',';
}
}
}, {
text: '取消',
iconCls: 'icon-cancel',
handler: function () {
$('#select-authority-dialog').dialog('close');
}
}],
onBeforeOpen:function(){
$("#authority-tree").tree({
loadFilter: function(rows){
return convert(rows);
}
});
}
});
}