From b0179103b34d1b8f004256ea28d7a145e2587be1 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期二, 04 三月 2025 13:32:46 +0800
Subject: [PATCH] 标准库-树过滤优化

---
 src/views/standard/standardLibrary/index.vue |   38 +++++++++++++++++++++++++++++++++++---
 1 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue
index 180ad2c..9d15c85 100644
--- a/src/views/standard/standardLibrary/index.vue
+++ b/src/views/standard/standardLibrary/index.vue
@@ -682,10 +682,42 @@
         }
       }
     },
-    filterNode(value, data) {
-      if (!value) return true;
-      return data.label.indexOf(value) !== -1;
+    // 璋冪敤tree杩囨护鏂规硶 涓枃鑻辫繃婊�
+    filterNode (value, data, node) {
+      if (!value) {銆�銆�銆�銆�//濡傛灉鏁版嵁涓虹┖锛屽垯杩斿洖true,鏄剧ず鎵�鏈夌殑鏁版嵁椤�
+        return true
+      }
+      // 鏌ヨ鍒楄〃鏄惁鏈夊尮閰嶆暟鎹紝灏嗗�煎皬鍐欙紝鍖归厤鑻辨枃鏁版嵁
+      let val = value.toLowerCase()
+      return this.chooseNode(val, data, node) // 璋冪敤杩囨护浜屽眰鏂规硶
     },
+    // 杩囨护鐖惰妭鐐� / 瀛愯妭鐐� (濡傛灉杈撳叆鐨勫弬鏁版槸鐖惰妭鐐逛笖鑳藉尮閰嶏紝鍒欒繑鍥炶鑺傜偣浠ュ強鍏朵笅鐨勬墍鏈夊瓙鑺傜偣锛涘鏋滃弬鏁版槸瀛愯妭鐐癸紝鍒欒繑鍥炶鑺傜偣鐨勭埗鑺傜偣銆俷ame鏄腑鏂囧瓧绗︼紝enName鏄嫳鏂囧瓧绗�.
+    chooseNode (value, data, node) {
+      if (data.label.indexOf(value) !== -1) {
+        return true
+      }
+      const level = node.level
+      // 濡傛灉浼犲叆鐨勮妭鐐规湰韬氨鏄竴绾ц妭鐐瑰氨涓嶇敤鏍¢獙浜�
+      if (level === 1) {
+        return false
+      }
+      // 鍏堝彇褰撳墠鑺傜偣鐨勭埗鑺傜偣
+      let parentData = node.parent
+      // 閬嶅巻褰撳墠鑺傜偣鐨勭埗鑺傜偣
+      let index = 0
+      while (index < level - 1) {
+        // 濡傛灉鍖归厤鍒扮洿鎺ヨ繑鍥烇紝姝ゅname鍊兼槸涓枃瀛楃锛宔nName鏄嫳鏂囧瓧绗︺�傚垽鏂尮閰嶄腑鑻辨枃杩囨护
+        if (parentData.data.label.indexOf(value) !== -1) {
+          return true
+        }
+        // 鍚﹀垯鐨勮瘽鍐嶅線涓婁竴灞傚仛鍖归厤
+        parentData = parentData.parent
+        index++
+      }
+      // 娌″尮閰嶅埌杩斿洖false
+      return false
+    },
+
     searchFilter() {
       this.$refs.tree.filter(this.search);
     },

--
Gitblit v1.9.3