From cc1a76df575c18f0d0ee96e8658461efdce3a918 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 17 一月 2023 18:01:01 +0800
Subject: [PATCH] 2023-01-17

---
 src/tabviews/home/index.jsx |   79 +++++++++++++++++++++++++++++++++++----
 1 files changed, 71 insertions(+), 8 deletions(-)

diff --git a/src/tabviews/home/index.jsx b/src/tabviews/home/index.jsx
index 6104d7a..23338d0 100644
--- a/src/tabviews/home/index.jsx
+++ b/src/tabviews/home/index.jsx
@@ -4,6 +4,7 @@
 
 import Api from '@/api'
 import asyncComponent from '@/utils/asyncComponent'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const DefaultHome = asyncComponent(() => import('./defaulthome'))
@@ -16,11 +17,51 @@
 
   state = {
     loading: true,
+    background: sessionStorage.getItem('home_background'),
+    waitMenu: true,
+    waitAction: true,
     view: ''
   }
 
   componentDidMount () {
     this.loadHomeConfig()
+    if (window.GLOB.mkThdMenus.length > 0) {
+      this.setState({
+        waitMenu: false
+      })
+    } else {
+      MKEmitter.addListener('mkMenuLoaded', this.mkMenuLoaded)
+    }
+    if (window.GLOB.mkActions.loaded) {
+      this.setState({
+        waitAction: false
+      })
+    } else {
+      MKEmitter.addListener('mkActionLoaded', this.mkActionLoaded)
+    }
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('mkMenuLoaded', this.mkMenuLoaded)
+    MKEmitter.removeListener('mkActionLoaded', this.mkActionLoaded)
+  }
+
+  mkMenuLoaded = () => {
+    this.setState({
+      waitMenu: false
+    })
+  }
+
+  mkActionLoaded = () => {
+    this.setState({
+      waitAction: false
+    })
   }
 
   loadHomeConfig = () => {
@@ -31,19 +72,41 @@
     Api.getCacheConfig(_param).then(result => {
       if (result.status) {
         if (result.LongParam) {
-          this.setState({
-            loading: false,
-            view: 'custom'
-          })
+          let config = ''
+
+          try { // 閰嶇疆淇℃伅瑙f瀽
+            config = JSON.parse(window.decodeURIComponent(window.atob(result.LongParam)))
+          } catch (e) {
+            console.warn('Parse Failure')
+            config = ''
+          }
+
+          if (!config || !config.enabled) {
+            this.setState({
+              loading: false,
+              waitMenu: false,
+              waitAction: false,
+              view: 'default'
+            })
+          } else {
+            this.setState({
+              loading: false,
+              view: 'custom'
+            })
+          }
         } else {
           this.setState({
             loading: false,
+            waitMenu: false,
+            waitAction: false,
             view: 'default'
           })
         }
       } else {
         this.setState({
           loading: false,
+          waitMenu: false,
+          waitAction: false,
           view: 'default'
         })
         notification.warning({
@@ -56,12 +119,12 @@
   }
 
   render() {
-    const { loading, view } = this.state
+    const { loading, waitAction, waitMenu, view, background } = this.state
 
-    if (loading) {
-      return (<Spin className="home-box-spin" size="large" />)
+    if (loading || waitAction || waitMenu) {
+      return (<div className="home-loading-view" style={{background: background}}><Spin className="home-box-spin" size="large" /></div>)
     } else if (view === 'custom') {
-      return (<CustomPage MenuID={this.props.MenuID}/>)
+      return (<CustomPage MenuID={this.props.MenuID} MenuName="棣栭〉"/>)
     } else {
       return (<DefaultHome />)
     }

--
Gitblit v1.8.0