From 186dee8db959e83a753785290c4a02e681a6a109 Mon Sep 17 00:00:00 2001
From: ZZJ <zzjdsg2300@163.com>
Date: 星期一, 10 一月 2022 18:10:46 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.5.5:10010/r/web/vue-smart-ai

---
 src/components/giantTree/zTree/ztree.vue |  440 ++++++++++++++++++++++++++-----------------------------
 1 files changed, 208 insertions(+), 232 deletions(-)

diff --git a/src/components/giantTree/zTree/ztree.vue b/src/components/giantTree/zTree/ztree.vue
index 147ccec..69175d2 100644
--- a/src/components/giantTree/zTree/ztree.vue
+++ b/src/components/giantTree/zTree/ztree.vue
@@ -1,8 +1,8 @@
 <template>
   <div>
     <div class="search">
-      <el-input placeholder="鎼滅储" v-model="keyWord">
-        <i slot="suffix" class="el-input__icon el-icon-search" id="key"></i>
+      <el-input placeholder="鎼滅储" v-model="keyWord" size="mini" v-show="search">
+        <i slot="suffix" class="el-input__icon el-icon-search" :id="searchBtnId"></i>
       </el-input>
     </div>
     <div class="ztree" :id="ztreeId"></div>
@@ -10,162 +10,164 @@
 </template>
 
 <script>
-import * as $ from "jquery";
-import { Loading } from "element-ui";
+import * as $ from "jquery"
+import { Loading } from "element-ui"
 
 if (!window.jQuery) {
-  window.jQuery = $;
+  window.jQuery = $
 }
 
 // require("@ztree/ztree_v3/js/jquery.ztree.all");
-require("./ztree_v3/jquery.ztree.all");
-require("./ztree_v3/jquery.ztree.exhide");
+require("./ztree_v3/jquery.ztree.all")
+require("./ztree_v3/jquery.ztree.exhide")
 
 export default {
   props: {
     showCheckbox: { type: Boolean, default: false },
     readonly: { type: Boolean, default: true },
     gb28181: { type: Boolean, default: false },
+    search: { type: Boolean, default: false },
     setting: {
       type: Object,
       require: false,
-      default: function () {
-        return {};
-      },
+      default: function() {
+        return {}
+      }
     },
     nodes: {
       type: Array,
       require: true,
-      default: function () {
-        return [];
-      },
-    },
+      default: function() {
+        return []
+      }
+    }
   },
   data() {
     return {
       ztreeId: "ztree_" + parseInt(Math.random() * 1e10),
+      searchBtnId: "search_" + parseInt(Math.random() * 1e10),
       ztreeObj: null,
       list: [],
+      loading: false,
       ztreeSetting: {
         view: {
           showLine: true,
           showIcon: true, // default to hide icon
           addHoverDom: this.addHoverDom,
-          removeHoverDom: this.removeHoverDom,
+          removeHoverDom: this.removeHoverDom
         },
         check: {
           chkboxType: { Y: "", N: "" },
-          enable: this.showCheckbox,
+          enable: this.showCheckbox
         },
         callback: {
           onAsyncError: (...arg) => {
-            this.$emit("onAsyncError", ...arg);
+            this.$emit("onAsyncError", ...arg)
           },
           onAsyncSuccess: (...arg) => {
-            this.$emit("onAsyncSuccess", ...arg);
+            this.$emit("onAsyncSuccess", ...arg)
           },
           onCheck: (...arg) => {
-            this.$emit("onCheck", ...arg);
+            this.$emit("onCheck", ...arg)
           },
           onClick: (...arg) => {
-            this.$emit("onClick", ...arg);
-            this.removeHoverIcon(...arg);
+            this.$emit("onClick", ...arg)
+            this.removeHoverIcon(...arg)
           },
           onCollapse: (...arg) => {
-            this.$emit("onCollapse", ...arg);
+            this.$emit("onCollapse", ...arg)
           },
           onDblClick: (...arg) => {
-            this.$emit("onDblClick", ...arg);
+            this.$emit("onDblClick", ...arg)
           },
           onDrag: (...arg) => {
-            this.$emit("onDrag", ...arg);
+            this.$emit("onDrag", ...arg)
           },
           onDragMove: (...arg) => {
-            this.$emit("onDragMove", ...arg);
+            this.$emit("onDragMove", ...arg)
           },
           onDrop: (...arg) => {
-            this.$emit("onDrop", ...arg);
+            this.$emit("onDrop", ...arg)
           },
           onExpand: (...arg) => {
-            this.$emit("onExpand", ...arg);
+            this.$emit("onExpand", ...arg)
           },
           onMouseDown: (...arg) => {
-            this.$emit("onMouseDown", ...arg);
+            this.$emit("onMouseDown", ...arg)
           },
           onMouseUp: (...arg) => {
-            this.$emit("onMouseUp", ...arg);
+            this.$emit("onMouseUp", ...arg)
           },
           onRemove: (...arg) => {
-            this.$emit("onRemove", ...arg);
+            this.$emit("onRemove", ...arg)
           },
           onRename: (...arg) => {
-            this.$emit("onRename", ...arg);
+            this.$emit("onRename", ...arg)
           },
           onRightClick: (...arg) => {
-            this.$emit("onRightClick", ...arg);
-          },
-        },
+            this.$emit("onRightClick", ...arg)
+          }
+        }
       },
       keyWord: "",
       options: {
-        target: "",
-      },
-    };
+        target: ""
+      }
+    }
   },
   watch: {
     nodes: {
-      handler: function (nodes) {
-        this.list = nodes;
+      handler: function(nodes) {
+        this.list = nodes
 
         // update tree
         if (this.ztreeObj) {
-          this.ztreeObj.destroy();
+          this.ztreeObj.destroy()
         }
         this.$nextTick(() => {
           this.ztreeObj = $.fn.zTree.init(
             $("#" + this.ztreeId),
             Object.assign({}, this.ztreeSetting, this.setting),
             this.list
-          );
-          console.log("---------");
-          this.fuzzySearch(this.ztreeObj, "#key", null, true); //鍒濆鍖栨ā绯婃悳绱㈡柟娉�
-          this.$emit("onCreated", this.ztreeObj);
-        });
+          )
+          this.fuzzySearch(this.ztreeObj, this.searchBtnId, false, true) //鍒濆鍖栨ā绯婃悳绱㈡柟娉�
+          this.$emit("onCreated", this.ztreeObj)
+        })
       },
       deep: true,
