SSM中dtree的简单实现
首先 layui 的模型dtree
var data={
status:{code:200,message:"操作成功"},
data: [
{id:"001",title: "湖南省",parentId: "0"},
{id:"002",title: "湖北省",parentId: "0"},
{id:"003",title: "广东省",parentId: "0"},
{id:"004",title: "浙江省",parentId: "0"},
{id:"005",title: "福建省",parentId: "0"},
{id:"001001",title: "长沙市",parentId: "001"},
{id:"001002",title: "株洲市",parentId: "001"},
{id:"001003",title: "湘潭市",parentId: "001"},
{id:"001004",title: "衡阳市",parentId: "001"},
{id:"001005",title: "郴州市",parentId: "001"},
{id:"002001",title: "武汉市",parentId: "002"},
{id:"003001",title: "广州市",parentId: "003"},
{id:"004001",title: "杭州市",parentId: "004"}
]
}
效果图

数据库字段名尽量与模板一致,不一致可以使用别名

controller层
/**
* <p>
* 前端控制器
* </p>
*
* @author ZHS
* @since 2020-03-17
*/
@RestController
@RequestMapping("/dept")
public class DeptController {
@Autowired
private DeptService deptService;
/**
* 加载部门管理左边的部门树的json
*/
@RequestMapping("loadDeptManageLeftTreeJson")
public DataGridView loadDeptManageLeftTreeJson(DeptVo deptVo){
List<Dept> list = deptService.list();
List<TreeNode> treeNodes = new ArrayList<>();
for (Dept dept : list) {
boolean spread = dept.getOpen() == 1 ? true : false;
treeNodes.add(new TreeNode(dept.getId(),dept.getPid(),dept.getTitle(),spread));
}
return new DataGridView(treeNodes);
}
}
前端代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>左侧部门树</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="format-detection" content="telephone=no">
<link rel="icon" href="/favicon.ico">
<link rel="stylesheet" href="/resources/layui/css/layui.css" media="all" />
<link rel="stylesheet" href="/resources/css/public.css" media="all" />
<link rel="stylesheet" href="/resources/layui_ext/dtree/dtree.css" media="all" />
<link rel="stylesheet" href="/resources/layui_ext/dtree/font/dtreefont.css" media="all" />
</head>
<body>
<!-- 存放树的容器 -->
<ul id="deptTree" class="dtree" data-id="0"></ul>
<script type="text/javascript" src="/resources/layui/layui.js"></script>
<script type="text/javascript">
layui.extend({
dtree: '/resources/layui_ext/dtree/dtree' // {/}的意思即代表采用自有路径,即不跟随 base 路径
}).use(['dtree','layer','jquery'], function(){
var dtree = layui.dtree;
var layer = layui.layer;
$ = layui.jquery;
// 初始化树
var deptTree = dtree.render({
elem: "#deptTree",
dataStyle:"layuiStyle", //使用layui 数据风格的格式
dataFormat: "list", //配置data风格为list
response:{message:"msg",statusCode:0}, //修改response中返回数据的定义
url: "/dept/loadDeptManageLeftTreeJson" // 使用url加载(可与data加载同时存在)
});
// 绑定节点点击
dtree.on("node('deptTree')" ,function(obj){
layer.msg(JSON.stringify(obj.param));
});
});
</script>
</body>
</html>
最后效果图


浙公网安备 33010602011771号