Login.js 2.67 KB
Newer Older
1 2
import React, { Component } from 'react';
import { connect } from 'dva';
afc163's avatar
afc163 committed
3
import { Link } from 'dva/router';
ddcat1115's avatar
ddcat1115 committed
4
import { Checkbox, Alert, Icon } from 'antd';
niko's avatar
niko committed
5
import Login from 'components/Login';
6 7
import styles from './Login.less';

ddcat1115's avatar
ddcat1115 committed
8
const { Tab, UserName, Password, Mobile, Captcha, Submit } = Login;
9

Andreas Cederström's avatar
Andreas Cederström committed
10 11 12
@connect(({ login, loading }) => ({
  login,
  submitting: loading.effects['login/login'],
13
}))
ddcat1115's avatar
ddcat1115 committed
14
export default class LoginPage extends Component {
15 16
  state = {
    type: 'account',
ddcat1115's avatar
ddcat1115 committed
17
    autoLogin: true,
jim's avatar
jim committed
18
  };
19

jim's avatar
jim committed
20
  onTabChange = type => {
afc163's avatar
afc163 committed
21
    this.setState({ type });
jim's avatar
jim committed
22
  };
23

ddcat1115's avatar
ddcat1115 committed
24 25 26 27 28 29 30 31 32 33 34
  handleSubmit = (err, values) => {
    const { type } = this.state;
    if (!err) {
      this.props.dispatch({
        type: 'login/login',
        payload: {
          ...values,
          type,
        },
      });
    }
jim's avatar
jim committed
35
  };
36

jim's avatar
jim committed
37
  changeAutoLogin = e => {
ddcat1115's avatar
ddcat1115 committed
38 39 40
    this.setState({
      autoLogin: e.target.checked,
    });
jim's avatar
jim committed
41
  };
42

jim's avatar
jim committed
43 44 45
  renderMessage = content => {
    return <Alert style={{ marginBottom: 24 }} message={content} type="error" showIcon />;
  };
46 47

  render() {
Andreas Cederström's avatar
Andreas Cederström committed
48
    const { login, submitting } = this.props;
ddcat1115's avatar
ddcat1115 committed
49
    const { type } = this.state;
50 51
    return (
      <div className={styles.main}>
jim's avatar
jim committed
52
        <Login defaultActiveKey={type} onTabChange={this.onTabChange} onSubmit={this.handleSubmit}>
ddcat1115's avatar
ddcat1115 committed
53
          <Tab key="account" tab="账户密码登录">
jim's avatar
jim committed
54
            {login.status === 'error' &&
ddcat1115's avatar
ddcat1115 committed
55
              login.type === 'account' &&
afc163's avatar
afc163 committed
56
              !login.submitting &&
jim's avatar
jim committed
57
              this.renderMessage('账户或密码错误(admin/888888)')}
ddcat1115's avatar
ddcat1115 committed
58 59
            <UserName name="userName" placeholder="admin/user" />
            <Password name="password" placeholder="888888/123456" />
ddcat1115's avatar
ddcat1115 committed
60 61
          </Tab>
          <Tab key="mobile" tab="手机号登录">
jim's avatar
jim committed
62
            {login.status === 'error' &&
ddcat1115's avatar
ddcat1115 committed
63
              login.type === 'mobile' &&
afc163's avatar
afc163 committed
64
              !login.submitting &&
jim's avatar
jim committed
65
              this.renderMessage('验证码错误')}
ddcat1115's avatar
ddcat1115 committed
66 67 68 69
            <Mobile name="mobile" />
            <Captcha name="captcha" />
          </Tab>
          <div>
jim's avatar
jim committed
70 71 72 73 74 75
            <Checkbox checked={this.state.autoLogin} onChange={this.changeAutoLogin}>
              自动登录
            </Checkbox>
            <a style={{ float: 'right' }} href="">
              忘记密码
            </a>
ddcat1115's avatar
ddcat1115 committed
76
          </div>
Andreas Cederström's avatar
Andreas Cederström committed
77
          <Submit loading={submitting}>登录</Submit>
ddcat1115's avatar
ddcat1115 committed
78 79 80 81 82
          <div className={styles.other}>
            其他登录方式
            <Icon className={styles.icon} type="alipay-circle" />
            <Icon className={styles.icon} type="taobao-circle" />
            <Icon className={styles.icon} type="weibo-circle" />
jim's avatar
jim committed
83 84 85
            <Link className={styles.register} to="/user/register">
              注册账户
            </Link>
ddcat1115's avatar
ddcat1115 committed
86 87
          </div>
        </Login>
88 89 90 91
      </div>
    );
  }
}