From 53b68578c161561700bd77759629daa1608e05ca Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 23 八月 2023 23:43:05 +0800
Subject: [PATCH] 2023-08-23

---
 src/menu/datasource/index.jsx |   45 +++++++++++++++++++++------------------------
 1 files changed, 21 insertions(+), 24 deletions(-)

diff --git a/src/menu/datasource/index.jsx b/src/menu/datasource/index.jsx
index 75faaeb..dfa48d8 100644
--- a/src/menu/datasource/index.jsx
+++ b/src/menu/datasource/index.jsx
@@ -100,39 +100,36 @@
         })
       }
     } else {
-      let _search = null
-      let filterComponent = (box) => {
+      let filterComponent = (box, mainSearch) => {
         box.components.forEach(item => {
-          if (_search) return
-
-          if (item.type === 'search') {
-            box.slist = [...box.slist, item.search]
-          } else if (item.uuid === config.uuid) {
-            _search = box.slist.pop()
+          if (item.type !== 'search') return
+          mainSearch = item.search
+        })
+        let has = false
+        box.components.forEach(item => {
+          if (item.uuid === config.uuid) {
+            has = true
           } else if (item.type === 'group') {
             item.components.forEach(m => {
               if (m.uuid !== config.uuid) return
-              _search = box.slist.pop()
-            })
-          } else if (item.type === 'tabs') {
-            item.subtabs.forEach(tab => {
-              tab.slist = [...box.slist]
-              filterComponent(tab)
+              has = true
             })
           }
         })
-      }
-      menu.slist = []
-      filterComponent(menu)
 
-      if (_search) {
-        search = _search
-      } else {
-        menu.components.forEach(item => {
-          if (item.type !== 'search') return
-          search = item.search
-        })
+        if (has) {
+          search = mainSearch || []
+        } else {
+          box.components.forEach(item => {
+            if (item.type !== 'tabs') return
+
+            item.subtabs.forEach(tab => {
+              filterComponent(tab, mainSearch)
+            })
+          })
+        }
       }
+      filterComponent(menu, null)
     }
 
     this.setState({

--
Gitblit v1.8.0