layui tree取消父子联动

  • Post author:
  • Post category:其他


最近改动一个老系统,发现原始layui tree当点击子级时,父级也会选中。因业务需要,需要将父子联动取消掉。因老版本的源代码未找到。索性将layui最新版本的tree.js源代码从

gitee

上copy下来进行修改。



tree.js变更点

setCheckbox方法变更位置:

在这里插入图片描述
在这里插入图片描述
getChecked方法变更位置:

不加此处逻辑,当获取选中状态时,无法获取子级



修改后的代码已上传到

github



使用

前台:

var tree = layui.tree;
window.orgTreeList = function(){
	$.ajax({
		type: 'POST',
		url: '/plugin/admin/organ/queryAllOrganTree',
		data : {},
		success:function(data){
			tree.render({
				elem: '#organTree',
				data: data,
				showCheckbox: true,
				checkChirld: false,
				id: 'id'
			});
			//设置初始化选中
			var selectedOrg = $("#orgIds").val();
			tree.setChecked('id', selectedOrg.split(","));
		}
	});
}

后台递归:

public Object queryAllOrganTree() {
	UsualReturnDTO dto = new UsualReturnDTO();
	dto.setCode(0);
	
	List<ZtreeNodeBo> organs = organService.findAllOrgan();
	
	List<ZtreeNodeBo> orgTree = this.eachList(organs);
	
	return orgTree;
}

private List<ZtreeNodeBo> eachList(List<ZtreeNodeBo> allOrgs) {
	List<ZtreeNodeBo> orgTree = new ArrayList<ZtreeNodeBo>();
	for(ZtreeNodeBo org : allOrgs) {
		if (StringUtils.isEmpty(org.getpId())) {
			org = bulidTree(allOrgs,org);
			orgTree.add(org);
		}
	}
	return orgTree;
}

private ZtreeNodeBo bulidTree(List<ZtreeNodeBo> allOrgs,ZtreeNodeBo node) {
	List<ZtreeNodeBo> children = new ArrayList<ZtreeNodeBo>();
	for(int i=0;i < allOrgs.size(); i++) {
		if(node.getId().equals(allOrgs.get(i).getpId())){
			children.add(bulidTree(allOrgs,allOrgs.get(i)));
		}
	}
	node.setChildren(children);
	return node;
}
/**
 * ztree 节点
 */
public class ZtreeNodeBo {
	
	private String id;
	
	private String pId;
	
	private String name;
	
	private String title;

	private String open;
	
	private String checked;
	
	private List<ZtreeNodeBo> children;
}



版权声明:本文为qichangleixin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。