使用layui tree 组件做权限管理功能【TP5+layui】
1 <html> 2 <head> 3 <link rel="stylesheet" href="./layui.css"> 4 </head> 5 <body> 6 <form> 7 8 <div class="layui-form-item"> 9 <div class="title">操作权限</div> 10 <div> 11 <div id="power-tree"></div> 12 <textarea id="powerInput" name="power" style="height:1px;overflow:hidden;width:1px;">{:$data.power?json_encode($data.power):''}</textarea> 13 </div> 14 </div> 15 </form> 16 </body> 17 <script src="./layui.js"></script> 18 <script> 19 layui.use(['form','tree'],function(){ 20 var layer = layui.layer, 21 $ = layui.jquery, 22 tree = layui.tree, 23 form = layui.form; 24 //权限对象模版 25 var data = [ 26 { 27 id:2,title: '文章',model:'Article',spread:true, 28 children: [ 29 { id:201,title: '文章列表',page:'index' }, 30 { id:202,title: '新增文章',page:'add' }, 31 ]}, 32 { 33 id:4,title: '分类',model:'Category',spread:true, 34 children: [ 35 { id:401,title: '分类列表',page:'index' }, 36 { id:402,title: '新增分类',page:'add' }, 37 ]}, 38 { 39 id:5,title: '会员',model:'Member',spread:true, 40 children: [ 41 { id:501,title: '会员列表',page:'index' }, 42 ]} 43 ]; 44 // 渲染 45 tree.render({ 46 elem: '#power-tree', 47 id:'power-tree', 48 data: data, 49 50 showCheckbox: true, 51 oncheck: function(obj){ 52 var checkedObj = tree.getChecked('power-tree');//获取选中列表 53 $('#powerInput').val(JSON.stringify(checkedObj));//权限数据加入表单 54 } 55 }); 56 57 var sqlData = {$data.power|json_encode};//php数据集 58 if(sqlData){ 59 var checkIds = [];//回显选中ID集合 60 //循环取出回显id集合 61 sqlData.forEach(function(item){ 62 //有子集被选中,只添加子集,防止set父级导致子集被全选 63 if(item.children) { 64 item.children.forEach(function(subitem){ 65 checkIds.push(subitem.id); 66 }); 67 } else { 68 //没有子集再set当前节点 69 checkIds.push(item.id); 70 } 71 }) 72 73 tree.setChecked('power-tree',checkIds);//回显选中的权限 74 } 75 }); 76 </script> 77 </html>