treeTable 模块下载:
https://gitee.com/whvse/treet...

下载后,treeTable.js、treeTable.css 的搁置目录别离为:
layuiadmin/modules/treeTable.js
layuiadmin/modules/treeTable/treeTable.css

页面元素:

<div style="width: 100%;overflow-x: auto;">   <table class="layui-hide" id="businessConfigListTable" lay-filter="businessConfigListTable"></table></div>

定义:

layui.config({    base: '${ctxLayui}/layuiadmin/'}).extend({    index: 'lib/index'}).use(['index', 'table','dict','laydate','util','treeTable'], function(){    var $ = layui.$,table = layui.table,form = layui.form;    var dict = layui.dict;    var laydate = layui.laydate;    var admin = layui.admin;    var util = layui.util;    var treeTable = layui.treeTable;    

渲染:

var insTb = treeTable.render({            elem: '#businessConfigListTable',            tree: {                iconIndex: 1,  // 折叠图标显示在第几列                idName: 'id',  // 自定义id字段的名称                pidName: 'parentId',  // 自定义标识是否还有子节点的字段名称            },            cols: [                {type: 'checkbox', fixed: 'left'},                {type: 'numbers',width: 120,style:'text-align:left'},//                {field: 'id', title: 'ID',width: 180},                {field: 'type', title: '类型', width: 120,templet:tplType},                {field: 'name', title: '名称', width: 200},                {field: 'value', title: '值'},                {field: 'sortOrder', title: '排序', width: 120},                {field: 'status', title: '状态', width: 150,templet:tplStatus},                {title:'操作', toolbar: '#businessConfigListTable-bar', width:120}            ],            reqData: function(data, callback) {                // 在这里写ajax申请,通过callback办法回调数据                var url = ctx+'/business/businessConfig/businessConfigTreeList';                var rtn = admin.syncReq(url,{});                var rtnData = rtn.data;                for(var i=0;i<rtnData.length;i++){                    var vo = rtnData[i];                    vo.open = true;                }                callback(rtnData);            }            ,height: 'full-99'        });

接口:business/businessConfig/businessConfigTreeList, 如下:

@RequestMapping(value = "businessConfigTreeList")@ResponseBodypublic BaseResp businessConfigTreeList(@ModelAttribute("command") BusinessConfigQo command){    BaseResp resp = new BaseResp();    try{        List<BusinessConfigPo> list = businessConfigService.businessConfigTreeList(command);        resp.setData(list);    }catch (Exception e){        error(logger,resp,e);    }    return resp;}

其中 BaseResp 构造:

/** * 应答返回码 */private int code = RC_OK;/** * 应答返回音讯 */private String msg;/** * 跳转url */private String url = "";private int count;private boolean success = false;// 是否胜利private Object data;

service层获取数据,递归:

public List<BusinessConfigPo> businessConfigTreeList(BusinessConfigQo command) throws Exception{    command.setParentId(0l);    command.setLimit(99999);    List<BusinessConfigPo> list = this.businessConfigMapper.query(command);    for(BusinessConfigPo rec:list){        List<BusinessConfigPo> children = getChildrenConfig(rec);        rec.setChildren(children);    }    return list;}private List<BusinessConfigPo> getChildrenConfig(BusinessConfigPo rec) throws Exception{    BusinessConfigQo qo = new BusinessConfigQo();    qo.setLimit(99999);    qo.setParentId(rec.getId());    List<BusinessConfigPo> list = this.businessConfigMapper.query(qo);    if(list==null){        return null;    }    for(BusinessConfigPo child:list){        List<BusinessConfigPo> children = getChildrenConfig(child);        child.setChildren(children);    }    return list;}