import React from 'react'; import { Form, Input, Button, Icon, Checkbox, Alert } from 'antd'; import { WrappedFormUtils } from 'antd/lib/form/Form'; import './Login.less'; import { connect } from '../../util/inject'; import loginModel, { LoginState } from '../../commonModels/login'; import BasicComponent from '../../components/BasicComponent'; import { createGetClassName, noop } from '../../util/util'; const getClassName = createGetClassName('login'); const FormItem = Form.Item; interface RequestParameterKeyName { username: string; password: string; } export interface LoginOwnProps { autoComplete?: string; onForgetPassword?: () => void; noRemember?: boolean; noForgetPassword?: boolean; customForgetPassword?: () => React.ReactNode; requestParameterKeyName?: RequestParameterKeyName; logo?: () => React.ReactNode; } interface LoginProps extends LoginOwnProps { form: WrappedFormUtils; login: LoginState; app: any; } class Login extends BasicComponent { static defaultProps = { autoComplete: 'on', onForgetPassword: noop, noRemember: false, noForgetPassword: false, requestParameterKeyName: { username: 'username', password: 'password', }, }; interval: any; constructor(props) { super(props); } componentWillReceiveProps(nextProps) { } handleSubmit = (e) => { e.preventDefault(); this.props.form.validateFields({ force: true }, (err, values) => { if (!!err) { return; } this.props.dispatch(loginModel.actions.api.login({ [this.props.requestParameterKeyName.username]: values.userName, [this.props.requestParameterKeyName.password]: values.password, })); }, ); } renderMessage = (message) => { return ( ); } render() { const { form } = this.props; const { getFieldDecorator } = form; return (
{this.props.logo &&
{this.props.logo()}
} {this.props.app.appName}
{getFieldDecorator('userName', { rules: [{ required: true, message: '请输入账户名!', }], })( } placeholder="请输入账户名" autoComplete={this.props.autoComplete} />, )} {getFieldDecorator('password', { rules: [{ required: true, message: '请输入密码!', }], })( } type="password" placeholder="请输入密码" autoComplete={this.props.autoComplete} />, )} {!this.props.noRemember && getFieldDecorator('remember', { valuePropName: 'checked', initialValue: true, })( 自动登录, )}
{this.props.customForgetPassword && this.props.customForgetPassword()} {!this.props.customForgetPassword && !this.props.noForgetPassword && ( 忘记密码 )}
); } } const WrapperLogin = Form.create()(Login); const ExportLogin = connect({ 'login': 'login', })(WrapperLogin); export default ExportLogin; export function injectLogin(passProps: LoginOwnProps) { return class extends React.Component { render() { return ( ); } }; }