From 6afdec0062dacbded57e166230eb22cc55ced0c1 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期六, 08 五月 2021 14:30:21 +0800
Subject: [PATCH] 2021-05-08

---
 src/tabviews/home/index.jsx |  365 +++++++++-------------------------------------------
 1 files changed, 64 insertions(+), 301 deletions(-)

diff --git a/src/tabviews/home/index.jsx b/src/tabviews/home/index.jsx
index f02d215..9505906 100644
--- a/src/tabviews/home/index.jsx
+++ b/src/tabviews/home/index.jsx
@@ -1,331 +1,94 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import {connect} from 'react-redux'
-import echarts from 'echarts/lib/echarts'
-import 'echarts/lib/chart/bar'
-import 'echarts/lib/chart/line'
-import 'echarts/lib/component/tooltip'
-import 'echarts/lib/component/title'
-import 'echarts/lib/component/legend'
-import 'echarts/lib/component/toolbox'
-import 'echarts/lib/component/markPoint'
-import 'echarts/lib/component/markLine'
-import { Icon, Tabs, Slider } from 'antd'
-// import {refreshTabView, modifyTabview} from '@/store/action'
-// import Api from '@/api'
+import { connect } from 'react-redux'
+import { notification, Spin } from 'antd'
+
+import Api from '@/api'
+import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
 
