From 8de8ffd91ab6f96f35cf1357fd025051471ad4af Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 23 十二月 2021 13:59:08 +0800
Subject: [PATCH] 完善国标树配置功能

---
 src/components/giantTree/zTree/ztree.vue |   49 +++++++++++++++++++++++++++++--------------------
 1 files changed, 29 insertions(+), 20 deletions(-)

diff --git a/src/components/giantTree/zTree/ztree.vue b/src/components/giantTree/zTree/ztree.vue
index 1db7a4a..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>
@@ -26,6 +26,7 @@
     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,
@@ -44,8 +45,10 @@
   data() {
     return {
       ztreeId: "ztree_" + parseInt(Math.random() * 1e10),
+      searchBtnId: "search_" + parseInt(Math.random() * 1e10),
       ztreeObj: null,
       list: [],
+      loading: false,
       ztreeSetting: {
         view: {
           showLine: true,
@@ -127,7 +130,7 @@
             Object.assign({}, this.ztreeSetting, this.setting),
             this.list
           )
-          this.fuzzySearch(this.ztreeObj, "#key", null, true) //鍒濆鍖栨ā绯婃悳绱㈡柟娉�
+          this.fuzzySearch(this.ztreeObj, this.searchBtnId, false, true) //鍒濆鍖栨ā绯婃悳绱㈡柟娉�
           this.$emit("onCreated", this.ztreeObj)
         })
       },
@@ -382,6 +385,7 @@
 
         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)
       }
 
       /**
@@ -412,33 +416,37 @@
       }
 
       //listen to change in input element
-      $(searchField).bind("click", function() {
-        _this.options.target = document.querySelector("#" + _this.ztreeId).parentNode.parentNode
+      $("#" + searchField).bind("click", function() {
+        // _this.options.target = document.querySelector("#" + _this.ztreeId).parentNode.parentNode
         // console.log(_this.options.target);
-        let loadingInstance = Loading.service(_this.options)
+        // let loadingInstance = Loading.service(_this.options)
         // console.log(_this.keyWord);
         // var _keywords = $(this).val();
+        $("#" + searchField).removeClass("el-icon-search")
+        $("#" + searchField).addClass("el-icon-loading")
         searchNodeLazy(_this.keyWord) //call lazy load
-        loadingInstance.close()
+        // loadingInstance.close()
+        setTimeout(() => {
+          $("#" + searchField).removeClass("el-icon-loading")
+          $("#" + searchField).addClass("el-icon-search")
+        }, 300)
       })
 
-      var timeoutId = null
       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
     }
   }
 }
@@ -777,7 +785,8 @@
 
 <style scoped lang="scss">
 .search {
-  width: 300px;
+  width: 280px;
+  margin: 5px 5px;
 
   ::v-deep .el-input__suffix {
     right: 0;

--
Gitblit v1.8.0