layui树形渲染、layui树形后端返回类型、layui树形属性设置

2023-11-08

最近工作老是和layui打交道,躺过了坑有必要记录一下,下面直接上代码

前端:

$.ajax({

    type: "get",

    url: g_const.orb_url + '/api/v1/department/' + companyCode + '/equipment'+ "?deptIds=" + accountDeptId,

    contentType: "application/json",

    dataType: "json",

    success: function (result) {

      var treeData = result.data;

      console.log(treeData);

      // 渲染树形数据

      tree.render({

        elem: '#tableInventoryGather',  // 指定元素选择器

        data: treeData,  // 数据源

        showLine: true,// 显示连接线

        showCheckbox: true,     //是否显示复选框

        onlyIconControl: true,

        search: true,//是否开启搜索功能:true/false,默认false

        edit: ['add', 'update', 'del'], //操作节点的图标

        click: function (obj) {

            var id = obj.data.id;

            console.log(obj.state); //得到当前节点的展开状态:open、close、normal

            alert(123);

            $("#dept_home").load("dept/show?id="+id);

        },

        operate: function(obj){

            var type = obj.type; //得到操作类型:add、edit、del

            var data = obj.data; //得到当前节点的数据

            var elem = obj.elem; //得到当前节点元素

            var id = data.id;

            var name = data.title;

            if(type === 'add'){ //增加节点

                $.post("dept/save", {parentId: id, name: "未命名"}, function (result) {

                    tree.reload('treeId', {data: getData()});

                })

                //返回 key 值

                return ;

            } else if(type === 'update'){ //修改节点

                $.post("dept/update", {id: id, name: name}, function () {

                    tree.reload('treeId', {data: getData()});

                })

            } else if(type === 'del'){ //删除节点

                $.post("dept/delete", {id: id}, function () {

                    tree.reload('treeId', {data: getData()});

                });

            };

        }

      });

     

    },

    error: function (xhr, status, error) {

        layer.msg("Error code: " + xhr.status + " status: " + status + " descript:" + error);

    },

    complete: function (xhr, ts) {

    }

});

----------java后端

public class TreeNode {
    /**
     * 节点id
     */
    private String id;
    /**
     * 父节点 默认0为根节点
     */
    private String parentId;
    /**
     * 节点名称
     */
    private String title;
    /**
     * 是否有子节点
     */
    private boolean hasChild;

    public TreeNode(String id, String parentId, String title) {
        this.id = id;
        this.parentId = parentId;
        this.title = title;
    }

    public String getId() {
        return id;
    }

    public String getParentId() {
        return parentId;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}
public class TreeUtil {
    public static Map<String,Object> mapArray = new LinkedHashMap<String, Object>();
    public List<TreeNode> menuCommon;
    public List<Object> list = new ArrayList<Object>();

    public List<Object> treeMenu(List<TreeNode> menu){
        this.menuCommon = menu;
        for (TreeNode treeNode : menu) {
            Map<String,Object> mapArr = new LinkedHashMap<String, Object>();
            if(treeNode.getParentId().equals("0")){
                setTreeMap(mapArr,treeNode);
                list.add(mapArr);
            }
        }
        return list;
    }

    public List<?> menuChild(String id){
        List<Object> lists = new ArrayList<Object>();
        for(TreeNode a:menuCommon){
            Map<String,Object> childArray = new LinkedHashMap<String, Object>();
            if(a.getParentId() .equals(id)){
                setTreeMap(childArray,a);
                lists.add(childArray);
            }
        }
        return lists;
    }

    private void setTreeMap(Map<String,Object> mapArr,TreeNode treeNode) {
        mapArr.put("id", treeNode.getId());
        mapArr.put("title", treeNode.getTitle());
        mapArr.put("parentId", treeNode.getParentId());
        List<?> children = menuChild(treeNode.getId());
        if (children.size() > 0) {
            mapArr.put("hasChild", true);
        } else {
            mapArr.put("hasChildren", false);
        }
        mapArr.put("children", menuChild(treeNode.getId()));
    }

   }
public R<List<Object>> gorupByDept(@PathVariable String companyCode,
                                          @Valid RemoteQueryDTO queryParams) {
    List<TreeNode> treeNodeList = new ArrayList<>();
    TreeNode treeNode1 = new TreeNode("1","0","首页");
    TreeNode treeNode2 = new TreeNode("2","0","订单");
    TreeNode treeNode3 = new TreeNode("3","1","预约");
    TreeNode treeNode4 = new TreeNode("4","2","捐献");
    TreeNode treeNode5 = new TreeNode("5","4","我的订单");
    TreeNode treeNode6 = new TreeNode("6","5","个人中心");
    TreeNode treeNode7 = new TreeNode("7","6","个人中心2");
    TreeNode treeNode8 = new TreeNode("8","0","个人中心3");
    treeNodeList.add(treeNode1);
    treeNodeList.add(treeNode6);
    treeNodeList.add(treeNode5);
    treeNodeList.add(treeNode3);
    treeNodeList.add(treeNode4);
    treeNodeList.add(treeNode2);
    treeNodeList.add(treeNode7);
    treeNodeList.add(treeNode8);
    TreeUtil treeUtil = new TreeUtil();
    return R.ok(treeUtil.treeMenu(treeNodeList));
}

-----------效果图

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

layui树形渲染、layui树形后端返回类型、layui树形属性设置 的相关文章

随机推荐

  • c++之值传递,指针传递与引用传递详解

    值传递 形参是实参的拷贝 改变形参的值并不会影响外部实参的值 从被调用函数的角度来说 值传递是单向的 实参 gt 形参 参数的值只能传入 不能传出 当函数内部需要修改参数 并且不希望这个改变影响调用者时 采用值传递 指针传递 形参为指向实参
  • lvs出现No such device or address错误解决方法

