From 0bff15b120b3e3ff1f1c3d2ce4d9aa8d3ad3917e Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 06 十一月 2020 13:49:44 +0800
Subject: [PATCH] 2020-11-06

---
 src/tabviews/custom/index.jsx |  115 ++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 76 insertions(+), 39 deletions(-)

diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index 73a4d2b..0cc3646 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -106,37 +106,42 @@
         return
       }
 
+      // 鏉冮檺杩囨护
+      if (this.props.menuType !== 'HS') {
+        config.components = this.filterComponent(config.components)
+      }
+
       // 鑾峰彇涓绘悳绱㈡潯浠�
       let mainSearch = []
       config.components.forEach(component => {
-        if (component.type === 'search') {
-          component.search = component.search.map(item => {
-            item.oriInitval = item.initval
-            if (['text', 'select', 'link'].includes(item.type) && param) {
-              if (param.searchkey === item.field) {
-                item.initval = param.searchval
-              } else if (param.BID && item.field.toLowerCase() === 'bid') {
-                item.initval = param.BID
-              } else if (param.data && param.data[item.field]) {
-                item.initval = param.data[item.field]
-              }
+        if (component.type !== 'search') return
+
+        component.search = component.search.map(item => {
+          item.oriInitval = item.initval
+          if (['text', 'select', 'link'].includes(item.type) && param) {
+            if (param.searchkey === item.field) {
+              item.initval = param.searchval
+            } else if (param.BID && item.field.toLowerCase() === 'bid') {
+              item.initval = param.BID
+            } else if (param.data && param.data[item.field]) {
+              item.initval = param.data[item.field]
             }
+          }
 
-            if (!item.blacklist || item.blacklist.length === 0) return item
+          if (!item.blacklist || item.blacklist.length === 0) return item
 
-            let _black = item.blacklist.filter(v => {
-              return this.props.permRoles.indexOf(v) !== -1
-            })
-
-            if (_black.length > 0) {
-              item.Hide = 'true'
-            }
-
-            return item
+          let _black = item.blacklist.filter(v => {
+            return this.props.permRoles.indexOf(v) !== -1
           })
 
-          mainSearch = Utils.initMainSearch(component.search)
-        }
+          if (_black.length > 0) {
+            item.Hide = 'true'
+          }
+
+          return item
+        })
+
+        mainSearch = Utils.initMainSearch(component.search)
       })
 
       let params = []
@@ -162,6 +167,42 @@
         duration: 5
       })
     }
+  }
+
+  filterComponent = (components) => {
+    return components.filter(item => {
+      if (item.type === 'tabs') {
+        if (item.setting.blacklist && item.setting.blacklist.length > 0) {
+          let _black = item.setting.blacklist.filter(v => {
+            return this.props.permRoles.indexOf(v) !== -1
+          })
+  
+          if (_black.length > 0) return false
+        }
+
+        item.subtabs = item.subtabs.map(tab => {
+          tab.components = this.filterComponent(tab.components)
+          return tab
+        })
+      } else if (item.type === 'pie' || item.type === 'bar' || item.type === 'line') {
+        if (item.plot.blacklist && item.plot.blacklist.length > 0) {
+          let _black = item.plot.blacklist.filter(v => {
+            return this.props.permRoles.indexOf(v) !== -1
+          })
+  
+          if (_black.length > 0) return false
+        }
+      } else {
+        if (item.wrap.blacklist && item.wrap.blacklist.length > 0) {
+          let _black = item.wrap.blacklist.filter(v => {
+            return this.props.permRoles.indexOf(v) !== -1
+          })
+  
+          if (_black.length > 0) return false
+        }
+      }
+      return true
+    })
   }
 
   // 鏍煎紡鍖栭粯璁よ缃�
@@ -443,22 +484,18 @@
             <AntvTabs config={item} BID={BID} mainSearch={mainSearch} />
           </Col>
         )
-      } else if (item.type === 'card') {
-        if (item.subtype === 'datacard') {
-          return (
-            <Col span={item.width} key={item.uuid}>
-              <DataCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
-            </Col>
-          )
-        } else if (item.subtype === 'propcard') {
-          return (
-            <Col span={item.width} key={item.uuid}>
-              <PropCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
-            </Col>
-          )
-        } else {
-          return null
-        }
+      } else if (item.type === 'card' && item.subtype === 'datacard') {
+        return (
+          <Col span={item.width} key={item.uuid}>
+            <DataCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
+          </Col>
+        )
+      } else if (item.type === 'card' && item.subtype === 'propcard') {
+        return (
+          <Col span={item.width} key={item.uuid}>
+            <PropCard config={item} data={data} BID={BID} mainSearch={mainSearch} menuType={menuType} dataManager={dataManager} />
+          </Col>
+        )
       } else {
         return null
       }

--
Gitblit v1.8.0