-      immediate: true,
+      immediate: true
     },
     showCheckbox: {
-      handler: function () {
+      handler: function() {
         let top = $("#" + this.ztreeId)
           .parent()
-          .scrollTop();
+          .scrollTop()
 
-        this.ztreeSetting.check.enable = this.showCheckbox;
+        this.ztreeSetting.check.enable = this.showCheckbox
 
         if (this.ztreeObj) {
-          this.list = this.ztreeObj.getNodes();
-          this.ztreeObj.destroy();
+          this.list = this.ztreeObj.getNodes()
+          this.ztreeObj.destroy()
         }
         this.$nextTick(() => {
           this.ztreeObj = $.fn.zTree.init(
             $("#" + this.ztreeId),
             Object.assign({}, this.ztreeSetting, this.setting),
             this.list
-          );
+          )
           $("#" + this.ztreeId)
             .parent()
-            .scrollTop(top);
-          this.$emit("onCreated", this.ztreeObj);
-        });
+            .scrollTop(top)
+          this.$emit("onCreated", this.ztreeObj)
+        })
       },
-      immediate: true,
-    },
+      immediate: true
+    }
   },
   methods: {
     addHoverDom(treeid, treeNode) {
-      let _vue = this;
-      const item = document.getElementById(`${treeNode.tId}_a`);
+      let _vue = this
+      const item = document.getElementById(`${treeNode.tId}_a`)
 
       // 鏂囦欢澶规柊澧炴寜閽�
       if (
@@ -175,18 +177,18 @@
         !this.readonly &&
         !this.gb28181
       ) {
-        const btn = document.createElement("i");
-        btn.id = `${treeid}_${treeNode.id}_btn`;
-        btn.classList.add("el-icon-circle-plus-outline");
-        btn.classList.add("primary");
+        const btn = document.createElement("i")
+        btn.id = `${treeid}_${treeNode.id}_btn`
+        btn.classList.add("el-icon-circle-plus-outline")
+        btn.classList.add("primary")
         // btn.innerText = '鍒犻櫎';
         btn.addEventListener("click", (e) => {
-          e.stopPropagation();
+          e.stopPropagation()
           // this.clickRemove(treeNode)
-          _vue.$emit("onAddNode", treeNode);
-        });
+          _vue.$emit("onAddNode", treeNode)
+        })
 
-        item.appendChild(btn);
+        item.appendChild(btn)
       }
 
       // 鏂囦欢澶瑰垹闄ゆ寜閽�
