博客列表 >layui tree树形组件

layui tree树形组件

有什么是忘不了的的博客
有什么是忘不了的的博客原创
2020年04月10日 18:31:304701浏览

<div id="test12" class="demo-tree-more"></div>

layui.use(['form', 'layedit', 'laydate', 'util','tree'], function () {
    var tree = layui.tree
    ,form = layui.form
        , layer = layui.layer    
        ,util = layui.util
        ,data = JSON.parse('{$reList|raw}')  //用的tp5.1穿的assign传的数据
    //树形组件初始化
    tree.render({
        elem: '#test12'
        ,data: data
        ,showCheckbox: true  //是否显示复选框
        ,id: 'demoId1'
        ,showLine: true  //是否开启连接线
    });
    //获取选中的复选框的id,拼接为字符串
    function getCheckedId(jsonObj) {
        let id = "";
        $.each(jsonObj, function (index, item) {
            if (id != "") {
                id = id + "," + item.id;
            }
            else {
                id = item.id;
            }
            //判断是否有子节点
            let child = item.hasOwnProperty('children')
            if (child != false){
                let i = getCheckedId(item.children);
                if (i != "") {
                    id = id + "," + i;
                }
            }
        });
        return id;
    }
  //监听提交
    form.on('submit(demo1)', function (data) {
        var checkedData = tree.getChecked('demoId1'); //获取选中节点的数据
        var ids = getCheckedId(checkedData);    //获取选中的id
        $.post("/admin/roles/xxx", {p_id:ids,r_id:data.field.r_id},function (e) {
            if(e.code == 200 ){
                layer.msg('更新成功');
            }else{
                layer.msg(e.msg);
            }
        } );
        return false;
    }); 
     
})

后台获取数据

public function addpower()
{
        //数据展示
        $r_id = Request::param('id');
        //获取权限数据
        $rower = new Power();
        $list = $rower->orderByTow();
        //获取去用户拥有的权限id
        $RolesPowerId = RolesPower::where('r_id',$r_id)->column('p_id');
        //因为我无限递归后的数据和layui需要的数据结构有差异,所以重构啦一下
        $reList = json_encode( $this->relist($list,$RolesPowerId));//json格式输出
        $this->view->assign('reList',$reList);
        $this->view->assign('id',$r_id);
        return $this->view->fetch();
}
public function relist($arr,$RolesPowerId){
    $reList=[];
    $i = 0;
    foreach ($arr as $k => $v){
        $reList[$i]=[
            'title' => $v['authorityName'],
            'id' => $v['id'],
            'field' => '',
            'spread' =>true,
        ];
        //只给最后一级中的节点设置选中。因为layui只要上级有默认选中,就不管你下级有没有选中全选中。
        if ($v['level'] == 2 && in_array($v['id'],$RolesPowerId)){
            $reList[$i]['checked'] = true;
        }else{
            $reList[$i]['checked'] = false;
        }
        if (isset($v['child'])&& !empty($v['child']) && is_array($v['child'])){
            //递归调用
            $reList[$i]['children'] = $this->relist($v['child'],$RolesPowerId);
        }
        $i ++;
    }
    return $reList;
}


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议