From b09b821ef36fd1ea979e9a5daa98e95732ac81d5 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 16 七月 2025 18:16:00 +0800 Subject: [PATCH] 2025-07-16 --- src/pc/components/login/normal-login/loginform.jsx | 148 +++++++++++++++++++++++++++++++++++++------------ 1 files changed, 112 insertions(+), 36 deletions(-) diff --git a/src/pc/components/login/normal-login/loginform.jsx b/src/pc/components/login/normal-login/loginform.jsx index ddfe4a1..8790dd8 100644 --- a/src/pc/components/login/normal-login/loginform.jsx +++ b/src/pc/components/login/normal-login/loginform.jsx @@ -1,54 +1,103 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Form, Icon, Input, Button, Checkbox } from 'antd' +import { Form, Input, Button, Checkbox, notification } from 'antd' +import { QrcodeOutlined, UserOutlined, LockOutlined } from '@ant-design/icons' +import asyncElementComponent from '@/utils/asyncComponent' import MKEmitter from '@/utils/events.js' import './index.scss' +const QrCode = asyncElementComponent(() => import('@/components/qrcode')) + class LoginTabForm extends Component { static propTpyes = { - dict: PropTypes.object, - menuId: PropTypes.string, - loginWays: PropTypes.array, - wrap: PropTypes.array, + wrap: PropTypes.object, + changeway: PropTypes.func } state = { activeWay: null, loginWays: [], + scanWay: null } UNSAFE_componentWillMount () { - const { loginWays, wrap } = this.props + const { wrap } = this.props - let _loginWays = [] - loginWays.forEach(item => { - if (!wrap.loginWays || wrap.loginWays.includes(item.type)) { - _loginWays.push(item) + let scanWay = null + + let loginWays = [] + wrap.loginWays.forEach(way => { + if (way === 'sms_vcode') { + loginWays.push({ + type: 'sms_vcode', + label: '鐭俊鐧诲綍', + tempId: wrap.tempId, + sort: 2 + }) + } else if (way === 'uname_pwd') { + loginWays.push({ + type: 'uname_pwd', + label: '璐﹀彿鐧诲綍', + shortcut: wrap.shortcut, + sort: 1 + }) + } else if (way === 'app_scan') { + scanWay = { + type: 'app_scan', + label: '鎵爜鐧诲綍', + sort: 3 + } + loginWays.push(scanWay) } }) + loginWays.sort((a, b) => a.sort - b.sort) + this.setState({ - loginWays: _loginWays, - activeWay: _loginWays[0], + loginWays: loginWays, + activeWay: loginWays[0], + scanWay }) } UNSAFE_componentWillReceiveProps (nextProps) { - const { loginWays, wrap } = this.props + const { wrap } = this.props if (!is(fromJS(wrap), fromJS(nextProps.wrap))) { - let _loginWays = [] - loginWays.forEach(item => { - if (!nextProps.wrap.loginWays || nextProps.wrap.loginWays.includes(item.type)) { - _loginWays.push(item) + let scanWay = null + let loginWays = [] + nextProps.wrap.loginWays.forEach(way => { + if (way === 'sms_vcode') { + loginWays.push({ + type: 'sms_vcode', + label: '鐭俊鐧诲綍', + tempId: wrap.tempId, + sort: 2 + }) + } else if (way === 'uname_pwd') { + loginWays.push({ + type: 'uname_pwd', + label: '璐﹀彿鐧诲綍', + shortcut: wrap.shortcut, + sort: 1 + }) + } else if (way === 'app_scan') { + scanWay = { + type: 'app_scan', + label: '鎵爜鐧诲綍', + sort: 3 + } + loginWays.push(scanWay) } }) + loginWays.sort((a, b) => a.sort - b.sort) this.setState({ - loginWays: _loginWays, - activeWay: _loginWays[0], + loginWays: loginWays, + activeWay: loginWays[0], + scanWay }) } } @@ -58,11 +107,19 @@ } changeMenu = () => { - const { wrap, menuId } = this.props + const { wrap } = this.props + + if (!wrap.linkmenu) { + notification.warning({ + top: 92, + message: '璇疯缃叧鑱旇彍鍗曪紒', + duration: 5 + }) + return + } MKEmitter.emit('changeEditMenu', { - fixed: false, - MenuID: wrap.link === 'linkmenu' ? wrap.linkmenu : menuId, + MenuID: wrap.linkmenu, copyMenuId: '', MenuNo: '', MenuName: '' @@ -79,31 +136,37 @@ } render() { - const { activeWay, loginWays } = this.state + const { wrap } = this.props + const { activeWay, loginWays, scanWay } = this.state + + let style = {} + if (wrap.borderRadius) { + style.borderRadius = wrap.borderRadius + } return ( <Form className="login-edit-form"> - <div className={'login-way-wrap ' + (loginWays.length === 1 ? 'simple' : '')}> - {loginWays.map(item => ( - <div className={'login-way' + (activeWay.type === item.type ? ' active' : '')} onClick={() => this.onChangeTab(item)} key={item.type}>{item.label}</div> - ))} - </div> - {activeWay.type === 'uname_pwd' ? <div className="form-item-wrap"> + {wrap.topTip !== 'hidden' ? <div className="login-way-title">{activeWay.label}</div> : null} + {scanWay && activeWay.type !== 'app_scan' ? <div className="scan-icon" onClick={() => this.onChangeTab(scanWay)}><QrcodeOutlined /></div> : null} + {activeWay.type === 'uname_pwd' ? <div className={'form-item-wrap ' + (activeWay.shortcut === 'none' ? 'no-short' : '')}> <Form.Item> <Input - prefix={<Icon type="user" style={{ color: 'rgba(0,0,0,.25)' }} />} - placeholder="鐢ㄦ埛鍚�" + prefix={<UserOutlined style={{ color: 'rgba(0,0,0,.25)' }} />} + placeholder="鐢ㄦ埛鍚�/鎵嬫満鍙�/閭" autoComplete="off" /> </Form.Item> <Form.Item> - <Input.Password placeholder="瀵嗙爜" prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />} /> + <Input.Password placeholder="瀵嗙爜" visibilityToggle={wrap.vispwd !== 'false'} prefix={<LockOutlined style={{ color: 'rgba(0,0,0,.25)' }} />} /> </Form.Item> - <Form.Item className="minline"> + {!activeWay.shortcut || activeWay.shortcut === 'remember' ? <Form.Item className="minline"> <Checkbox>璁颁綇瀵嗙爜</Checkbox> - </Form.Item> + </Form.Item> : null} + {activeWay.shortcut === 'autologon' ? <Form.Item className="minline"> + <Checkbox>鑷姩鐧诲綍</Checkbox> + </Form.Item> : null} <Form.Item className="btn-login"> - <Button type="primary" onDoubleClick={() => this.changeMenu()} className="login-form-button"> + <Button type="primary" style={style} onDoubleClick={() => this.changeMenu()} className="login-form-button"> 鐧诲綍 </Button> </Form.Item> @@ -127,11 +190,24 @@ /> </Form.Item> <Form.Item className="btn-login"> - <Button type="primary" onDoubleClick={() => this.changeMenu()} className="login-form-button"> + <Button type="primary" style={style} onDoubleClick={() => this.changeMenu()} className="login-form-button"> 鐧诲綍 </Button> </Form.Item> </div> : null} + {activeWay.type === 'app_scan' ? <div className="form-scan-wrap"> + <div className="qr-wrap"> + <QrCode card={{qrWidth: 500, color: '#000000'}} value={'minkesoft'}/> + </div> + 璇蜂娇鐢ㄥ鎴风鎵竴鎵櫥褰� + </div> : null} + {wrap.classify !== 'login' ? <span className="mk-jump-way" onClick={() => this.props.changeway()}>娌℃湁璐﹀彿锛屽幓娉ㄥ唽锛�</span> : null} + <div className={'login-ways ' + (activeWay.type === 'app_scan' ? 'center' : '')}> + {loginWays.map(item => { + if (item.type === 'app_scan' || activeWay.type === item.type) return null + return (<span key={item.type} onClick={() => this.onChangeTab(item)}>{item.label}</span>) + })} + </div> </Form> ) } -- Gitblit v1.8.0