@@ -198,220 +200,192 @@
         !treeNode.children &&
         !this.gb28181
       ) {
-        const btn = document.createElement("i");
-        btn.id = `${treeid}_${treeNode.id}_btn`;
-        btn.classList.add("el-icon-remove-outline");
-        btn.classList.add("danger");
+        const btn = document.createElement("i")
+        btn.id = `${treeid}_${treeNode.id}_btn`
+        btn.classList.add("el-icon-remove-outline")
+        btn.classList.add("danger")
         // btn.innerText = '鍒犻櫎';
         btn.addEventListener("click", (e) => {
-          e.stopPropagation();
+          e.stopPropagation()
           // this.clickRemove(treeNode)
-          _vue.$emit("onRemoveNode", treeNode);
-        });
+          _vue.$emit("onRemoveNode", treeNode)
+        })
 
-        item.appendChild(btn);
+        item.appendChild(btn)
       }
 
       // 鏂囦欢澶圭紪杈戞寜閽�
-      if (
-        item &&
-        !item.querySelector(".el-icon-edit") &&
-        treeNode.isParent &&
-        !this.readonly
-      ) {
-        const btn = document.createElement("i");
-        btn.id = `${treeid}_${treeNode.id}_btn`;
-        btn.classList.add("el-icon-edit");
-        btn.classList.add("primary");
+      if (item && !item.querySelector(".el-icon-edit") && treeNode.isParent && !this.readonly) {
+        const btn = document.createElement("i")
+        btn.id = `${treeid}_${treeNode.id}_btn`
+        btn.classList.add("el-icon-edit")
+        btn.classList.add("primary")
         // btn.innerText = '鍒犻櫎';
         btn.addEventListener("click", (e) => {
-          e.stopPropagation();
+          e.stopPropagation()
           // this.clickRemove(treeNode)
-          _vue.$emit("onRenameNode", treeNode);
-        });
+          _vue.$emit("onRenameNode", treeNode)
+        })
 
-        item.appendChild(btn);
+        item.appendChild(btn)
       }
 
       // 娣诲姞鎽勫儚鏈烘寜閽�
-      if (
-        item &&
-        !item.querySelector(".iconshishishipin") &&
-        treeNode.isParent &&
-        !this.readonly &&
-        !this.gb28181
-      ) {
-        const btn = document.createElement("i");
-        btn.id = `${treeid}_${treeNode.id}_btn`;
-        btn.classList.add("iconfont");
-        btn.classList.add("iconshishishipin");
-        btn.classList.add("primary");
-        btn.classList.add("icon-fix");
+      if (item && !item.querySelector(".iconshishishipin") && treeNode.isParent && !this.readonly && !this.gb28181) {
+        const btn = document.createElement("i")
+        btn.id = `${treeid}_${treeNode.id}_btn`
+        btn.classList.add("iconfont")
+        btn.classList.add("iconshishishipin")
+        btn.classList.add("primary")
+        btn.classList.add("icon-fix")
         // btn.innerText = '鍒犻櫎';
         btn.addEventListener("click", (e) => {
-          e.stopPropagation();
+          e.stopPropagation()
           // this.clickRemove(treeNode)
-          _vue.$emit("onAddDevice", treeNode.id);
-        });
+          _vue.$emit("onAddDevice", treeNode.id)
+        })
 
-        item.appendChild(btn);
+        item.appendChild(btn)
       }
 
       // 瀵煎叆鎽勫儚鏈烘寜閽�
-      if (
-        item &&
-        !item.querySelector(".icondaoru") &&
-        treeNode.isParent &&
-        !this.readonly &&
-        !this.gb28181
-      ) {
-        const btn = document.createElement("i");
-        btn.id = `${treeid}_${treeNode.id}_btn`;
-        btn.classList.add("iconfont");
-        btn.classList.add("icondaoru");
-        btn.classList.add("primary");
-        btn.classList.add("icon-fix");
+      if (item && !item.querySelector(".icondaoru") && treeNode.isParent && !this.readonly && !this.gb28181) {
+        const btn = document.createElement("i")
+        btn.id = `${treeid}_${treeNode.id}_btn`
+        btn.classList.add("iconfont")
+        btn.classList.add("icondaoru")
+        btn.classList.add("primary")
+        btn.classList.add("icon-fix")
         // btn.innerText = '鍒犻櫎';
         btn.addEventListener("click", (e) => {
-          e.stopPropagation();
+          e.stopPropagation()
           // this.clickRemove(treeNode)
-          _vue.$emit("onImport", treeNode.id);
-        });
+          _vue.$emit("onImport", treeNode.id)
+        })
 
