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>