zTree多条件模糊查询

时间:2022-12-17 05:40:27
  function searchFun() {
var zTrees=$.fn.zTree.getZTreeObj("ztree");//获得所有几点
var hiddenNodes=[];//显示的数组
var code2=$("#code2").val();
var code2Arr=new Array();//code搜索数组
var proArr=new Array();//name搜索数组
var productNames=$("#productName").val();
var nodeArr=new Array();//根据条件所搜出的全部节点数组
var typeArr=[];//满足其余条件的数组
var typeArr22=[];//满足其余条件的数组
if(code2!=null && code2!=''){
var code2A=code2.split(",");
for(var i=0;i<code2A.length;i++){
if(code2A[i]!='' || code2A[i]!=null){
code2Arr.push(code2A[i]);
}
}
}
if(productNames!=null && productNames!=''){
var proA=productNames.split(",");
for(var i=0;i<proA.length;i++){
if(proA[i]!='' || proA[i]!=null){
proArr.push(proA[i]);
}
}
}

var allNode = zTrees.transformToArray(zTrees.getNodes());
zTrees.hideNodes(allNode);//隐藏所有节点

if(code2Arr.length > 0 && proArr.length>0){
top.layer.msg("找不到这些商品组成的套餐");
return;
}

if(code2Arr.length > 0){
nodeArr = zTrees.getNodesByParamFuzzy("name", code2Arr[0], null);//搜索含有value关键字的节点
nodeArr = zTrees.transformToArray(nodeArr);//转化为数组
}else {
nodeArr = zTrees.getNodesByParamFuzzy("name", proArr[0], null);//搜索含有value关键字的节点
nodeArr = zTrees.transformToArray(nodeArr);//转化为数组
}

var currArr=new Set();//保存根据节点,相同的就覆盖
for(var n in nodeArr){//遍历
findParent(nodeArr[n],currArr);//找到其父节点
}
currArr.forEach(function (item) {//遍历根结点,并获得其所有叶子节点,包括自己
var arr=new Array();
arr.push(item);
getChildrenNode(item,arr);
typeArr.push(arr);
});
var namess=[];//每个根结点的所有节点名称的数组
if(typeArr.length>0){
for(var i=0;i<typeArr.length;i++){
var names="";
for(var n in typeArr[i]) {
names+=typeArr[i][n].name;
}
namess.push(names);
}
for(var m in namess){
if(proArr.length>0 && code2Arr.length==0){
var n=0;
for(var i in proArr){
if(namess[m].indexOf(proArr[i])>-1){
n++;
}
}
if(n==proArr.length){
typeArr22.push(typeArr[m]);
}
}else {
var n=0;
for(var i in code2Arr){
if(namess[m].indexOf(code2Arr[i])>-1){
n++;
}
}
if(n==code2Arr.length){
typeArr22.push(typeArr[m]);
}
}
}
}
if(typeArr22.length>0){
for(var i in typeArr22){
for(var j in typeArr22[i]){
hiddenNodes.push(typeArr22[i][j])
}
}
}
zTrees.showNodes(hiddenNodes);//显示满足的所有节点
/*highlightAndExpand_ztree(hiddenNodes);*/
if (code2 == "" && productNames=='') {
zTrees.expandAll(false);
}
}
/*
获取当前节点的根节点
*/
function findParent(node,currArr){
var pNode = node.getParentNode();//获取父节点
if(pNode != null){
findParent(pNode,currArr);//递归查询上上一级父节点
}else {
if(node.lvl==1){//根结点
currArr.add(node);
}
}
}

/*
获取当前节点下所有的叶子节点
*/
function getChildrenNode(node,currArr) {
var children=node.children;
if(children){
for(var i in children){
currArr.push(children[i]);
if(children[i].lvl!=4){//节点等级为4的就停止执行
getChildrenNode(children[i],currArr);
}
}
}
}