/**
* 更新角色
*/
//选中的复选框
var nodeIds = [];
$(function() {
layui.use(['form' ,'tree','layer'], function(){
var form = layui.form;
var layer=layui.layer;
//监听提交
getTreeData();
form.on('submit(roleSubmit)', function(data){
//校验 TODO
var array = new Array();
//获取选中的权限id
for(var i=0;i<$('.nodeCheck').length;i++){
array.push($($('.nodeCheck').get(i)).attr("permid"));
}
//校验是否授权
var permIds = array.join(",");
// console.log("permIds"+permIds)
if(permIds==null || permIds==''){
layer.alert("请给该角色添加权限菜单!")
return false;
}
$("#permIds").val(permIds);
$.ajax({
type: "POST",
data: $("#roleForm").serialize(),
url: context+"/auth/addRole",
success: function (data) {
if (data == "ok") {
layer.alert("操作成功",function(){
layer.closeAll();
load();
});
} else {
layer.alert(data);
}
},
error: function (data) {
layer.alert("操作请求错误,请您稍后再试");
}
});
return false;
});
form.render();
});
});
function getTreeData() {
$.ajax({
type: "get",
url: context+"/auth/findPerms",
success: function (data) {
if (data !=null) {
initTree(data);
} else {
layer.alert(data);
}
},
error: function () {
layer.alert("获取数据错误,请您稍后再试");
}
});
}
function initTree(data){
layui.tree({
elem: '#perm', //指定元素
target: '_blank', //是否新选项卡打开(比如节点返回href才有效)
check: 'checkbox', //勾选风格
checked: function(item) {//复选框
//layer.msg('check当前节名称:'+ item.name + '
全部参数:'+ JSON.stringify(item));
// console.log('item is Array:'+ item instanceof Array);
// console.log('item is:'+ item);
// console.log('check当前节名称:'+ JSON.stringify(item));
//判断是选中还是移除选中 ,checkbox: ['', ''] //复选框
/*var checkFlag = data.elem.checked;
var cFlag = $(this).checked;
console.log("checkFlag:"+checkFlag)
console.log("cFlag:"+cFlag)*/
//当前节点
//nodeIds.push(item.id);
/* if( item.children.length > 0 ){
nodeIds= getChildNode(item);
}
console.log('nodeIds:'+ JSON.stringify(nodeIds));
// permArray.add(item);
$.unique(nodeIds);
console.log('check当前节名称:'+ JSON.stringify(nodeIds));*/
//校验 TODO
//$("#permIds").val(permIds);
},
click: function(item){ //点击节点回调
//layer.msg('click当前节名称:'+ item.name + '
全部参数:'+ JSON.stringify(item));
// console.log('click当前节名称:'+ JSON.stringify(item));
//treeIds+=item.id;
},
skin:'shihuang',//皮肤
//checkboxName: 'permCheck',//复选框的name属性值
//checkboxStyle: "color: #FD482C",//设置复选框的样式,必须为字符串,css样式
/* change: function (item){//当当前input发生变化后所执行的回调//console.log(item);
resourceIds=item;
},
data: {//为元素添加额外数据,即在元素上添加data-xxx="yyy",可选
hasChild: true
}*/
nodes:listToTreeJson(data)
});
}
/**
* 获取所有子节点的id数组
* @param obj
* @returns {Array}
*/
function getChildNode( obj ){
if(obj!=null){
if( obj.children.length > 0 ){
$.each( obj.children, function(k, v){
//console.log( v.id );
nodeIds.push( v.id );
getChildNode( v );
});
}
}
return nodeIds;
}
var demoData=[
{"id":"aaa","pid":"account","spType":0,"layerId":0,"seqId":1,"name":"阿萨德发多少","deleted":"0"},
{"id":"account","pid":"","spType":0,"layerId":0,"seqId":50,"name":"账户","deleted":"0"},
{"id":"bbb","pid":"account","spType":0,"layerId":0,"seqId":2,"name":"阿萨德发多少","deleted":"0"},
{"id":"ccc","pid":"account","spType":0,"layerId":0,"seqId":3,"name":"a啊都是发","deleted":"0"},
{"id":"ddd","pid":"dispatch","spType":0,"layerId":0,"seqId":1,"name":"大夫","deleted":"0"},
{"id":"dispatch","pid":"","spType":0,"layerId":0,"seqId":2,"name":"通知公告","deleted":"0"},
{"id":"eee","pid":"dispatch","spType":0,"layerId":0,"seqId":2,"name":";卡萨丁","deleted":"0"},
{"id":"fff","pid":"gridding","spType":0,"layerId":0,"seqId":1,"name":"拉收到了","deleted":"0"},
{"id":"gridding","pid":"","spType":0,"layerId":0,"seqId":1,"name":"网格化管理","deleted":"0"},
{"id":"portals","pid":"","spType":0,"layerId":0,"seqId":3,"name":"综合信息门户管理","deleted":"0"}
];
/**
* list转化为tree结构的json数据
*/
function listToTreeJson(data){
//data不能为null,且是数组
if(data!=null && (data instanceof Array)){
//递归转化
var getJsonTree=function(data,parentId){
var itemArr=[];
for(var i=0;i < data.length;i++){
var node=data[i];
if(node.pId==parentId && parentId!=null){
var newNode={name:node.name,spread:true,id:node.id,pid:node.pId,children:getJsonTree(data,node.id)};
itemArr.push(newNode);
}
}
return itemArr;
}
// return JSON.stringify(getJsonTree(data,''));
return getJsonTree(data,0);
}
//console.log(JSON.stringify(getJsonTree(data,'')));
}