easyui tree

 CSS:

#auditTree .tree-folder {
    background: url('/images/audit.png') no-repeat center center;
}

#auditTree .tree-file {
	background: url('/images/result.png') no-repeat center center;
}

	#auditTree .tree-file.icon-start, #auditTree .tree-folder.icon-start, #auditTree .tree-folder-open .icon-start {
		background: url('/scripts/jquery-easyui-1.6.3/themes/icons/start.png') no-repeat center center;
	}

#auditTree span.icon-add.icon-start {
	background: url('/scripts/jquery-easyui-1.6.3/themes/icons/edit_add.png') no-repeat center center;
}

	#auditTree .tree-file.icon-stop {
		background: url('/scripts/jquery-easyui-1.6.3/themes/icons/stop.png') no-repeat center center;
	}

#auditTree span.node-action{
	display: none;
	width:16px;
	height:16px;
	vertical-align:top;
}

#auditTree .tree-node-hover span.node-action {
	display: inline-block;
}

html:

<ul id="auditTree" class="easyui-tree" data-options="formatter:formatAuditTreeNode,onContextMenu:showAuditTreeMenu,onDblClick:editAuditNode,onClick:showAuditNode,onAfterEdit:afterEditAuditNode"></ul>
<div id="auditTreeMenu" class="easyui-menu" style="width:120px;" data-options="onClick:auditTreeMenuClick">
	<div id="addChild" data-options="name:'addChild',iconCls:'icon-add'">添加节点</div>
	<div id="removeNode" data-options="name:'removeNode',iconCls:'icon-remove'">移除节点</div>
</div>

 JS:

jQuery(function ($) {
	//添加删除节点
	$("#auditTree").on("click", ".node-action.icon-add,.node-action.icon-remove", function () {
		var node = $(this).parent().parent().closest(".tree-node");
		if ($(this).hasClass("icon-add")) {
			//添加
			_addAuditTreeNode(node);
		}
		else {
			//删除
			_removeAuditTreeNode(node);
		}
	});
});

/*
* 显示节点快捷菜单
*/
function showAuditTreeMenu(e, node) {
	e.preventDefault();
	// 查找节点
	$("#auditTree").tree('select', node.target);
	//结束节点
	if (node.id === -1)
		return;

    //开始节点
	if (node.id === 0) {
		$("#auditTreeMenu").menu("disableItem", document.getElementById("removeNode"))
	}
	else {
		$("#auditTreeMenu").menu("enableItem", document.getElementById("removeNode"))
	}
	
	// 显示快捷菜单
	$("#auditTreeMenu").menu('show', {
		left: e.pageX,
		top: e.pageY
	});
}

/*
* 双击编辑名称
*/
function editAuditNode(node) {
	if (node.id === 0 || node.id === -1)
		return;
	$("#auditTree").tree('beginEdit', node.target);
}

/*
* 编辑名称后同步属性
*/
function afterEditAuditNode(node) {
	if (!node.text) {
		node.text = "节点名称";
		$('#auditTree').tree('update', {
			target: node.target,
			text: node.text
		});
	}
	if (!node.attributes) {
		node.attributes = {};
	}
	node.attributes.name = node.text;
	$("#auditRuleName").textbox("setText", node.text);
}

/*
* 树节点格式化显示
*/
function formatAuditTreeNode(node) {
	let txt = node.text;
	if (node.id == -1) {
		return txt;
	}

    //非开始页节点添加[结束]标记 $('#auditTree').tree("isLeaf",node.target)
	if (node.id !== 0 && (!node.children || !node.children.length)) {
		txt += "[结束]";
	}

    //鼠标悬停添加,不能添加tree-icon样式,否则添加的第一个子节点缩进有问题
	txt += "<span class=\"node-action icon-add\" title=\"添加节点\"></span>";
	if (node.id !== 0) {
		//鼠标悬停移除
		txt += "<span class=\"node-action icon-remove\" title=\"移除节点\"></span>";
	}
	return txt;
}

