From 5046d0d13dc6a8563b8e54e31913bc44cfa1072f Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 26 四月 2022 19:23:18 +0800 Subject: [PATCH] 2022-04-26 --- src/views/login/loginform.jsx | 156 ++++++++++++---------------------------------------- 1 files changed, 36 insertions(+), 120 deletions(-) diff --git a/src/views/login/loginform.jsx b/src/views/login/loginform.jsx index 0da7d35..214054d 100644 --- a/src/views/login/loginform.jsx +++ b/src/views/login/loginform.jsx @@ -1,28 +1,25 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import { Form, Icon, Input, Button, Checkbox, Select, Modal, message } from 'antd' +import { is, fromJS } from 'immutable' +import { Form, Icon, Input, Button, Modal, message } from 'antd' +import { UserOutlined } from '@ant-design/icons' import md5 from 'md5' import moment from 'moment' import Api from '@/api' -import Utils from '@/utils/utils.js' import options from '@/store/options.js' -import asyncLoadComponent from '@/utils/asyncLoadComponent' import './index.scss' const { warning } = Modal let LoginVerCodeTimer = null -const QrCode = asyncLoadComponent(() => import('@/components/qrcode')) class LoginTabForm extends Component { static propTpyes = { isDisabled: PropTypes.bool, changelang: PropTypes.func, handleSubmit: PropTypes.func, - authLogin: PropTypes.func, dict: PropTypes.object, auth: PropTypes.bool, - authError: PropTypes.string, touristLogin: PropTypes.bool, lang: PropTypes.string, langList: PropTypes.array, @@ -32,19 +29,14 @@ state = { activeKey: 'uname_pwd', - scanId: '', username: '', password: '', remember: true, delay: null, loginWays: [], smsId: '', - verdisabled: false, - timeout: false + verdisabled: false } - - timer = null - splitTime = 0 UNSAFE_componentWillMount () { const { loginWays } = this.props @@ -52,6 +44,9 @@ let _url = window.location.href.split('#')[0] if (localStorage.getItem(_url + 'remember') === 'false') { + remember = false + } + if (!window.GLOB.keepKey) { remember = false } @@ -63,64 +58,36 @@ _loginWays.push(item) } else if (item.type === 'uname_pwd') { _loginWays.push(item) - } else if (item.type === 'app_scan') { - _loginWays.push(item) } }) - - let activeKey = _loginWays[0].type this.setState({ smsId: smsId, loginWays: _loginWays, - activeKey, - scanId: activeKey === 'app_scan' ? Utils.getuuid() : '', - timeout: false, + activeKey: _loginWays[0].type, remember }) - - if (activeKey === 'app_scan') { - this.splitTime = 0 - this.timer = setTimeout(() => { - this.checkResult() - }, 10000) - } } - checkResult = () => { - const { scanId } = this.state - - this.splitTime += 10000 - - let _param = { - func: 'webapi_get_binding_key', - scan_type: 'pc', - id: scanId, - UserName: '' - } - - _param.userid = sessionStorage.getItem('visitorUserID') - _param.LoginUID = sessionStorage.getItem('visitorLoginUID') - - if (this.splitTime >= 180000) { - this.setState({ - timeout: true + UNSAFE_componentWillReceiveProps (nextProps) { + if (!is(fromJS(this.props.loginWays), fromJS(nextProps.loginWays))) { + let smsId = '' + let _loginWays = [] + nextProps.loginWays.forEach(item => { + if (item.type === 'sms_vcode') { + smsId = item.smsId + _loginWays.push(item) + } else if (item.type === 'uname_pwd') { + _loginWays.push(item) + } }) - return - } - Api.getSystemConfig(_param).then(res => { - if (!res.status) { - message.warning(res.message) - return - } else if (res.thd_party_appid && res.thd_party_member_id && res.thd_party_openid) { - this.props.authLogin(res.thd_party_appid, res.thd_party_openid, res.thd_party_member_id, scanId) - } else { - this.timer = setTimeout(() => { - this.checkResult() - }, 10000) - } - }) + this.setState({ + smsId: smsId, + loginWays: _loginWays, + activeKey: _loginWays[0].type + }) + } } handleConfirm = () => { @@ -147,9 +114,9 @@ e.preventDefault() if (!this.props.auth) { warning({ - title: this.props.authError || this.props.dict['login.auth.tip'], - okText: this.props.dict['login.ok'], - cancelText: this.props.dict['login.cancel'], + title: this.props.dict['login.auth.tip'], + okText: this.props.dict['login.auth.ok'], + cancelText: this.props.dict['login.auth.cancel'], onOk() {}, onCancel() {} }) @@ -194,7 +161,7 @@ if (_user) { try { _user = JSON.parse(window.decodeURIComponent(window.atob(_user))) - } catch (e) { + } catch { console.warn('Parse Failure') _user = '' } @@ -219,29 +186,7 @@ } onChangeTab = (activeKey) => { - this.setState({activeKey, scanId: activeKey === 'app_scan' ? Utils.getuuid() : ''}) - - if (this.state.activeKey === 'app_scan') { - this.timer && clearTimeout(this.timer) - } - - if (activeKey === 'app_scan') { - this.splitTime = 0 - this.setState({timeout: false}) - this.timer = setTimeout(() => { - this.checkResult() - }, 10000) - } - } - - reCode = () => { - this.splitTime = 0 - - this.setState({timeout: false, scanId: Utils.getuuid()}) - - this.timer = setTimeout(() => { - this.checkResult() - }, 10000) + this.setState({activeKey}) } getvercode = () => { @@ -351,20 +296,15 @@ this.setState = () => { return } - this.timer && clearTimeout(this.timer) } render() { const { getFieldDecorator } = this.props.form - const { activeKey, verdisabled, delay, loginWays, remember, scanId, timeout } = this.state + const { activeKey, verdisabled, delay, loginWays } = this.state return ( - <Form className="login-form" id="login-form" onSubmit={this.handleSubmit}> - <div className={'login-way-wrap ' + (loginWays.length === 1 ? 'simple' : '')}> - {loginWays.map(item => ( - <div className={'login-way' + (activeKey === item.type ? ' active' : '')} onClick={() => this.onChangeTab(item.type)} key={item.type}>{item.label}</div> - ))} - </div> + <Form className={`login-form login-form-${loginWays.length}`} id="login-form" onSubmit={this.handleSubmit}> + <p className="title">{this.props.platName}</p> <div className="form-item-wrap"> {activeKey === 'uname_pwd' ? <Form.Item> {getFieldDecorator('username', { @@ -372,7 +312,7 @@ initialValue: this.state.username || '', })( <Input - prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }} />} + prefix={<UserOutlined style={{ color: 'rgba(0,0,0,.25)' }} />} placeholder={this.props.dict['login.username']} autoComplete="off" />, @@ -421,41 +361,17 @@ /> )} </Form.Item> : null} - {activeKey === 'uname_pwd' ? <Form.Item className="minline"> + {/* {activeKey === 'uname_pwd' ? <Form.Item className="minline"> {getFieldDecorator('remember', { valuePropName: 'checked', initialValue: remember, })(<Checkbox onChange={this.rememberChange}>{this.props.dict['login.remember']}</Checkbox>)} - </Form.Item> : null} - {activeKey !== 'app_scan' && this.props.langList && this.props.langList.length > 0 ? <Form.Item className="minline right"> - {getFieldDecorator('lang', { - initialValue: this.props.lang, - })( - <Select - onChange={(value) => {this.changelang(value)}} - getPopupContainer={() => document.getElementById('login-form')} - > - {this.props.langList.map((item, index) => { - return <Select.Option key={index} value={item.Lang}>{item.LangName}</Select.Option> - })} - </Select> - )} - </Form.Item> : null} + </Form.Item> : null} */} {['uname_pwd', 'sms_vcode'].includes(activeKey) ? <Form.Item className="btn-login"> <Button type="primary" htmlType="submit" className="login-form-button" disabled={this.props.isDisabled} loading={this.props.isDisabled}> {this.props.dict['login.submit']} </Button> </Form.Item> : null} - {activeKey === 'app_scan' ? <div className="form-scan-wrap"> - <div className="qr-wrap"> - {scanId ? <QrCode card={{qrWidth: 500, color: '#000000'}} value={`mkpcscan,${window.GLOB.appkey},${scanId}`}/> : null} - {timeout ? <div className="qrcode-out"> - <Icon onClick={this.reCode} type="redo" /> - 浜岀淮鐮佸凡澶辨晥銆� - </div> : null} - </div> - 璇蜂娇鐢ㄥ鎴风鎵竴鎵櫥褰� - </div> : null} {options.sysType === 'cloud' && options.cdomain.indexOf('mk9h') > -1 ? <Form.Item className="register-line"> <a href="http://minkesoft.com/#/signup" target="_blank" rel="noopener noreferrer" className="register">娉ㄥ唽</a> <a href="http://minkesoft.com/#/forgotPwd" target="_blank" rel="noopener noreferrer" className="forgot">蹇樿瀵嗙爜锛�</a> -- Gitblit v1.8.0