博主信息
博文 81
粉丝 1
评论 0
访问量 146931
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
layui tree树形组件
有什么是忘不了的的博客
原创
5021人浏览过

<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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学