import React, {Component} from 'react'; import {Layout, Menu, Button, Spin, Icon, LocaleProvider} from 'antd'; import {BrowserRouter as Router, Route, Link, Switch, Redirect} from "react-router-dom"; import {Query} from "react-apollo"; import gql from "graphql-tag"; import moment from 'moment'; import 'moment/locale/zh-cn'; import {FormattedMessage} from 'react-intl'; import zhCN from 'antd/lib/locale-provider/zh_CN'; import WechatService from "../wechatService/WechatService"; import QuantService from "../quantService/QuantService"; import TrialCase from "../trialCase/TrialCase"; import UserCreate from "../userCreate/UserCreate"; import Login from "../login/Login"; import '../common/graphql/index.css'; import './index.css' import Create from "../common/schema/Create"; import {SHOW_ALL_SCHEMA} from "../gql"; import axios from 'axios'; import {getCookie} from "../cookie"; //案例入口 import ShopApp from '../../case/ShopApp/src/App' import OrderApp from '../../case/OrderApp/src/App' import BillApp from '../../case/BillApp/src/App' axios.defaults.withCredentials = true; const {SubMenu} = Menu; const {Header, Sider} = Layout; moment.locale('en'); class App extends Component { constructor(props) { super(props); this.state = { menuLevel1: "graphql-service", sideBar: "ecommerce", collapsed: false, inlineCollapsed: false, language:props.language, locale: props.language === "中文" ? zhCN : undefined, languageButton:props.language === "中文" ? "English" : "中文", visible: false }; } componentWillMount(){ console.log('window.location',window.location); let urlList = window.location.pathname.split("/"); let urlListLength = urlList.length; console.log('urlList',urlList,urlListLength); if (urlListLength > 2) { this.setState({menuLevel1:urlList[1]}); if(urlList[3] !== 'index'){ this.setState({sideBar:urlList[3]}); } } } onCollapse = (collapsed) => { // console.log(collapsed); this.setState({collapsed}); }; switchMenu = (menuName, e) => { // console.log('menuName', menuName, 'e', e); this.setState({ [menuName]: e.key, }); }; switchSidebar = (value) => { this.setState({ sideBar:value, }); }; switchMenuLevel = (menuName, value) => { this.setState({ [menuName]: value, }); }; showModal = () => { this.setState({ visible: true, }); }; hideModal = () => { this.setState({ visible: false, }); }; changeLocale = (e) => { e.stopPropagation(); let {language} = this.state; // console.log('app language',language); let changeLanguage = language === "中文" ? "English" : "中文"; let local = language === "中文" ? undefined : zhCN; let languageButton = language === "中文" ? "中文" : "English"; sessionStorage.setItem("language", changeLanguage); this.props.changeLanguage(changeLanguage); this.setState({ language: changeLanguage, locale: local, languageButton:languageButton }); if (!local) { moment.locale('en'); } else { moment.locale('zh-cn'); } }; render() { const {locale, languageButton, visible} = this.state; return (
this.switchMenuLevel('menuLevel1', "graphql-service")}>
this.switchMenu('menuLevel1', e)} >
{(() => { switch (this.state.menuLevel1) { case 'graphql-service': return ( ); case 'wechat-service': return ( this.switchMenu('sideBar', e)} selectedKeys={[this.state.sideBar]} style={{ borderRight: 0, overflow: 'auto', height: '100vh', left: '0', width: '200px', position: 'fixed' }} > My Create}> my wechat Instructions ); case 'quant-service': return ( this.switchMenu('sideBar', e)} selectedKeys={[this.state.sideBar]} style={{ borderRight: 0, overflow: 'auto', height: '100vh', left: '0', width: '200px', position: 'fixed' }} > Case Show}> quant case Instructions ); case 'user': return ( this.switchMenu('sideBar', e)} selectedKeys={[this.state.sideBar]} style={{ borderRight: 0, overflow: 'auto', height: '100vh', left: '0', width: '200px', position: 'fixed' }} > Account center Cloud settings ); default: return ( ); } })()}
); } } export default App; class GraphqlSidebar extends Component { constructor(props) { super(props); this.state = { userID: getCookie('user_id'), } } render() { return ( { ({loading, error, data}) => { // console.log('user schema data',data); if (loading) return ; if (error) return 'error!'; localStorage.setItem('ecommerce', data.caseSchema.find(obj=>obj.schemaName==='ecommerce').schemaData); localStorage.setItem('subscribe', data.caseSchema.find(obj=>obj.schemaName==='subscribe').schemaData); localStorage.setItem('bills', data.caseSchema.find(obj=>obj.schemaName==='bills').schemaData); return ( this.props.switchMenu('sideBar', e)} selectedKeys={[this.props.sideBar]} style={{ borderRight: 0, overflow: 'auto', height: '100vh', left: '0', width: '200px', position: 'fixed' }} > Case Show}> { data.caseSchema.map((schema) => {schema.schemaName} ) } Create My Create}> { data.userSchema.map((schema) => {schema.schemaName} ) } Instructions ) } } ) } }