/* * JQuery zTree exHideNodes v3.5.40 * http://treejs.cn/ * * Copyright (c) 2010 Hunter.z * * Licensed same as jquery - MIT License * http://www.opensource.org/licenses/mit-license.php * * email: hunter.z@263.net * Date: 2019-01-18 */ (function(j){j.extend(!0,j.fn.zTree._z,{view:{clearOldFirstNode:function(c,a){for(var b=a.getNextNode();b;){if(b.isFirstNode){b.isFirstNode=!1;e.setNodeLineIcos(c,b);break}if(b.isLastNode)break;b=b.getNextNode()}},clearOldLastNode:function(c,a,b){for(a=a.getPreNode();a;){if(a.isLastNode){a.isLastNode=!1;b&&e.setNodeLineIcos(c,a);break}if(a.isFirstNode)break;a=a.getPreNode()}},makeDOMNodeMainBefore:function(c,a,b){a=d.isHidden(a,b);c.push("
  • ")},showNode:function(c,a){d.isHidden(c,a,!1);d.initShowForExCheck(c,a);k(a,c).show()},showNodes:function(c,a,b){if(a&&a.length!=0){var f={},g,i;for(g=0,i=a.length;g0&&!f?b[0].isFirstNode=!0:b.length>0&&e.setFirstNodeForHide(c,b)},setLastNode:function(c,a){var b=d.nodeChildren(c,a),f=d.isHidden(c,b[0]);b.length>0&&!f?b[b.length-1].isLastNode=!0:b.length>0&&e.setLastNodeForHide(c,b)},setFirstNodeForHide:function(c,a){var b,f,g;for(f=0,g=a.length;f=0;f--){b=a[f];if(b.isLastNode)break;if(!d.isHidden(c,b)&&!b.isLastNode){b.isLastNode=!0;e.setNodeLineIcos(c,b);break}else b=null}return b},setLastNodeForShow:function(c, a){var b,f,g,i;for(f=a.length-1;f>=0;f--){b=a[f];var h=d.isHidden(c,b);if(!g&&!h&&b.isLastNode){g=b;break}else if(!g&&!h&&!b.isLastNode)b.isLastNode=!0,g=b,e.setNodeLineIcos(c,b);else if(g&&b.isLastNode){b.isLastNode=!1;i=b;e.setNodeLineIcos(c,b);break}}return{"new":g,old:i}}},data:{initHideForExCheck:function(c,a){if(d.isHidden(c,a)&&c.check&&c.check.enable){if(typeof a._nocheck=="undefined")a._nocheck=!!a.nocheck,a.nocheck=!0;a.check_Child_State=-1;e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(c, a)}},initShowForExCheck:function(c,a){if(!d.isHidden(c,a)&&c.check&&c.check.enable){if(typeof a._nocheck!="undefined")a.nocheck=a._nocheck,delete a._nocheck;if(e.setChkClass){var b=k(a,m.id.CHECK,c);e.setChkClass(c,b,a)}e.repairParentChkClassWithSelf&&e.repairParentChkClassWithSelf(c,a)}}}});var j=j.fn.zTree,l=j._z.tools,m=j.consts,e=j._z.view,d=j._z.data,k=l.$;d.isHidden=function(c,a,b){if(!a)return!1;c=c.data.key.isHidden;typeof b!=="undefined"?(typeof b==="string"&&(b=l.eqs(b,"true")),a[c]=!!b): a[c]=typeof a[c]=="string"?l.eqs(a[c],"true"):!!a[c];return a[c]};d.exSetting({data:{key:{isHidden:"isHidden"}}});d.addInitNode(function(c,a,b){a=d.isHidden(c,b);d.isHidden(c,b,a);d.initHideForExCheck(c,b)});d.addBeforeA(function(){});d.addZTreeTools(function(c,a){a.showNodes=function(a,b){e.showNodes(c,a,b)};a.showNode=function(a,b){a&&e.showNodes(c,[a],b)};a.hideNodes=function(a,b){e.hideNodes(c,a,b)};a.hideNode=function(a,b){a&&e.hideNodes(c,[a],b)};var b=a.checkNode;if(b)a.checkNode=function(f, e,i,h){(!f||!d.isHidden(c,f))&&b.apply(a,arguments)}});var n=d.initNode;d.initNode=function(c,a,b,f,g,i,h){var j=(f?f:d.getRoot(c))[c.data.key.children];d.tmpHideFirstNode=e.setFirstNodeForHide(c,j);d.tmpHideLastNode=e.setLastNodeForHide(c,j);h&&(e.setNodeLineIcos(c,d.tmpHideFirstNode),e.setNodeLineIcos(c,d.tmpHideLastNode));g=d.tmpHideFirstNode===b;i=d.tmpHideLastNode===b;n&&n.apply(d,arguments);h&&i&&e.clearOldLastNode(c,b,h)};var o=d.makeChkFlag;if(o)d.makeChkFlag=function(c,a){(!a||!d.isHidden(c, a))&&o.apply(d,arguments)};var p=d.getTreeCheckedNodes;if(p)d.getTreeCheckedNodes=function(c,a,b,f){if(a&&a.length>0){var e=a[0].getParentNode();if(e&&d.isHidden(c,e))return[]}return p.apply(d,arguments)};var q=d.getTreeChangeCheckedNodes;if(q)d.getTreeChangeCheckedNodes=function(c,a,b){if(a&&a.length>0){var e=a[0].getParentNode();if(e&&d.isHidden(c,e))return[]}return q.apply(d,arguments)};var r=e.expandCollapseSonNode;if(r)e.expandCollapseSonNode=function(c,a,b,f,g){(!a||!d.isHidden(c,a))&&r.apply(e, arguments)};var s=e.setSonNodeCheckBox;if(s)e.setSonNodeCheckBox=function(c,a,b,f){(!a||!d.isHidden(c,a))&&s.apply(e,arguments)};var t=e.repairParentChkClassWithSelf;if(t)e.repairParentChkClassWithSelf=function(c,a){(!a||!d.isHidden(c,a))&&t.apply(e,arguments)}})(jQuery); /** * required:bootstrap,jquery,ztree */ ;(function($,window,document,undefined){ var tSelect = function(ele, options){ this.$element = $(ele); //主元素 this.defaults = { data:{}, inputId:"_treeSelect_input", name: "parentId", class: "form-control", defaultKey: "", defaultValue: "", zTreeOnClick: function (event, treeId, treeNode) { $_textinput.val(treeNode.menuName); $_texthidden.val(treeNode.id); $(ele).removeClass("showtree") } }; //将一个新的空对象做为$.extend的第一个参数,defaults和用户传递的参数对象紧随其后, //这样做的好处是所有值被合并到这个空对象上,保护了插件里面的默认值。 this.settings = $.extend({}, this.defaults, options); }; var zTreeObj; tSelect.prototype = { initInput: function(){ $_element = this.$element; var _inputDom = ''; var _hiddenDom = ''; $_element.append(_inputDom); $_element.append(_hiddenDom); $_textinput = $_element.find("input[type='text']"); $_texthidden = $_element.find("input[type='hidden']"); $_textinput.focus(function () { $_element.addClass("showtree"); }) $_textinput.keyup(function () { var _keywords = $.trim($_textinput.val().toUpperCase()); if(_keywords !== ""){ var showNodes_array = []; // 查找不符合条件的叶子节点 function filterFunc(node){ var result = false; if(node.menuName.toUpperCase().indexOf(_keywords)!==-1) { result = true; } return result } //获取符合条件的叶子结点 showNodes_array=zTreeObj.getNodesByFilter(filterFunc); var showNodes_array_temp = showNodes_array.concat(); $.each(showNodes_array_temp,function (index,node) { if(typeof(node) !== "undefined"){ switch (node.level){ case 0: judge(node,0); break; case 1: judge(node,1); judge(node,0); break; case 2: judge(node,1); break; } } }) function judge(node,type){ switch (type){ case 0: if (typeof(node.children) !== "undefined" && node.children != null) { $.each(node.children,function (index,item) { showNodes_array.push(item); judge(item,0) }) } break; case 1: if (typeof(node.getParentNode()) !== "undefined" && node.getParentNode() != null) { var temp = node.getParentNode(); showNodes_array.push(temp); judge(temp,1) } break; } } //showNodes_array = unique(showNodes_array) zTreeObj.hideNodes(zTreeObj.transformToArray(zTreeObj.getNodes())); zTreeObj.showNodes(showNodes_array); zTreeObj.expandAll(true); }else{ zTreeObj.showNodes(zTreeObj.transformToArray(zTreeObj.getNodes())); zTreeObj.expandAll(false); } }) }, dropdownMenu: function(){ var _treeDom = '
      '; var _menuDom = '
      ' + '
      ' + _treeDom + '
      ' + '
      '; $_element.append(_menuDom); jQuery.browser={};(function(){jQuery.browser.msie=false; jQuery.browser.version=0;if(navigator.userAgent.match(/MSIE ([0-9]+)./)){ jQuery.browser.msie=true;jQuery.browser.version=RegExp.$1;}})(); var setting = { data: { key: { name: "menuName" }, simpleData: { enable: true, idKey: "id", pIdKey: "parentId", rootPId: "-1" } }, callback: { onClick: this.settings.zTreeOnClick } }; zTreeObj = $.fn.zTree.init($("#_treeDom"), setting, this.settings.data); // 设置下拉菜单以及input点击不自动关闭 $(document).on('click', function (e) { if(e.target.closest(".treeSelect") == null){ $_element.removeClass("showtree"); } }); }, init: function(){ this.initInput(); this.dropdownMenu(); } } $.fn.treeSelect = function(opts){ var ts = new tSelect(this, opts); //接收两个参数,主元素 + 设置参数 this: 使用这个插件的容器 opts: 外部配置 return ts.init(); }; })(jQuery,window,document);