-        item.appendChild(btn);
+        item.appendChild(btn)
       }
 
       // 鏌ョ湅搴曞浘鎸夐挳
-      if (
-        item &&
-        !item.querySelector(".icontupian1") &&
-        treeNode.type == "camera"
-      ) {
-        const btn = document.createElement("i");
-        btn.id = `${treeid}_${treeNode.id}_btn`;
-        btn.classList.add("iconfont");
-        btn.classList.add("icontupian1");
-        btn.classList.add("primary");
-        btn.classList.add("icon-fix");
+      if (item && !item.querySelector(".icontupian1") && treeNode.type == "camera") {
+        const btn = document.createElement("i")
+        btn.id = `${treeid}_${treeNode.id}_btn`
+        btn.classList.add("iconfont")
+        btn.classList.add("icontupian1")
+        btn.classList.add("primary")
+        btn.classList.add("icon-fix")
         // btn.innerText = '鍒犻櫎';
         btn.addEventListener("click", (e) => {
-          e.stopPropagation();
+          e.stopPropagation()
           // this.clickRemove(treeNode)
-          _vue.$emit("onShowPic", treeNode);
-        });
+          _vue.$emit("onShowPic", treeNode)
+        })
 
-        item.appendChild(btn);
+        item.appendChild(btn)
       }
     },
     removeHoverIcon(evt, treeId, item) {
-      this.removeHoverDom(treeId, item);
+      this.removeHoverDom(treeId, item)
     },
     removeHoverDom(treeid, treeNode) {
-      const item = document.getElementById(`${treeNode.tId}_a`);
+      const item = document.getElementById(`${treeNode.tId}_a`)
       if (item) {
-        let btn = item.querySelector(".el-icon-circle-plus-outline");
+        let btn = item.querySelector(".el-icon-circle-plus-outline")
         if (btn) {
-          item.removeChild(item.querySelector(".el-icon-circle-plus-outline"));
+          item.removeChild(item.querySelector(".el-icon-circle-plus-outline"))
         }
 
-        btn = item.querySelector(".el-icon-remove-outline");
+        btn = item.querySelector(".el-icon-remove-outline")
         if (btn) {
-          item.removeChild(item.querySelector(".el-icon-remove-outline"));
+          item.removeChild(item.querySelector(".el-icon-remove-outline"))
         }
 
-        btn = item.querySelector(".el-icon-edit");
+        btn = item.querySelector(".el-icon-edit")
         if (btn) {
-          item.removeChild(item.querySelector(".el-icon-edit"));
+          item.removeChild(item.querySelector(".el-icon-edit"))
         }
 
-        btn = item.querySelector(".iconshishishipin");
+        btn = item.querySelector(".iconshishishipin")
         if (btn) {
-          item.removeChild(item.querySelector(".iconshishishipin"));
+          item.removeChild(item.querySelector(".iconshishishipin"))
         }
 
-        btn = item.querySelector(".icondaoru");
+        btn = item.querySelector(".icondaoru")
         if (btn) {
-          item.removeChild(item.querySelector(".icondaoru"));
+          item.removeChild(item.querySelector(".icondaoru"))
         }
 
-        btn = item.querySelector(".icontupian1");
+        btn = item.querySelector(".icontupian1")
         if (btn) {
-          item.removeChild(item.querySelector(".icontupian1"));
+          item.removeChild(item.querySelector(".icontupian1"))
         }
       }
     },
     fuzzySearch(zTreeObj, searchField, isHighLight, isExpand) {
-      const _this = this;
+      const _this = this
 
       if (!zTreeObj) {
-        alert("fail to get ztree object");
+        alert("fail to get ztree object")
       }
-      var nameKey = zTreeObj.setting.data.key.name; //get the key of the node name
-      isHighLight = isHighLight === false ? false : true; //default true, only use false to disable highlight
-      isExpand = isExpand ? true : false; // not to expand in default
-      zTreeObj.setting.view.nameIsHTML = isHighLight; //allow use html in node name for highlight use
+      var nameKey = zTreeObj.setting.data.key.name //get the key of the node name
+      isHighLight = isHighLight === false ? false : true //default true, only use false to disable highlight
+      isExpand = isExpand ? true : false // not to expand in default
+      zTreeObj.setting.view.nameIsHTML = isHighLight //allow use html in node name for highlight use
 
-      var metaChar = "[\\[\\]\\\\^\\$\\.\\|\\?\\*\\+\\(\\)]"; //js meta characters
-      var rexMeta = new RegExp(metaChar, "gi"); //regular expression to match meta characters
+      var metaChar = "[\\[\\]\\\\^\\$\\.\\|\\?\\*\\+\\(\\)]" //js meta characters
+      var rexMeta = new RegExp(metaChar, "gi") //regular expression to match meta characters
 
       // keywords filter function
       function ztreeFilter(zTreeObj, _keywords, callBackFunc) {
         if (!_keywords) {
-          _keywords = ""; //default blank for _keywords
+          _keywords = "" //default blank for _keywords
         }
 
         // function to find the matching node
         function filterFunc(node) {
           if (node && node.oldname && node.oldname.length > 0) {
-            node[nameKey] = node.oldname; //recover oldname of the node if exist
+            node[nameKey] = node.oldname //recover oldname of the node if exist
           }
-          zTreeObj.updateNode(node); //update node to for modifications take effect
+          zTreeObj.updateNode(node) //update node to for modifications take effect
           if (_keywords.length == 0) {
             //return true to show all nodes if the keyword is blank
-            zTreeObj.showNode(node);
-            zTreeObj.expandNode(node, isExpand);
-            return true;
+            zTreeObj.showNode(node)
+            zTreeObj.expandNode(node, isExpand)
+            return true
           }
           //transform node name and keywords to lowercase
-          if (
-            node[nameKey] &&
-            node[nameKey].toLowerCase().indexOf(_keywords.toLowerCase()) != -1
-          ) {
+          if (node[nameKey] && node[nameKey].toLowerCase().indexOf(_keywords.toLowerCase()) != -1) {
             if (isHighLight) {
               //highlight process
               //a new variable 'newKeywords' created to store the keywords information
               //keep the parameter '_keywords' as initial and it will be used in next node
               //process the meta characters in _keywords thus the RegExp can be correctly used in str.replace
-              var newKeywords = _keywords.replace(rexMeta, function (matchStr) {
+              var newKeywords = _keywords.replace(rexMeta, function(matchStr) {
                 //add escape character before meta characters
-                return "\\" + matchStr;
-              });
-              node.oldname = node[nameKey]; //store the old name
-              var rexGlobal = new RegExp(newKeywords, "gi"); //'g' for global,'i' for ignore case
+                return "\\" + matchStr
+              })
+              node.oldname = node[nameKey] //store the old name
+              var rexGlobal = new RegExp(newKeywords, "gi") //'g' for global,'i' for ignore case
               //use replace(RegExp,replacement) since replace(/substr/g,replacement) cannot be used here
-              node[nameKey] = node.oldname.replace(
-                rexGlobal,
-                function (originalText) {
-                  //highlight the matching words in node name
-                  var highLightText =
-                    '<span style="color: whitesmoke;background-color: darkred;">' +
-                    originalText +
-                    "</span>";
-                  return highLightText;
-                }
-              );
-              zTreeObj.updateNode(node); //update node for modifications take effect
+              node[nameKey] = node.oldname.replace(rexGlobal, function(originalText) {
+                //highlight the matching words in node name
+                var highLightText =
+                  '<span style="color: whitesmoke;background-color: darkred;">' + originalText + "</span>"
+                return highLightText
+              })
+              zTreeObj.updateNode(node) //update node for modifications take effect
             }
-            zTreeObj.showNode(node); //show node with matching keywords
-            return true; //return true and show this node
+            zTreeObj.showNode(node) //show node with matching keywords
+            return true //return true and show this node
           }
 
-          zTreeObj.hideNode(node); // hide node that not matched
-          return false; //return false for node not matched
+          zTreeObj.hideNode(node) // hide node that not matched
+          return false //return false for node not matched
         }
 
-        var nodesShow = zTreeObj.getNodesByFilter(filterFunc); //get all nodes that would be shown
-        processShowNodes(nodesShow, _keywords); //nodes should be reprocessed to show correctly
+        var nodesShow = zTreeObj.getNodesByFilter(filterFunc) //get all nodes that would be shown
+        processShowNodes(nodesShow, _keywords) //nodes should be reprocessed to show correctly
+        _this.$emit("onAfterSearch", null)
       }
 
       /**
@@ -421,62 +395,64 @@
         if (nodesShow && nodesShow.length > 0) {
           //process the ancient nodes if _keywords is not blank
           if (_keywords.length > 0) {
-            $.each(nodesShow, function (n, obj) {
-              var pathOfOne = obj.getPath(); //get all the ancient nodes including current node
+            $.each(nodesShow, function(n, obj) {
+              var pathOfOne = obj.getPath() //get all the ancient nodes including current node
               if (pathOfOne && pathOfOne.length > 0) {
                 //i < pathOfOne.length-1 process every node in path except self
                 for (var i = 0; i < pathOfOne.length - 1; i++) {
-                  zTreeObj.showNode(pathOfOne[i]); //show node
-                  zTreeObj.expandNode(pathOfOne[i], true); //expand node
+                  zTreeObj.showNode(pathOfOne[i]) //show node
+                  zTreeObj.expandNode(pathOfOne[i], true) //expand node
                 }
               }
-            });
+            })
           } else {
             //show all nodes when _keywords is blank and expand the root nodes
-            var rootNodes = zTreeObj.getNodesByParam("level", "0"); //get all root nodes
-            $.each(rootNodes, function (n, obj) {
-              zTreeObj.expandNode(obj, true); //expand all root nodes
-            });
+            var rootNodes = zTreeObj.getNodesByParam("level", "0") //get all root nodes
+            $.each(rootNodes, function(n, obj) {
+              zTreeObj.expandNode(obj, true) //expand all root nodes
+            })
           }
         }
       }
 
       //listen to change in input element
-      $(searchField).bind("click", function () {
-        _this.options.target = document.querySelector(
-          "#" + _this.ztreeId
-        ).parentNode.parentNode;
-        console.log(_this.options.target);
-        let loadingInstance = Loading.service(_this.options);
-        console.log(_this.keyWord);
+      $("#" + searchField).bind("click", function() {
+        // _this.options.target = document.querySelector("#" + _this.ztreeId).parentNode.parentNode
+        // console.log(_this.options.target);
+        // let loadingInstance = Loading.service(_this.options)
+        // console.log(_this.keyWord);
         // var _keywords = $(this).val();
-        searchNodeLazy(_this.keyWord); //call lazy load
-        loadingInstance.close();
-      });
+        $("#" + searchField).removeClass("el-icon-search")
+        $("#" + searchField).addClass("el-icon-loading")
+        searchNodeLazy(_this.keyWord) //call lazy load
+        // loadingInstance.close()
+        setTimeout(() => {
+          $("#" + searchField).removeClass("el-icon-loading")
+          $("#" + searchField).addClass("el-icon-search")
+        }, 300)
+      })
 
-      var timeoutId = null;
-      var lastKeyword = "";
+      var lastKeyword = ""
       // excute lazy load once after input change, the last pending task will be cancled
       function searchNodeLazy(_keywords) {
-        if (timeoutId) {
-          //clear pending task
-          clearTimeout(timeoutId);
+        if (lastKeyword === _keywords) {
+          return
         }
-        timeoutId = setTimeout(function () {
-          if (lastKeyword === _keywords) {
-            return;
-          }
-          ztreeFilter(zTreeObj, _keywords); //lazy load ztreeFilter function
-          // $(searchField).focus();//focus input field again after filtering
-          lastKeyword = _keywords;
-        }, 500);
+        ztreeFilter(zTreeObj, _keywords) //lazy load ztreeFilter function
+        // $(searchField).focus();//focus input field again after filtering
+        lastKeyword = _keywords
       }
     },
-  },
-};
+    handleSearch() {
+      this.loading = true
+      searchNodeLazy(this.keyWord) //call lazy load
+      this.loading = false
+    }
+  }
+}
 </script>
 
-<style >
+<style>
 /* beauty ztree! */
 
 .ztree * {
@@ -508,8 +484,7 @@
 }
 .ztree li ul.line {
   /* background: url(./img/line_conn.gif) 0 0 repeat-y; */
-  background: url(data:image/gif;base64,R0lGODlhCQACAIAAAMzMzP///yH5BAEAAAEALAAAAAAJAAIAAAIEjI9pUAA7)
-    0 0 repeat-y;
+  background: url(data:image/gif;base64,R0lGODlhCQACAIAAAMzMzP///yH5BAEAAAEALAAAAAAJAAIAAAIEjI9pUAA7) 0 0 repeat-y;
 }
 
 .ztree li a {
@@ -810,7 +785,8 @@
 
 <style scoped lang="scss">
 .search {
-  width: 300px;
+  width: 280px;
+  margin: 5px 5px;
 
   ::v-deep .el-input__suffix {
     right: 0;
@@ -821,4 +797,4 @@
     background-color: rgb(61, 104, 255);
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0