/** * 更新角色 */ //选中的复选框 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,''))); }