    lvs出现No such device or address错误解决方法 参考文章 1 lvs出现No such device or address错误解决方法 2 https www cnblogs com Zrecret p 12251
  • 什么是微信分付?微信分付怎么开通?如何3步开通微信分付

    什么是微信分付 支付宝中的花呗大家知道吧 微信分付就是类似这种功能的存在 简单来说也是一个借贷模块 微信分付怎么开通 我们知道了它的功能 就会想到怎么开通 比较人难免有周转不灵的时候 下面就来看看这个功能怎么开启吧 第1步 打开手机微信后
  • 输入捕获中断函数分析解读

    输入捕获中断函数 回想起刚学stm32的时候 看到正点原子哥的输入捕获中断函数代码 让我心生畏惧啊 但是还是硬着头皮去读 勉勉强强的看懂了 今天再次回顾一下这个经典的代码 真的是受益匪浅 赞叹原子哥的思路清晰 大家看下文的时候 可以把程序代
  • 未来已来,腾讯AI计算网络

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 作者 由鹅厂网事发表在云 社区 鹅厂网事 由深圳市腾讯计算机系统有限公司技术工程事业群网络平台部运营 我们希望与业界各位志同道合的伙伴交流切磋最新的网络 服务器行业动态信息 同时分享
  • Pycharm的git/github配置及其问题解决

    1 连接git及github账号 首先右键file 选择setting 进入version control点击 会看到右面的Directory 此时可以进行git配置操作 点击github进入github账号配置 输入完账号密码后 点击te
  • Linux下根目录

    在linux下我们一直使用很多命令 比如ls cd mkdir等等 那这些命令是在哪个目录里呢 我们可以先看看根目录 所有目录都挂在根目录下 有且只有一个根目录 所有东西都从根目录开始 如果在终端输入 home 其实是告诉电脑从 根目录 开
  • 【JqGrid】jqgrid合并单元格之jeesite(jsite)项目中dataGrid合并单元格

    1 参考jqgrid官方的事件和方法https blog mn886 net jqGrid http www trirand com jqgridwiki doku php id wiki methods http www trirand
  • 可变参数模板与完美转发

    可变参数模板 可变参数模板 variadic template 是C 11新增的一项特性 使得模板参数可以任意化 一个基本的可变参数模板声明如下 template
  • 拜访陈朋之老师所感

    初次结识 妻子在2018年12月份备考PMP考试时 我陪妻子去上PMP培训课程 有幸结识陈朋之老师 由于当时课间请教陈老师问题的人比较多 我和陈老师只是做了自我介绍 未能进行深入交流 所幸期间妻子一直请教陈老师问题 经过商易大家约了一个时间
  • 常见的U盘,内存卡修复工具及其修复方法

    内存卡几乎每天都得使用 使用率非常高 当然出错或出毛病的时间也会很多 在平时使用内存卡的时候最容易出错的几点 1 内存卡读不出来或不被识别的毛病 2 在你急需存储资料的时候突然来个内存卡无法格式化让你懊恼不已 3 莫名的出现文件无法删除 文
  • 南开大学计算机科学与技术初试教材,南开大学计算机软件初试全书.pdf

    灰灰考研 南开大学plus 版本 附录四 南开大学plus 版本2 2019 南开大学招生简章2 2018 南开大学信息汇总3 2019 南开大学考试大纲10 812 计算机综合基础考试大纲10 813 程序设计与数据结构考试大纲12 81
  • openwrt-无线配置

    来源 华清远见嵌入式学院 默认开启无线网络 修改 package kernel mac80211 files lib wifi mac80211 sh vi package kernel mac80211 files lib wifi ma
  • LaTex科学论文写作

    关于科学论文的写作 之前也写过一些零散的总结 对科学论文的写作流程做一个总结 一般情况下 科学类论文包含论文正文 图表等相应的内容 在LaTeX中都需要相应的代码进行插入 参考文献也是通过自己构建数据库然后调用代码进行编译 从期刊网站下载模
  • 利用脑电和功能磁共振成像(fMRI)捕捉自我生成、任务启动的思维的时空动态

    自我产生 self generated 的认知的时间结构是有意义的意识流形成的关键属性 当我们休息时 我们的思想在不同的精神状态下从一个思想游荡到另一个思想 尽管正在进行的心理过程非常重要 但要捕捉这些状态并将其与特定的认知内容联系起来仍是
  • 两行Python代码实现视频负片特效

    老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知识 带来了阅读量 撩动了老猿的心 决定跟风一把 推
  • sql不在范围内_SQL语法——BETWEEN 操作符选取介于两个值之间的数据范围内的值...

    BETWEEN 操作符在 WHERE 子句中使用 作用是选取介于两个值之间的数据范围内的值 SQL BETWEEN 语法 演示数据库 BETWEEN 操作符实例 现在 我们希望获取 Students hobby t 表中 Age字段值 14
  • 喜报|众享链网荣获NIISA联盟2021年度技术创新奖特等奖

    2022年9月30日 互联网数据中心产业创新战略联盟 以下简称NIISA联盟 公布了2021年度技术创新奖 国内首个分布式共治的产业级联盟链体系 众享链网荣获NIISA联盟2021年度技术创新奖信息基础平台特等奖 2021年度技术创新奖项评
  • 1006 Sign In and Sign Out (25分) PAT甲级

    1006 Sign In and Sign Out 25分 At the beginning of every day the first person who signs in the computer room will unlock
  • layui树形渲染、layui树形后端返回类型、layui树形属性设置

    最近工作老是和layui打交道 躺过了坑有必要记录一下 下面直接上代码 前端 ajax type get url g const orb url api v1 department companyCode equipment deptIds