import React, {Component} from 'react';
import {Layout, Menu, Button, Spin, Icon, LocaleProvider, Dropdown, Avatar, Badge} 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 QuantService from "./quantService/QuantService";
import TrialCase from "./graphqlService/TrialCase";
import UserCreate from "./graphqlService/UserCreate";
import WxTrialCase from "./wechatService/WxTrialCase";
import WxUserCreate from "./wechatService/WxUserCreate";
import Login from "../../login/Login";
import Ticket from '../../ticket/Ticket';
import './graphqlService/component/graphql/index.css';
import './index.css'
import Create from "./graphqlService/component/schema/Create";
import WxCreate from "./wechatService/wxCreate/WxCreate";
import {CASE_AND_PROJECT, GET_USER} from "../../gql";
import axios from 'axios';
import {getCookie, setCookie} from "../../cookie";
import {logoutUrl} from "../../config";
import Graphiql from "./common/Graphiql";
axios.defaults.withCredentials = true;
const {SubMenu} = Menu;
const {Header, Sider} = Layout;
moment.locale('en');
class DevelopVersion 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,
wxVisible: false,
userID: '',
avatar: ''
};
}
componentWillMount() {
let urlList = window.location.pathname.split("/");
let urlListLength = urlList.length;
if (urlListLength > 2) {
this.setState({menuLevel1: urlList[1]});
if (urlList[3] !== 'index') {
this.setState({sideBar: urlList[3]});
}
}
let userID = getCookie('user_id');
if (userID === undefined || '') {
axios.get(this.state.getIdUrl)
.then((res) => {
if (res.data !== '') {
setCookie("user_id", res.data);
this.setState({
userID: res.data
})
}
})
.catch(function (err) {
console.log(err);
});
} else {
this.setState({
userID
})
}
}
onCollapse = (collapsed) => {
this.setState({collapsed});
};
switchMenu = (menuName, e) => {
this.setState({
[menuName]: e.key,
});
};
switchMenuTab = (menuName, e) => {
this.setState({
[menuName]: e.key,
});
if (e.key === "graphql-service") {
this.setState({sideBar: "ecommerce"});
}
};
switchSidebar = (value) => {
this.setState({
sideBar: value,
});
};
switchMenuLevel = (menuName, value) => {
this.setState({
[menuName]: value,
});
};
showModal = () => {
this.setState({
visible: true,
});
};
wxShowModal = () => {
this.setState({
wxVisible: true,
});
};
hideModal = () => {
this.setState({
visible: false,
});
};
wxHideModal = () => {
this.setState({
wxVisible: false,
});
};
changeLocale = (e) => {
e.stopPropagation();
let {language} = this.state;
// console.log('app language',language);
let changeLanguage = language === "中文" ? "English" : "中文";
let local = language === "中文" ? undefined : zhCN;
console.log(language);
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, wxVisible} = this.state;
return (
this.setState({menuLevel1: "graphql-service", sideBar: "ecommerce"})}>
{
this.state.userID === '' ?
:
}
{(() => {
switch (this.state.menuLevel1) {
case 'graphql-service':
return (
);
case 'wechat-service':
return (
);
case 'quant-service':
return (
);
default:
return (
);
}
})()}
);
}
}
export default DevelopVersion;
class GraphqlSidebar extends Component {
constructor(props) {
super(props);
this.state = {
userID: getCookie('user_id'),
}
}
render() {
return (
{
({loading, error, data}) => {
if (loading) return (
);
if (error) return 'error!';
// console.log('CASE_AND_PROJECT data', data);
data.caseProject.forEach((project) => {
switch (project.schema_id.schemaName) {
case 'ecommerce' :
localStorage.setItem('ecommerce', project.schema_id.schemaData);
break;
case 'order':
localStorage.setItem('order', project.schema_id.schemaData);
break;
case 'bills':
localStorage.setItem('bills', project.schema_id.schemaData);
break;
default:
break;
}
});
return (
)
}
}
)
}
}
class WxConfigSiderbar extends Component {
constructor(props) {
super(props);
this.state = {
userID: getCookie('user_id'),
}
}
render() {
return (
{
({loading, error, data}) => {
// console.log('CASE_WXCONFIG_AND_PROJECT data', data);
if (loading) return (
);
if (error) return 'error!';
return (
)
}
}
)
}
}
class User extends Component {
constructor(props) {
super(props);
this.state = {
show: false
}
}
logout = () => {
axios.get(logoutUrl)
.then((res) => {
console.log('logout success',res);
setCookie("user_id", '');
})
.catch((err) => {
});
};
render() {
return (
{
({loading, error, data}) => {
if (loading) {
return
}
if (error) {
return 'error!';
}
let user = data.user_by_id;
if (user !== null) {
const menu = (
);
return (
)
}
}
}
)
}
}