king
2023-06-12 07c005cf28acf74e3afde82122e4c53e1000d70c
src/components/header/loginform.jsx
@@ -1,6 +1,8 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { Form, Icon, Input, Checkbox } from 'antd'
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'
@@ -14,7 +16,9 @@
    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
    remember: false,
    username: '',
    password: ''
    password: '',
    oripassword: '',
    delay: +sessionStorage.getItem('mkDelay')
  }
  UNSAFE_componentWillMount () {
@@ -35,18 +39,29 @@
      localStorage.removeItem(_url)
    }
    this.setState({
      remember: _user ? true : false,
      username: _user ? _user.username : '',
      password: _user ? _user.password : ''
    })
    if (_user) {
      this.setState({
        remember: true,
        username: _user.username,
        password: '*********',
        oripassword: _user.password
      })
    }
  }
  handleConfirm = () => {
    const { oripassword } = this.state
    // 表单提交时检查输入值是否正确
    return new Promise((resolve, reject) => {
      this.props.form.validateFieldsAndScroll((err, values) => {
        if (!err) {
          if (oripassword && values.password === '*********') {
            values.password = oripassword
          }
          values.username = values.username.replace(/\t*|\v*|\s*/g, '')
          values.password = values.password.replace(/\t*|\v*|\s*/g, '')
          resolve(values)
        } else {
          reject(err)
@@ -85,24 +100,27 @@
  render() {
    const { getFieldDecorator } = this.props.form
    const { remember, username, password } = this.state
    const { remember, username, password, delay } = this.state
    return (
      <Form style={{margin: '0px 10px'}}>
        <Form.Item>
        {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'] }],
            initialValue: username,
          })(
            <Input
              prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }} />}
              prefix={<UserOutlined style={{ color: 'rgba(0,0,0,.25)' }}/>}
              placeholder={this.state.dict['login.username']}
              autoComplete="off"
              onPressEnter={(e) => {this.handleSubmit(e, 'password')}}
            />
          )}
        </Form.Item>
        <Form.Item style={{marginBottom: '15px'}}>
        <Form.Item style={{marginBottom: '0px', height: '55px'}}>
          {getFieldDecorator('password', {
            initialValue: password,
            rules: [
@@ -111,15 +129,15 @@
                message: this.state.dict['login.password.empty'],
              }
            ]
          })(<Input.Password onPressEnter={(e) => {this.handleSubmit(e, 'username')}} placeholder={this.state.dict['login.password']} prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />} />)}
          })(<Input.Password onPressEnter={(e) => {this.handleSubmit(e, 'username')}} placeholder={this.state.dict['login.password']} prefix={<LockOutlined style={{ color: 'rgba(0,0,0,.25)' }} />} />)}
        </Form.Item>
        <Form.Item style={{marginBottom: '10px'}}>
        {window.GLOB.keepKey ? <Form.Item style={{marginBottom: '10px'}}>
          {getFieldDecorator('remember', {
            valuePropName: 'checked',
            initialValue: remember,
          })(
          <Checkbox onChange={this.rememberChange}>记住密码</Checkbox>)}
        </Form.Item>
        </Form.Item> : <div style={{height: '20px'}}></div>}
      </Form>
    )
  }