LoadingPage.js 1.97 KB
Newer Older
jim's avatar
jim committed
1 2 3
import React, { PureComponent } from 'react';
import { Spin } from 'antd';
import { connect } from 'dva';
jim's avatar
jim committed
4
import { enquireScreen, unenquireScreen } from 'enquire-js';
jim's avatar
jim committed
5 6 7 8 9 10 11 12 13
import BasicLayout from './BasicLayout';
import { getMenuData } from '../common/menu';
/**
 * 根据菜单取得重定向地址.
 */

const MenuData = getMenuData();
const getRedirectData = () => {
  const redirectData = [];
jim's avatar
jim committed
14
  const getRedirect = item => {
jim's avatar
jim committed
15 16 17 18 19 20
    if (item && item.children) {
      if (item.children[0] && item.children[0].path) {
        redirectData.push({
          from: `${item.path}`,
          to: `${item.children[0].path}`,
        });
jim's avatar
jim committed
21
        item.children.forEach(children => {
jim's avatar
jim committed
22 23 24 25 26 27 28 29 30 31
          getRedirect(children);
        });
      }
    }
  };
  MenuData.forEach(getRedirect);
  return redirectData;
};
const redirectData = getRedirectData();

lijiehua's avatar
lijiehua committed
32
class LoadingPage extends PureComponent {
jim's avatar
jim committed
33 34 35 36 37
  state = {
    loading: true,
    isMobile: false,
  };
  componentDidMount() {
jim's avatar
jim committed
38
    this.enquireHandler = enquireScreen(mobile => {
jim's avatar
jim committed
39 40 41 42 43 44 45 46
      this.setState({
        isMobile: mobile,
      });
    });
    this.props.dispatch({
      type: 'user/fetchCurrent',
    });
    this.hideLoading();
jim's avatar
jim committed
47
    this.initSetting();
jim's avatar
jim committed
48
  }
jim's avatar
jim committed
49 50 51
  componentWillUnmount() {
    unenquireScreen(this.enquireHandler);
  }
jim's avatar
jim committed
52 53 54 55 56
  hideLoading() {
    this.setState({
      loading: false,
    });
  }
jim's avatar
jim committed
57 58 59
  /**
   * get setting from url params
   */
jim's avatar
jim committed
60 61
  initSetting() {
    this.props.dispatch({
jim's avatar
jim committed
62
      type: 'setting/getSetting',
jim's avatar
jim committed
63 64
    });
  }
jim's avatar
jim committed
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
  render() {
    if (this.state.loading) {
      return (
        <div
          style={{
            width: '100%',
            height: '100%',
            margin: 'auto',
            paddingTop: 50,
            textAlign: 'center',
          }}
        >
          <Spin size="large" />
        </div>
      );
    }
    return (
      <BasicLayout
        isMobile={this.state.isMobile}
        menuData={MenuData}
        redirectData={redirectData}
        {...this.props}
      />
    );
  }
}

lijiehua's avatar
lijiehua committed
92
export default connect()(LoadingPage);