/*
* 选择节点后显示节点配置
*/
function showAuditNode(node) {

	let attr = node.attributes;
	if (node.id == 0 || node.id == -1) {
		attr = {};
		$("#auditRuleName,#auditRuleCondition").textbox("disable");
		$("#auditRuleUser").tagbox("disable");
	}
	else {
		$("#auditRuleName,#auditRuleCondition").textbox("enable");
		$("#auditRuleUser").tagbox("enable");
	}
	
	//开始初始化表单,不触发编辑改变事件
	window.initAuditForm = true;
	$("#auditRuleName").textbox("setText", attr.name);
	if (attr.auditResult) {
		$("#auditRuleResult").checkbox("check");
	}
	else {
		$("#auditRuleResult").checkbox("uncheck");
	}
	$("#auditRuleCondition").textbox("setText", attr.condition);
	if (attr.users && attr.users.length > 0) {
		var userType = attr.users[0].userType;
		let vs = $.map(attr.users, function (u) { return u.userId; });
		if ($("input[name='auditRuleUserType']:checked").val() != userType) {
			$("#auditRuleUser").one("datasource.changed", function () {
				$("#auditRuleUser").tagbox('setValues', vs);
			});
			$("#auditRuleUserType_" + userType).radiobutton("check");
		}
		else {
			$("#auditRuleUser").tagbox('setValues', vs);
		}
	}
	else {
		$("#auditRuleUser").tagbox('setValues', []);
	}
	//初始化结束
	window.initAuditForm = false;
}

/*
* 添加子节点
*/
function _addAuditTreeNode(target) {
	$('#auditTree').tree('append', {
		parent: target,
		data: [{
			id: -new Date().getTime(),
			text: "节点名称",
			state: "open",
			attributes: {
				id: null,
				name: "节点名称",
				nextId: -1
			}
		}]
	});
}

/*
* 移除子节点
*/
function _removeAuditTreeNode(target) {
	$.messager.confirm("确定", "确定移除当前节点以及子节点吗", function (r) {
		if (r) {
			$('#auditTree').tree('remove', target);
		}
	});
}

/*
* 快捷菜单事件
*/
function auditTreeMenuClick(item) {
	let node = $("#auditTree").tree('getSelected');
	if (item.name == "addChild") {
		_addAuditTreeNode(node.target);
	}
	if (item.name == "removeNode") {
		_removeAuditTreeNode(node.target);
	}
}

效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
easyui是一个基于jQuery的UI框架,提供了丰富的界面组件和交互效果,方便开发人员快速构建Web页面。而treeeasyui中的一个树状组件,用于展示层级关系的数据。 在使用easyui tree进行java开发时,我们首先需要引入easyui的相关依赖包,并在页面中引入相应的脚本和样式文件。然后,我们可以通过在页面中定义一个div容器,将tree组件渲染在页面上。 在java后台代码中,我们需要提供数据给tree组件进行展示。一般来说,我们可以通过数据库查询、接口调用等方式获取数据,并将数据转换为json格式。然后,将json数据返回给前端页面,供tree组件使用。 接下来,我们需要在前端页面中初始化并配置tree组件。通过调用easyui提供的API,我们可以设置tree的数据源、展开图标、折叠图标、节点点击事件等。可以根据具体需求对tree进行自定义配置,以满足我们的业务需求。 在页面渲染完成后,easyui tree组件会自动将数据渲染为树状结构,并提供相应的交互功能,比如展开收起节点、选中节点等。我们可以通过对tree组件的事件进行监听,实现特定操作,比如点击节点后加载子节点、在节点上右键弹出菜单等。 总之,通过使用easyui tree组件,结合java后台开发,我们可以方便地实现树形结构的展示和交互操作,提升用户体验,简化开发流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪耀星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值