Browse Source

[BUG]分组查找隐藏其他节点

zhuth 6 years ago
parent
commit
7382d7e23b
1 changed files with 20 additions and 1 deletions
  1. 20 1
      src/components/common/groupManageMentBox/box.jsx

+ 20 - 1
src/components/common/groupManageMentBox/box.jsx

@@ -24,11 +24,30 @@ class GroupBox extends React.Component {
         }
     }
 
+    onFilter = (tree, regLabel) => {
+        let arr = tree ? [ ...tree ] : [];
+        for(let i = arr.length - 1; i >= 0; i--) {
+            let t = arr[i];
+            t.children = t.children || [];
+            if(t.children.length > 0) {
+                t.children = this.onFilter(t.children, regLabel);
+            }
+
+            // 关键字过滤
+            if(!!regLabel && t.label.search(new RegExp('(' + regLabel + '){1}', 'ig')) === -1 && t.children.length === 0) {
+                arr.splice(i, 1);
+                continue;
+            }
+        }
+        return arr;
+    }
+
     generateTreeNode(treeData) {
         const { filterLabel, editingKey } = this.state;
         const reg = new RegExp('([+ \\- & | ! ( ) { } \\[ \\] ^ \" ~ * ? : ( ) \/])', 'g'); // 需要转义的字符
         const regLabel = filterLabel.replace(new RegExp('(\\\\)', 'g'), '\\$1').replace(reg, '\\$1'); // 添加转义符号
-        let list = treeData.sort((a, b) => (a.index - b.index)).map(t => {
+        let arr = this.onFilter(treeData, regLabel);
+        let list = arr.sort((a, b) => (a.index - b.index)).map(t => {
             const title = <span>{ (regLabel) ?
                 ((t.label || '').split(new RegExp(`(${regLabel})`, 'i')).map((fragment, i) => {
                     return (