最近工作老是和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));
}
-----------效果图