关于ztree搜索问题

发布于 2021-12-02 13:34:53 字数 4977 浏览 762 评论 1

@zTree 你好,想跟你请教个问题:我有个业务 需要树,内容数据子节点科室  孙子节点是所在人员  ,我启用的异步,在点击科室的时候启动异步加载数据出来 没问题 但是,我如果添加一个搜索功能,不如名字,那么你必须先点击那个子节点科室讲人员信息加载出来,然后再输入内容才能查询出结果(PS:如果客户之间输入id的信息呢??客户没有点子节点科室,是找不到数据的)

            //查询事件
  			$("#tosearch").on("click",function(){
  			
  				var treeObj = $.fn.zTree.getZTreeObj("host");
  				var idnode= treeObj.getNodesByParam("name", "胡歌", null);//没有点击子节点科室时,查询的时候是个null,只有当你点击了这个节点 你再输入查询才有 如果这么做 我感觉我设计的思路就是个MDZZ PS:刚刚出来7个月
  				 
  				
			
  			
  			});

var init = function(){
  			    $.ajax({
						type:"post",
						dataType: 'json',
						url:"${base}/personnelFile/init.do",
						success:function(msg){
							var ogrin = msg.ogrin;//部门组织架构
							var childrenogin = msg.childrenogin;//子架构  
							var userlist = msg.userlist;//所以用户
							if(<#if powerMap.alldept?exists>true<#else>false</#if>){
								for(var i = 0 ; i<ogrin.length;i++){
									var arraytemp=new Array();
									ogrin[i].isParent=true;
									ogrin[i].flag=1;
									//取出子节架构 如果 节点的id = childrenorin 拼装array
									for(var j = 0 ; j<childrenogin.length;j++){
										if(ogrin[i].id==childrenogin[j].pid){
												childrenogin[j].flag=2;
												childrenogin[j].isParent=true;
												arraytemp.push(childrenogin[j]);	
										}
									}
									ogrin[i].children=arraytemp;
									
								}
								initajxNode(msg.root,msg.ogrin);
							}
							if(<#if powerMap.thisdept?exists>true<#else>false</#if>){
									//先查  
									var point = new Array()
									var arraytemp = new Array();
									var pidtemp ="";
									for(var i = 0 ; i<childrenogin.length;i++){
										if(msg.groupid==childrenogin[i].id){
											pidtemp = childrenogin[i].pid;
										}
									}
									
									for(var i = 0 ; i<childrenogin.length;i++){
										if(pidtemp==childrenogin[i].pid){//护士长  护士  普通 
											console.log(pidtemp+"---------"+childrenogin[i].pid)
											childrenogin[i].flag= 2;
											childrenogin[i].hs= "ok";
											childrenogin[i].isParent= true;
											point.push(childrenogin[i]);
										}
									}
									for(var i = 0 ; i<ogrin.length;i++){
												ogrin[i].isParent=true;
												ogrin[i].flag=1;
												childrenogin[i].pt= "ok";
											//console.log(point);
											
											if(ogrin[i].id==point[0].pid){
												ogrin[i].open = true;
												arraytemp.push(ogrin[i]);
											}
										
									}
									 arraytemp[0].children=point;
									initajxNode(msg.root,arraytemp);
							}
							
						}		
					});
  			};
			
			function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) 
			{	
						var treeObj = $.fn.zTree.getZTreeObj("host");
						
						
						treeObj.removeChildNodes(treeNode);
						var hisNode =msg.localhist;
						
						if(hisNode.length>0){
							treeObj.addNodes(treeNode, hisNode);
						}
   				  
			};
			function zTreeBeforeAsync(treeId, treeNode) {
   				 return (treeNode.id !== 1);
			};
			
			function zTreeOnClick(event, treeId, treeNode) {
   				 $("#userid").val(treeNode.user_id);
   				 if(treeNode.flag==2){
   				 	return false;
   				 }
   				 if(treeNode.flag==1){
   				 	return false;
   				 }
   				 
   				 if(treeNode.root=="root"){
   				 	return false;
   				 }
   				 loadbaseinfo($("#userid").val());
			};
			
			
  			/*
  			初始化 加载 树形节点
  			*/
  			function initajxNode(hostname,ogrin){
  				
								var zTreeObj,setting = {
									treeId:"host",
									view: {
										
										selectedMulti: false,
									},
									keep:{
										parent: true
									},
									async: {
										enable: true,
										url: "${base}/personnelFile/findnurseIncludeMan.do",
										type:"post",
										dataType:"json",
										autoParam: ["id"]
									},
									callback: {
									
										onAsyncSuccess: zTreeOnAsyncSuccess,
										beforeAsync: zTreeBeforeAsync,
										onClick: zTreeOnClick
										
									},data: {
										simpleData: {
											enable: true,
								
										}
									}
								};
							
								zTreeNodes = [
									{
										name:hostname,root:"root",open:true,children:ogrin,id:0
								
									},
									
								];
								zTreeObj = $.fn.zTree.init($("#host"), setting, zTreeNodes);
								var nodes = zTreeObj.getNodesByParam("hs", "ok", null);
								var node = zTreeObj.getNodeByParam("id", 0, null);
								zTreeObj.expandNode(nodes[0], true, true, true);
								zTreeObj.expandNode(nodes[1], true, true, true);
								
								
								
  			}//初始化树加载结束
			//加载权限传递参数
			if(alldept||thisdept){
				init(alldept,thisdept);//初始化树入口
				var treecontentheight = $("#contentbody").outerHeight(true)+3;
				
				$("#ztree").height(treecontentheight);
			}

 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尐偏执 2021-12-04 17:30:12

做前端搜索,肯定只能根据前端已有的数据进行,你这种需求,请务必实现 Server 的搜索功能,根据搜索结果返回对应的数据结构

 

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文