前台页面HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="./layui/css/layui.css" media="all">
<script type="text/javascript" src="js/global.js"></script>
<script src="./layui/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
</head>
<body>
<div hidden="hidden" class="layui-form-item" style="margin-top: 20px">
<label class="layui-form-label">ID:</label>
<div class="layui-input-inline" style="width: 350px">
<input type="text" name="id" id="userid" required lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div id="demo" class="demo-tree-more"></div>
<div class="layui-form-item">
<div class="layui-input-block" style="margin-left:0;text-align:center;">
<button class="layui-btn layui-btn-blue" id="formDemo">确认选择</button>
</div>
</div>
<script>
layui.use(['tree'], function() {
$ = layui.$;
var tree = layui.tree;
function getReole() {
var userid = document.getElementById("userid").value;
$.ajax({
url: globalData.server + "./Modules/getAllModulesss",
type: "post",
datatype: "json",
async: false,
data: {
"userId": userid
},
success: function(data1) {
tree.render({
elem: '#demo',
showCheckbox: true,
data: data1,
id: 'id',
});
},
});
$("#formDemo").click(function() {
var checkData = tree.getChecked('id');
if(checkData.length == 0) {
layer.msg("请至少选择一个节点", {
icon: 6
});
return false;
} else {
var ids = [];
var chil = [];
for(var key in checkData) {
var node = checkData[key];
ids.push(node.id);
chil = node.children;
for(var key in chil) {
var children = chil[key];
ids.push(children.id);
}
}
$.ajax({
url: globalData.server + './ModulesRoles/addModuleByIdRoles',
type: "POST",
datatype: "json",
async: false,
data: {
"roleId": userid,
'ids': JSON.stringify(ids),
},
success: function(result) {
if(result.count > 0) {
layer.msg(result.msg, {
icon: 6
});
setTimeout(function() {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 2000);
} else {
layer.msg(result.msg, {
icon: 6
});
}
}
});
}
});
}
setTimeout(function() {
getReole();
}, 500);
});
</script>
</body>
</html>
实体类
package com.crm.entity;
import java.util.ArrayList;
import java.util.List;
import com.crm.entity.Modules;
import lombok.Data;
@Data
public class Modules {
private Integer id;
private String name;
private String title;
private Boolean checked;
private Integer parentId;
private String path;
private String weight;
private String one;
private String two;
private List<Modules> children = new ArrayList<>();
}
服务层实现类代码
@Override
public List<Modules> getAllModulesss(int userId) {
List<Modules> list = new ArrayList<>();
List<Modules> listss = new ArrayList<>();
list = modulesDao.getAllModulesAlls();
for (Modules modules : listss) {
modules.setChecked(false);
}
listss = modulesDao.getAllModuless(userId);
List<Modules> treeNodes = new ArrayList<Modules>();
for (Modules treeNode : list) {
for (Modules item : listss) {
if (treeNode.getId() == item.getId()) {
treeNode.setChecked(true);
}
}
}
for (Modules treeNode : list) {
if (treeNode.getParentId() == 0 || treeNode.getParentId() == null) {
treeNodes.add(findChildren(treeNode, list));
}
}
for (Modules modules : treeNodes) {
if (modules != null && modules.getChildren() != null && modules.getChildren().size() > 0) {
int i = 0;
for (Modules modules2 : modules.getChildren()) {
if (modules2.getChecked() != null && modules2.getChecked() == true) {
i += 1;
}
}
if (i != modules.getChildren().size()) {
modules.setChecked(false);
}
i = 0;
}
}
return treeNodes;
}
public Modules findChildren(Modules treeNode, List<Modules> treeList) {
for (Modules item : treeList) {
if (treeNode.getId() == item.getParentId()) {
if (treeNode.getChildren() == null) {
treeNode.setChildren(new ArrayList<Modules>());
}
treeNode.getChildren().add(findChildren(item, treeList));
}
}
return treeNode;
}