首先编写实体类dept
@Data
public class Depts {
private Integer deptid;
private String deptname;
private String headerman;
private String address;
private String tphone;
private Integer parentid;
private List<Depts> children;
}
接下来是查询出的数据 查询所有父节点(这里以部门为例子)
List<Depts> getDepts();
按照父节点查询出所有子节点
List<Depts> getDeptsparent(int id);
数据通过Controller来得到
@ResponseBody
@PostMapping("/treeshow")
public List<Depts> treeshow() throws Exception{
List<Depts> fdd=deptsService.getDepts();
if(fdd.size()>0){
for(Depts d:fdd){
d.setChildren(treeshow2(d.getDeptid()));
}
}
return fdd;
}
public List<Depts> treeshow2(int id) throws Exception{
List<Depts> zdd=deptsService.getDeptsparent(id);
if(zdd.size()>0){
for(Depts d:zdd){
d.setChildren(treeshow2(d.getDeptid()));
}
}
return zdd;
}
前端layui显示如下(记得要修改替换/layui/lay.modules下面的tree.js里面的名称(就是修改一下这个js文件))(在js中CTRL+F搜索初始名称为label改为改为自己需要显示的名称比如:deptname(说白了就是去修改tree.js在保存在这里插入代码片
))
前端代码
<div id="test1"></div>
javascript代码
<script src="/layui/layui.js"></script>
<script src="/js/jquery-3.3.1.min.js"></script>
<script>
layui.use(['laydate', 'laypage', 'layer', 'table', 'carousel', 'upload', 'element', 'slider','flow','tree'], function({
var flow = layui.flow;
var $ = layui.jquery;
var laydate = layui.laydate
, layer = layui.layer
var tree = layui.tree;
$.ajax({
url: "/Dept/treeshow",
type: "post",
dataType: "json",
success: function (data) {
tree.render({
elem: '#test1'
,data:data
,showCheckbox: true
,id: 'demoId1'
,click: function(obj){
var data = obj.data;
layer.msg('状态:'+ obj.state + '<br>节点数据:' + JSON.stringify(data));
}
});
}, error: function () {
alert("网络错误");
}
});
});
</script>