|
|
@@ -1,5 +1,5 @@
|
|
|
import React, {Component} from 'react';
|
|
|
-import {Layout, Menu, Button, Spin, Icon, LocaleProvider} from 'antd';
|
|
|
+import {Layout, Menu, Button, Spin, Icon, LocaleProvider, Dropdown} from 'antd';
|
|
|
import {BrowserRouter as Router, Route, Link, Switch, Redirect} from "react-router-dom";
|
|
|
import {Query} from "react-apollo";
|
|
|
import gql from "graphql-tag";
|
|
|
@@ -20,7 +20,7 @@ import './index.css'
|
|
|
import Create from "./graphqlService/component/schema/Create";
|
|
|
import WxCreate from "./wechatService/wxCreate/WxCreate";
|
|
|
|
|
|
-import {SHOW_ALL_SCHEMA, SHOW_CASE_SCHEMA, SHOW_PROJECT, CASE_AND_PROJECT} from "../gql";
|
|
|
+import {SHOW_ALL_SCHEMA, SHOW_CASE_SCHEMA, SHOW_PROJECT, CASE_AND_PROJECT, GET_USER} from "../gql";
|
|
|
import axios from 'axios';
|
|
|
import {getCookie, setCookie} from "../cookie";
|
|
|
|
|
|
@@ -42,7 +42,8 @@ class App extends Component {
|
|
|
locale: props.language === "中文" ? zhCN : undefined,
|
|
|
languageButton: props.language === "中文" ? "English" : "中文",
|
|
|
visible: false,
|
|
|
- wxVisible: false
|
|
|
+ wxVisible: false,
|
|
|
+ userID: ''
|
|
|
};
|
|
|
}
|
|
|
|
|
|
@@ -62,11 +63,18 @@ class App extends Component {
|
|
|
.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
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -180,15 +188,22 @@ class App extends Component {
|
|
|
</Menu.Item>
|
|
|
</Menu>
|
|
|
|
|
|
- <Link to="/login">
|
|
|
- <Button className='login-button' type='primary'
|
|
|
- onClick={() => this.switchMenuLevel('menuLevel1', 'user')}>
|
|
|
- <FormattedMessage id="Login"/></Button>
|
|
|
- </Link>
|
|
|
+ {
|
|
|
+ this.state.userID === '' ?
|
|
|
+ <Link to="/login">
|
|
|
+ <Button className='login-button' type='primary'
|
|
|
+ onClick={() => this.switchMenuLevel('menuLevel1', 'user')}>
|
|
|
+ <FormattedMessage id="Login"/></Button>
|
|
|
+ </Link>
|
|
|
+ :
|
|
|
+ <User
|
|
|
+ userID={this.state.userID}
|
|
|
+ languageButton={this.state.languageButton}
|
|
|
+ changeLocale={this.changeLocale}
|
|
|
+ switchMenuLevel={this.switchMenuLevel}
|
|
|
+ />
|
|
|
+ }
|
|
|
|
|
|
- <div className="change-locale">
|
|
|
- <Button size="small" onClick={(e) => this.changeLocale(e)}>{languageButton}</Button>
|
|
|
- </div>
|
|
|
</Header>
|
|
|
|
|
|
|
|
|
@@ -580,4 +595,61 @@ class WxConfigSiderbar extends Component {
|
|
|
</Query>
|
|
|
)
|
|
|
}
|
|
|
+}
|
|
|
+
|
|
|
+class User extends Component {
|
|
|
+ constructor(props) {
|
|
|
+ super(props);
|
|
|
+ this.state = {
|
|
|
+ show: false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <Query query={gql(GET_USER)} variables={{id: this.props.userID}}>
|
|
|
+ {
|
|
|
+ ({loading, error, data}) => {
|
|
|
+ if (loading) {
|
|
|
+ return <Spin style={{marginLeft: 3}}/>
|
|
|
+ }
|
|
|
+ if (error) {
|
|
|
+ return 'error!';
|
|
|
+ }
|
|
|
+ let user = data.user_by_id;
|
|
|
+ if (user !== null) {
|
|
|
+ const menu = (
|
|
|
+ <Menu className={'user-detail'}>
|
|
|
+ <Menu.Item className={'user-info'}>
|
|
|
+ <p className={'user-info-nickname'}>{user.nickname}</p>
|
|
|
+ <p className={'user-info-email'}>{user.email}</p>
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item>
|
|
|
+ <a href='https://www.ioobot.com' onClick={(e) => {
|
|
|
+ e.preventDefault();
|
|
|
+ this.props.changeLocale(e)
|
|
|
+ }}>{this.props.languageButton}</a>
|
|
|
+ </Menu.Item>
|
|
|
+ <Menu.Item>
|
|
|
+ <Link to="/login">
|
|
|
+ <div onClick={() => this.props.switchMenuLevel('menuLevel1', 'user')}><FormattedMessage id="Account center"/></div>
|
|
|
+ </Link>
|
|
|
+ </Menu.Item>
|
|
|
+ </Menu>
|
|
|
+ );
|
|
|
+ return (
|
|
|
+ <div className='login-nickname' onClick={()=>{}}>
|
|
|
+ <Dropdown overlay={menu} placement="bottomRight" trigger={['click']}>
|
|
|
+ <div>
|
|
|
+ {user.nickname} <Icon type="down" />
|
|
|
+ </div>
|
|
|
+ </Dropdown>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ </Query>
|
|
|
+ )
|
|
|
+ }
|
|
|
}
|