ztree+jsp实现的节点新增、修改、删除图标,以及提醒、jajx保存,还可以节点拖动...

ztree+jsp实现的节点新增、修改、删除图标,以及提醒、jajx保存,还可以节点拖动

<%@ page contentType="text/html; charset=UTF-8" %>
<%
	String path = request.getContextPath();
	String code = request.getParameter("code");
	code = "001003"; //综合查询
	if(code==null)
		code = "001";
%>
<!DOCTYPE html>
<HTML>
<HEAD>
	<TITLE> ZTREE DEMO - Simple Data</TITLE>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<SCRIPT type="text/javascript">
		var contextpath = "<%=path%>";
	</SCRIPT>

	<style type="text/css">
		.ztree li span.button.add {margin-left:2px; margin-right: -1px; background-position:-144px 0; vertical-align:top; *vertical-align:middle}
	</style>
    <link href="<%=path %>/frameworks/ligerUI/skins/Aqua/css/ligerui-all.css" rel="stylesheet" type="text/css" /> 
    <script src="<%=path %>/frameworks/jquery/jquery-1.4.4.min.js" type="text/javascript"></script>   
    <script src="<%=path %>/frameworks/ligerUI/js/core/base.js" type="text/javascript"></script>     
    <script src="<%=path %>/frameworks/ligerUI/js/core/util.js" type="text/javascript"></script>    
    <script src="<%=path %>/frameworks/ligerUI/js/plugins/ligerDrag.js" type="text/javascript"></script>
    <script src="<%=path %>/frameworks/ligerUI/js/plugins/ligerResizable.js" type="text/javascript"></script>
    <script src="<%=path %>/frameworks/ligerUI/js/plugins/ligerWindow.js" type="text/javascript"></script>
    <script src="<%=path %>/frameworks/ligerUI/js/plugins/ligerDialog.js" type="text/javascript"></script>

	<link rel="stylesheet" href="<%=path %>/frameworks/css/zTreeStyle/zTreeStyle.css" type="text/css">
	<script type="text/javascript" src="<%=path %>/frameworks/ztree/jquery.ztree.core-3.5.js"></script>
	<script type="text/javascript" src="<%=path %>/frameworks/ztree/jquery.ztree.excheck-3.5.js"></script>
	<script type="text/javascript" src="<%=path %>/frameworks/ztree/jquery.ztree.exedit-3.5.js"></script>
    <link href="<%=path %>/frameworks/main/treeManager.css" rel="stylesheet" type="text/css" /> 
    <script src="<%=path %>/js/json2.js" type="text/javascript"></script>    
    <script src="<%=path %>/js/uuid.js" type="text/javascript"></script>  
	<SCRIPT type="text/javascript">
		var code = "<%=code%>";
		var listenerClass = "foresee.wtp.um.tree.TreeManagerHandler";
		var url = contextpath+"/json";
		var fheight = 300, fwidth = 650;

		var setting = {
			view: {
				addHoverDom: addHoverDom,
				removeHoverDom: removeHoverDom,
				selectedMulti: false
			},
			edit: {
				enable: true,
				editNameSelectAll: true,
				showRemoveBtn: showRemoveBtn,
				showRenameBtn: showRenameBtn
			},
			data: {
				simpleData: {
					enable: true
				}
			},
			callback: {
				beforeDrag: beforeDrag,
				beforeEditName: beforeEditName,
				beforeRemove: beforeRemove,
				beforeRename: beforeRename,
				onRemove: onRemove,
				onRename: onRename
			}
		};

		function showLog(str) {
		}

		var newCount = 1,curTreeNode;
		function addHoverDom(treeId, treeNode) {
			curTreeNode = treeNode;
			var sObj = $("#" + treeNode.tId + "_span");
			if (treeNode.editNameFlag || $("#addBtn_"+treeNode.id).length>0) return;
			var addStr = "<span class='button add' id='addBtn_" + treeNode.id
				+ "' title='add node' onfocus='this.blur();'></span>";
			sObj.after(addStr);
			//绑定新增按钮事件
			var btn = $("#addBtn_"+treeNode.id);
			if (btn) btn.bind("click", function(){
				//找出新增按钮的left、top
				var btnleft = btn.offset().left;
				var btntop = btn.offset().top;
				$.ligerDialog.open({ url: 'nodeForm.jsp', height: fheight,width: fwidth,title: '新增节点', modal: true,
					left:btnleft, top:btntop,name:'nodeForm',
					buttons: [ { text: '确定', onclick: function (item, dialog) { 
											//保存节点
											saveNode(item, dialog, treeNode, 'add'); 
										 } 
									  }, 
									 { text: '取消', onclick: function (item, dialog) { dialog.close(); } } ] 
				});				
				return false;
			});
		};
		function removeHoverDom(treeId, treeNode) {
			$("#addBtn_"+treeNode.id).unbind().remove();
		};
		//callback
		function saveNode(item, dialog, treeNode,oper)  //选择一笔,按确认按钮带回  
        {  
			var name = dialog.frame.$("#nodeNameTxt").val();
			var code = dialog.frame.$("#nodeCodeTxt").val();
			var url = dialog.frame.$("#urlTxt").val();
			var openCode = dialog.frame.$("#openCodeTxt").val();
			var folder = dialog.frame.$("input[name='folderOpt']:checked").val();			
			//alert("name: "+name+", code: "+code);
			var param = {name:name,code:openCode,id:curTreeNode.id,type:'child',folder:folder,url:url,oper:oper};
			ajaxcall(param, function(d) {
				dialog.close(); 
				//保存成功后,才将真正添加节点
				d = d[0].data;
				if(!d) return;
				var zTree = $.fn.zTree.getZTreeObj("leftTree");
				if(oper=='add') //新增节点
					zTree.addNodes(treeNode, {id:d.id, pId:d.pId, name:d.name});
				if(oper=='edit') {//重命名节点
					treeNode.name = name;
					//zTree.setNodeName(treeNode);
					//zTree.editNode(setting, treeNode);
					zTree.editName(treeNode);
					zTree.cancelEditName();
				}
			 }, oper=='add'?'addTreeNode':'updTreeNode');              
        } 

		var log, className = "dark";
		function beforeDrag(treeId, treeNodes) {
			return false;
		}
		function beforeEditName(treeId, treeNode) {
			className = (className === "dark" ? "":"dark");
			showLog("[beforeEditName ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
			var zTree = $.fn.zTree.getZTreeObj("leftTree");
			zTree.selectNode(treeNode);
			//查询选中的节点数据
			var param = {id:treeNode.id};
			ajaxcall(param, function(d) {
				//保存成功后,才将真正添加节点
				d = d[0].data.d;
				if(!d) return;
				//编辑按钮
				var btn = $('#'+treeNode.tId+'_edit');
				//找出新增按钮的left、top
				var btnleft = btn.offset().left;
				var btntop = btn.offset().top;
				var url = 'nodeForm.jsp?name='+jsc.trim(d.name)+'&url='+jsc.trim(d.url)+'&code='+jsc.trim(d.code)+'&openCode='+jsc.trim(d.openCode);
				$.ligerDialog.open({ url: url, height: fheight,width: fwidth,title: '修改节点', modal: true,
					left:btnleft, top:btntop,name:'nodeForm',
					buttons: [ { text: '确定', onclick: function (item, dialog) { 
											//保存节点
											saveNode(item, dialog, treeNode,'edit'); 
										 } 
									  }, 
									 { text: '取消', onclick: function (item, dialog) { dialog.close(); } } ] 
				});						
			 }, 'getNodeData');   		
			return false;
		}
		function beforeRemove(treeId, treeNode) {
			className = (className === "dark" ? "":"dark");
			var zTree = $.fn.zTree.getZTreeObj("leftTree");
			zTree.selectNode(treeNode);
			//alert(JSON.stringify(treeNode));			
			if(confirm("确认删除 节点 -- " + treeNode.name + " 吗?")) {
				var param = {id:treeNode.id,sclx:'qzsc'};
				ajaxcall(param, function(d) {
					//保存成功后,才将真正添加节点
					var nodes = zTree.getSelectedNodes();
					zTree.removeNode(nodes[0]);
				 }, "delTreeData");  				
			}
			return false;
		}
		function onRemove(e, treeId, treeNode) {
			showLog("[ onRemove ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
		}
		function beforeRename(treeId, treeNode, newName) {
			className = (className === "dark" ? "":"dark");
			showLog("[ beforeRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
			if (newName.length == 0) {
				alert("节点名称不能为空.");
				var zTree = $.fn.zTree.getZTreeObj("leftTree");
				setTimeout(function(){zTree.editName(treeNode)}, 10);
				return false;
			}
			return true;
		}
		function onRename(e, treeId, treeNode) {
			showLog("[onRename ]&nbsp;&nbsp;&nbsp;&nbsp; " + treeNode.name);
		}
		function showRemoveBtn(treeId, treeNode) {
			//return !treeNode.isFirstNode;
			return true;
		}
		function showRenameBtn(treeId, treeNode) {
			//return !treeNode.isLastNode;
			return true;
		}

		function beforeDrag(treeId, treeNodes) {
			for (var i=0,l=treeNodes.length; i<l; i++) {
				if (treeNodes[i].drag === false) {
					return false;
				}
			}
			return true;
		}
		function beforeDrop(treeId, treeNodes, targetNode, moveType) {
			return targetNode ? targetNode.drop !== false : true;
		}
		
		$(document).ready(function(){
			//默认隐藏右边一棵树相关
			$("#rightDiv").hide();
			$("#rightTreeOpt").hide();
			$("#modTwoTree").click(function() {
				if($(this).attr("checked")) {
					$("#rightDiv").show();
					$("#rightTreeOpt").show();
				} else {
					$("#rightDiv").hide();
					$("#rightTreeOpt").hide();
				}
			});
			//获取第一棵树的数据
			var o = {code:code,method:'getModifyTreeData'};
			ajaxcall(o, function(d) {
				//查询成功处理
				var zNodes = d[0].data.list;
				for (var i=0, l=zNodes.length; i<l; i++) {
					var node = zNodes[i];
					if(node.hasOwnProperty("pid"))
						node.pId = node.pid;
					node.name = node.name.replace(/\.n/g, '.');
				}
				$.fn.zTree.init($("#leftTree"), setting, zNodes);
				$.fn.zTree.init($("#rightTree"), setting);				
			});
		});

		function ajaxcall(data, callback, method, __listenerClass) {
			var o = {___name:'execUnit',___service:'handlerService'};
			//判断并设置method
			if(method)	o.method = method;
			else if(!data.hasOwnProperty("method")) {
				alert("请指定method");
				return;
			}
			//判断并设置listenerClass
			if(__listenerClass) o.listenerClass = __listenerClass;
			else if(listenerClass) o.listenerClass = listenerClass;
			else if(!data.hasOwnProperty("listenerClass")) {
				alert("请指定listenerClass");
				return;
			}
 			$.ajax({
				type: "post",
				dataType: "json",//返回json格式的数据
				url: url,//要访问的后台地址
				data: $.extend(o, data),
				success: successHandle,
				error:errorHandle
			});
			function successHandle(d) {
				var error = d[0]["error"];
				var exception = d[0]["exception"];
				if(exception && (error=="true" || error==true)) {
					//后台出现异常,提示错误信息
					alert(exception);
				}
				callback(d)
			}
			function errorHandle() {

			}
		}
     </script> 
</head>
<body>
<div class="content_wrap">  
	<div>
		<ul class="info">
			<li class="title">
				<ul class="list">
				<li>删除节点选项:
					<input type=radio id="qrscOpt" name="scOpt" checked><label for="qrscOpt">已分配权限的节点,提醒确认是否删除</label>
					<input type=radio id="scqxOpt" name="scOpt"><label for="scqxOpt">删除节点的同时,也删除权限</label>
					<input type=radio id="bscOpt" name="scOpt"><label for="bscOpt">已分配权限的节点,不能删除</label>
				</li>
				<li>
					<input type=checkbox id="dispBtnOpt"><label for="dispBtnOpt">显示菜单节点的按钮节点</label>
				</li>
				<!--
				<li>
					<input type=checkbox id="modTwoTree"><label for="modTwoTree">在不同菜单树间修改</label>
					&nbsp;&nbsp;&nbsp;
					<span id="rightTreeOpt">
					右边树类型:
					<select id="rightTreeType">
						<option value="001">----- 请选择 -----</option>
						<option value="002">系统管理</option>
						<option value="003">综合查询</option>
					</select>
					&nbsp;&nbsp;&nbsp;
					提示:你可以拖动一棵树节点到另一棵树上
					</span>
				</li>
				-->
				</ul>
			</li>
		</ul>
	</div>
	<div class="zleftTreeBackground left">
		<ul id="leftTree" class="ztree"></ul>
	</div>
	<div class="right" id="rightDiv">
		<ul id="rightTree" class="ztree"></ul>
	</div>
</div>
</body>
</html>

转载于:https://my.oschina.net/webas/blog/109204

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值