| | |
| | | import { Form, Input, Checkbox } from 'antd' |
| | | import { UserOutlined, LockOutlined } from '@ant-design/icons' |
| | | |
| | | import zhCN from '@/locales/zh-CN/login.js' |
| | | import enUS from '@/locales/en-US/login.js' |
| | | import './index.scss' |
| | | |
| | | class HeaderLoginForm extends Component { |
| | |
| | | } |
| | | |
| | | state = { |
| | | dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, |
| | | remember: false, |
| | | lock: false, |
| | | username: '', |
| | | password: '' |
| | | password: '', |
| | | delay: +sessionStorage.getItem('mkDelay') |
| | | } |
| | | |
| | | UNSAFE_componentWillMount () { |
| | | let _url = window.location.href.split('#')[0] + 'cloud' |
| | | let _user = localStorage.getItem(_url) |
| | | let _user = localStorage.getItem(window.GLOB.sysSign + 'cloud') |
| | | |
| | | if (_user) { |
| | | try { |
| | |
| | | |
| | | if (_user && new Date().getTime() - _user.time > 1000 * 7 * 24 * 60 * 60) { |
| | | _user = '' |
| | | localStorage.removeItem(_url) |
| | | localStorage.removeItem(window.GLOB.sysSign + 'cloud') |
| | | } |
| | | |
| | | this.setState({ |
| | | remember: _user ? true : false, |
| | | username: _user ? _user.username : '', |
| | | password: _user ? _user.password : '' |
| | | }) |
| | | if (_user) { |
| | | this.setState({ |
| | | remember: true, |
| | | username: _user.username, |
| | | password: _user.password, |
| | | lock: true |
| | | }) |
| | | } |
| | | } |
| | | |
| | | handleConfirm = () => { |
| | |
| | | return new Promise((resolve, reject) => { |
| | | this.props.form.validateFieldsAndScroll((err, values) => { |
| | | if (!err) { |
| | | values.username = values.username.replace(/\t+|\v+|\s+/g, '') |
| | | values.password = values.password.replace(/\t+|\v+|\s+/g, '') |
| | | |
| | | resolve(values) |
| | | } else { |
| | | reject(err) |
| | |
| | | |
| | | rememberChange = (e) => { |
| | | let val = e.target.checked |
| | | let _url = window.location.href.split('#')[0] + 'cloud' |
| | | |
| | | if (!val) { |
| | | localStorage.removeItem(_url) |
| | | localStorage.removeItem(window.GLOB.sysSign + 'cloud') |
| | | } |
| | | } |
| | | |
| | | unLock = (e) => { |
| | | if (e.target.value) return |
| | | |
| | | this.setState({ lock: false }) |
| | | } |
| | | |
| | | componentDidMount () { |
| | | const input = document.getElementById('username') |
| | | input && input.focus() |
| | | const { username, password } = this.state |
| | | |
| | | if (username && !password) { |
| | | const input = document.getElementById('password') |
| | | input && input.focus() |
| | | } else { |
| | | const input = document.getElementById('username') |
| | | input && input.focus() |
| | | } |
| | | } |
| | | |
| | | render() { |
| | | const { getFieldDecorator } = this.props.form |
| | | const { remember, username, password } = this.state |
| | | const { remember, username, password, delay, lock } = this.state |
| | | |
| | | return ( |
| | | <Form style={{margin: '0px 10px'}}> |
| | | {delay > 1000 ? <Form.Item style={{marginBottom: '0px', marginTop: '-10px'}}> |
| | | 升级到<a target="_blank" rel="noopener noreferrer" href="https://cloud.mk9h.cn/admin/index.html">企业版</a>,获得更高效的开发体验。 |
| | | </Form.Item> : null} |
| | | <Form.Item style={{marginBottom: '0px', height: '60px'}}> |
| | | {getFieldDecorator('username', { |
| | | rules: [{ required: true, message: this.state.dict['login.username.empty'] }], |
| | | rules: [{ required: true, message: '请输入用户名' }], |
| | | initialValue: username, |
| | | })( |
| | | <Input |
| | | prefix={<UserOutlined style={{ color: 'rgba(0,0,0,.25)' }}/>} |
| | | placeholder={this.state.dict['login.username']} |
| | | placeholder="用户名" |
| | | autoComplete="off" |
| | | onPressEnter={(e) => {this.handleSubmit(e, 'password')}} |
| | | /> |
| | |
| | | rules: [ |
| | | { |
| | | required: true, |
| | | message: this.state.dict['login.password.empty'], |
| | | message: '请输入密码', |
| | | } |
| | | ] |
| | | })(<Input.Password onPressEnter={(e) => {this.handleSubmit(e, 'username')}} placeholder={this.state.dict['login.password']} prefix={<LockOutlined style={{ color: 'rgba(0,0,0,.25)' }} />} />)} |
| | | })(<Input.Password onPressEnter={(e) => {this.handleSubmit(e, 'username')}} placeholder="密码" visibilityToggle={!lock} onChange={this.unLock} prefix={<LockOutlined style={{ color: 'rgba(0,0,0,.25)' }} />} />)} |
| | | </Form.Item> |
| | | {window.GLOB.keepKey ? <Form.Item style={{marginBottom: '10px'}}> |
| | | {getFieldDecorator('remember', { |