-const { TabPane } = Tabs
+const DefaultHome = asyncComponent(() => import('./defaulthome'))
+const CustomPage = asyncComponent(() => import('@/tabviews/custom'))
 
 class Home extends Component {
   static propTpyes = {
-    MenuNo: PropTypes.string, // 鑿滃崟鍙傛暟
     MenuID: PropTypes.string, // 鑿滃崟Id
-    param: PropTypes.object // 鑿滃崟鍙傛暟
   }
 
   state = {
-
+    loading: true,
+    background: sessionStorage.getItem('home_background'),
+    waiting: true,
+    view: ''
   }
 
   componentDidMount () {
-    let myChart = echarts.init(document.getElementById('home'))
-    // 缁樺埗鍥捐〃
-    myChart.setOption({
-      color: ['#1890ff'],
-      tooltip : {
-        trigger: 'axis',
-        axisPointer : {            // 鍧愭爣杞存寚绀哄櫒锛屽潗鏍囪酱瑙﹀彂鏈夋晥
-          type : ''        // 榛樿涓虹洿绾匡紝鍙�変负锛�'line' | 'shadow'
+    this.loadHomeConfig()
+  }
+
+  UNSAFE_componentWillReceiveProps (nextProps) {
+    if (nextProps.permMenus.length > 0 && JSON.stringify(nextProps.permAction) !== '{}') {
+      this.setState({
+        waiting: false
+      })
+    }
+  }
+
+  loadHomeConfig = () => {
+    let _param = {
+      func: 'sPC_Get_LongParam',
+      MenuID: this.props.MenuID
+    }
+    Api.getCacheConfig(_param).then(result => {
+      if (result.status) {
+        if (result.LongParam) {
+          this.setState({
+            loading: false,
+            view: 'custom'
+          })
+        } else {
+          this.setState({
+            loading: false,
+            waiting: false,
+            view: 'default'
+          })
         }
-      },
-      grid: {
-        left: '3%',
-        right: '4%',
-        bottom: '3%',
-        containLabel: true
-      },
-      xAxis : [
-        {
-          type : 'category',
-          data : ['1鏈�', '2鏈�', '3鏈�', '4鏈�', '5鏈�', '6鏈�', '7鏈�', '8鏈�', '9鏈�', '10鏈�', '11鏈�', '12鏈�'],
-          axisTick: {
-            alignWithLabel: true
-          }
-        }
-      ],
-      yAxis : [
-        {
-          type : 'value',
-          splitLine: {
-            show: true,
-            lineStyle: {
-              color: '#d9d9d9',
-              type: 'dashed'
-            }
-          }
-        }
-      ],
-      series : [
-        {
-          name:'閿�鍞',
-          type:'bar',
-          barWidth: '30',
-          data:[30, 52, 200, 334, 390, 330, 220, 170, 220, 290, 350, 410, 440, 530]
-        }
-      ]
+      } else {
+        this.setState({
+          loading: false,
+          view: 'default'
+        })
+        notification.warning({
+          top: 92,
+          message: result.message,
+          duration: 5
+        })
+      }
     })
   }
 
   render() {
-    return (
-      <div className="home-view">
-        <div className="ant-row-flex">
-          <div className="ant-col ant-col-sm-6">
-            <div className="ant-card">
-              <div className="ant-card-body">
-                <div className="antd-chart-card">
-                  <div className="antd-chart-top">
-                    <div className="antd-meta-wrap">
-                      <div className="antd-meta">
-                        <span>
-                          <span>鎬婚攢鍞</span>
-                        </span>
-                        <span className="antd-action">
-                          <Icon type="info-circle-o" />
-                        </span>
-                      </div>
-                      <div className="antd-total">
-                        <span>楼 126,560</span>
-                      </div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-content">
-                    <div className="antd-content-fixed">
-                      <div className="antd-trend-item" style={{marginRight: '16px'}}>
-                        <span>
-                          <span>鍛ㄥ悓姣�</span>
-                          <span className="antd-trend-text">12%</span>
-                        </span>
-                        <span className="antd-trend-up">
-                          <Icon type="caret-up" />
-                        </span>
-                      </div>
-                      <div className="antd-trend-item">
-                        <span>
-                          <span>鏃ュ悓姣�</span>
-                          <span className="antd-trend-text">11%</span>
-                        </span>
-                        <span className="antd-trend-down">
-                          <Icon type="caret-down" />
-                        </span>
-                      </div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-footer">
-                    <div className="antd-field">
-                      <span className="antd-label">
-                        <span>鏃ラ攢鍞</span>
-                      </span>
-                      <span className="antd-number">锟�12,423</span>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div className="ant-col ant-col-sm-6">
-            <div className="ant-card">
-              <div className="ant-card-body">
-                <div className="antd-chart-card">
-                  <div className="antd-chart-top">
-                    <div className="antd-meta-wrap">
-                      <div className="antd-meta">
-                        <span>
-                          <span>浜ч噺</span>
-                        </span>
-                        <span className="antd-action">
-                          <Icon type="info-circle-o" />
-                        </span>
-                      </div>
-                      <div className="antd-total">
-                        <span>8,560</span>
-                      </div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-content">
-                    <div className="antd-content-fixed orange">
-                      <Slider defaultValue={67} tipFormatter={null} />
-                      <div className="mask"></div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-footer">
-                    <div className="antd-field">
-                      <span className="antd-label">
-                        <span>鏃ヤ骇閲�</span>
-                      </span>
-                      <span className="antd-number">1,423</span>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div className="ant-col ant-col-sm-6">
-            <div className="ant-card">
-              <div className="ant-card-body">
-                <div className="antd-chart-card">
-                  <div className="antd-chart-top">
-                    <div className="antd-meta-wrap">
-                      <div className="antd-meta">
-                        <span>
-                          <span>宸ュ崟鏁�</span>
-                        </span>
-                        <span className="antd-action">
-                          <Icon type="info-circle-o" />
-                        </span>
-                      </div>
-                      <div className="antd-total">
-                        <span>6,560</span>
-                      </div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-content">
-                    <div className="antd-content-fixed primary">
-                      <Slider defaultValue={77} tipFormatter={null} />
-                      <div className="mask"></div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-footer">
-                    <div className="antd-field">
-                      <span className="antd-label">
-                        <span>鏃ュ伐鍗曟暟</span>
-                      </span>
-                      <span className="antd-number">120</span>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div className="ant-col ant-col-sm-6">
-            <div className="ant-card">
-              <div className="ant-card-body">
-                <div className="antd-chart-card">
-                  <div className="antd-chart-top">
-                    <div className="antd-meta-wrap">
-                      <div className="antd-meta">
-                        <span>
-                          <span>鍛ㄨ浆鐜�</span>
-                        </span>
-                        <span className="antd-action">
-                          <Icon type="info-circle-o" />
-                        </span>
-                      </div>
-                      <div className="antd-total">
-                        <span>87%</span>
-                      </div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-content">
-                    <div className="antd-content-fixed">
-                      <Slider defaultValue={87} tipFormatter={null} />
-                      <div className="mask"></div>
-                    </div>
-                  </div>
-                  <div className="antd-chart-footer">
-                    <div className="antd-trend-item" style={{marginRight: '16px'}}>
-                      <span>
-                        <span>鍛ㄥ悓姣�</span>
-                        <span className="antd-trend-text">17%</span>
-                      </span>
-                      <span className="antd-trend-up">
-                        <Icon type="caret-up" />
-                      </span>
-                    </div>
-                    <div className="antd-trend-item">
-                      <span>
-                        <span>鏃ュ悓姣�</span>
-                        <span className="antd-trend-text">10%</span>
-                      </span>
-                      <span className="antd-trend-down">
-                        <Icon type="caret-down" />
-                      </span>
-                    </div>
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <Tabs defaultActiveKey="1">
-          <TabPane tab="閿�鍞" key="1">
-            <div id="home" className="sale-trend ant-col ant-col-xs-16"></div>
-            <div className="ant-col ant-col-xs-8">
-              <div className="antd-sales-rank">
-                <h4 className="antd-ranking-title">閿�閲忔帓鍚�</h4>
-                <ul className="antd-ranking-list">
-                  <li>
-                    <span className="antd-ranking-active">1</span>
-                    <span className="antd-ranking-title">浜у搧1</span>
-                    <span>723,234</span>
-                  </li>
-                  <li>
-                    <span className="antd-ranking-active">2</span>
-                    <span className="antd-ranking-title">浜у搧2</span>
-                    <span>683,434</span>
-                  </li>
-                  <li>
-                    <span className="antd-ranking-active">3</span>
-                    <span className="antd-ranking-title">浜у搧3</span>
-                    <span>527,264</span>
-                  </li>
-                  <li>
-                    <span className="antd-ranking-number">4</span>
-                    <span className="antd-ranking-title">浜у搧4</span>
-                    <span>493,233</span>
-                  </li>
-                  <li>
-                    <span className="antd-ranking-number">5</span>
-                    <span className="antd-ranking-title">浜у搧5</span>
-                    <span>323,734</span>
-                  </li>
-                  <li>
-                    <span className="antd-ranking-number">6</span>
-                    <span className="antd-ranking-title">浜у搧6</span>
-                    <span>303,934</span>
-                  </li>
-                  <li>
-                    <span className="antd-ranking-number">7</span>
-                    <span className="antd-ranking-title">浜у搧7</span>
-                    <span>227,244</span>
-                  </li>
-                  <li>
-                    <span className="antd-ranking-number">8</span>
-                    <span className="antd-ranking-title">浜у搧8</span>
-                    <span>223,734</span>
-                  </li>
-                </ul>
-              </div>
-            </div>
-          </TabPane>
-        </Tabs>
-      </div>
-    )
+    const { loading, waiting, view, background } = this.state
+
+    if (loading || waiting) {
+      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}/>)
+    } else {
+      return (<DefaultHome />)
+    }
   }
 }
 
 const mapStateToProps = (state) => {
   return {
-    // tabviews: state.tabviews
+    permAction: state.permAction,
+    permMenus: state.permMenus
   }
 }
 
-const mapDispatchToProps = (dispatch) => {
-  return {
-    // refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab)),
-    // modifyTabview: (tabviews) => dispatch(modifyTabview(tabviews))
-  }
+const mapDispatchToProps = () => {
+  return {}
 }
 
 export default connect(mapStateToProps, mapDispatchToProps)(Home)
\ No newline at end of file

--
Gitblit v1.8.0