From cb9ade2afd2a367ad767bc605ab7086c695dd010 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 09 十二月 2022 15:53:32 +0800 Subject: [PATCH] 2022-12-09 --- src/pc/components/login/normal-login/index.jsx | 116 ++++++++++++++++++++++++++++++++------------------------- 1 files changed, 65 insertions(+), 51 deletions(-) diff --git a/src/pc/components/login/normal-login/index.jsx b/src/pc/components/login/normal-login/index.jsx index 5e04721..286b250 100644 --- a/src/pc/components/login/normal-login/index.jsx +++ b/src/pc/components/login/normal-login/index.jsx @@ -13,9 +13,10 @@ import './index.scss' const LoginForm = asyncComponent(() => import('./loginform')) +const SignForm = asyncComponent(() => import('./signform')) const NormalForm = asyncIconComponent(() => import('@/components/normalform')) -class PropCardEditComponent extends Component { +class LoginComponent extends Component { static propTpyes = { card: PropTypes.object, deletecomponent: PropTypes.func, @@ -24,7 +25,7 @@ state = { card: null, - back: false + active: 'login' } UNSAFE_componentWillMount () { @@ -35,19 +36,11 @@ let _card = { uuid: card.uuid, type: card.type, - tabId: card.tabId || '', - parentId: card.parentId || '', - dataName: card.dataName || '', width: card.width || 24, name: card.name, subtype: card.subtype, - wrap: { name: card.name, width: card.width || 24, loginWays: ['uname_pwd'], shortcut: 'remember' }, - style: { background: '#ffffff', width: '330px', borderRadius: '4px', marginLeft: '55vw'}, - loginWays: [ - {type: 'uname_pwd', label: '璐﹀彿鐧诲綍', shortcut: 'remember'}, - {type: 'sms_vcode', label: '鐭俊鐧诲綍'}, - {type: 'app_scan', label: '鎵爜鐧诲綍'}, - ] + wrap: { name: card.name, width: card.width || 24, classify: 'login', loginWays: ['uname_pwd'], shortcut: 'remember' }, + style: { background: '#ffffff', width: '330px', borderRadius: '4px', marginLeft: '55vw'} } if (ismob) { @@ -65,26 +58,24 @@ _card.wrap.name = card.name _card.style = config.style } - this.setState({ - card: _card - }) - this.props.updateConfig(_card) + + this.updateComponent(_card) } else { let _card = fromJS(card).toJS() - if (_card.loginWays.length === 2) { - _card.loginWays.push({type: 'app_scan', label: '鎵爜鐧诲綍'}) - } if (_card.wrap.link && _card.wrap.link === 'menu') { _card.wrap.linkmenu = _card.uuid } + _card.wrap.classify = _card.wrap.classify || 'login' + + let active = 'login' + if (_card.wrap.classify === 'signin') { + active = 'signin' + } this.setState({ + active, card: _card }) } - } - - componentDidMount () { - MKEmitter.addListener('submitStyle', this.getStyle) } shouldComponentUpdate (nextProps, nextState) { @@ -98,47 +89,50 @@ this.setState = () => { return } - MKEmitter.removeListener('submitStyle', this.getStyle) } /** * @description 鍗$墖琛屽灞備俊鎭洿鏂帮紙鏁版嵁婧愶紝鏍峰紡绛夛級 */ - updateComponent = (component) => { + updateComponent = (card) => { + card.width = card.wrap.width + card.name = card.wrap.name + + card.errors = [] + + if (!card.wrap.linkmenu) { + card.errors.push({ level: 0, detail: '鐧诲綍鍚庤烦杞彍鍗曟湭璁剧疆锛�'}) + } + this.setState({ - card: component + card: card }) - component.width = component.wrap.width - component.name = component.wrap.name - - this.props.updateConfig(component) + this.props.updateConfig(card) } changeStyle = () => { const { card } = this.state - MKEmitter.emit('changeStyle', [card.uuid], ['width', 'background', 'border', 'padding', 'margin'], card.style) + MKEmitter.emit('changeStyle', ['width', 'background', 'border', 'padding', 'margin', 'clear'], card.style, this.getStyle) } - getStyle = (comIds, style) => { - const { card } = this.state - - if (comIds.length !== 1 || comIds[0] !== card.uuid) return - - let _card = {...card, style} - - this.setState({ - card: _card - }) + getStyle = (style) => { + let _card = {...this.state.card, style} - this.props.updateConfig(_card) + this.updateComponent(_card) } clickComponent = (e) => { if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') { e.stopPropagation() - MKEmitter.emit('clickComponent', this.state.card) + MKEmitter.emit('clickComponent', this.state.card.uuid, null, (style) => { + let _card = {...this.state.card} + _card.style = {..._card.style, ...style} + + this.setState({ card: _card }) + this.props.updateConfig(_card) + }) } } @@ -153,21 +147,26 @@ card.wrap = res - if (res.shortcut) { - card.loginWays[0].shortcut = res.shortcut + let active = 'login' + if (res.classify === 'signin') { + active = 'signin' } + this.setState({ + active + }) this.updateComponent(card) } render() { - const { card } = this.state + const { card, active } = this.state let style = resetStyle(card.style) - if (card.wrap.maxWidth) { - style.maxWidth = card.wrap.maxWidth + + if (card.style.width) { let left = style.marginLeft && style.marginLeft !== '0px' ? style.marginLeft : 'auto' let right = style.marginRight && style.marginRight !== '0px' ? style.marginRight : 'auto' style.margin = (style.marginTop || 0) + ' ' + right + ' ' + (style.marginBottom || 0) + ' ' + left + style.maxWidth = `calc(100% - ${style.marginLeft || '0px'} - ${style.marginRight || '0px'})` delete style.marginLeft delete style.marginRight delete style.marginTop @@ -178,7 +177,7 @@ <div className="login-edit-box" style={style} onClick={this.clickComponent} id={card.uuid}> <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> - <NormalForm title="鐧诲綍璁剧疆" width={800} update={this.updateWrap} getForms={this.getWrapForms}> + <NormalForm title="娉ㄥ唽/鐧诲綍璁剧疆" width={800} update={this.updateWrap} getForms={this.getWrapForms}> <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/> </NormalForm> <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle}/> @@ -187,10 +186,25 @@ } trigger="hover"> <ToolOutlined /> </Popover> - <LoginForm loginWays={card.loginWays} wrap={card.wrap} /> + {card.wrap.loginWays && active === 'login' ? <LoginForm wrap={card.wrap} changeway={() => this.setState({active: 'signin'})}/> : null} + {card.wrap.signWays && active === 'signin' ? <SignForm wrap={card.wrap} changeway={() => this.setState({active: 'login'})}/> : null} + <div className="component-name"> + <div className="center"> + <div className="title">{card.name}</div> + <div className="content"> + {card.errors && card.errors.map((err, index) => { + if (err.level === 0) { + return <span key={index} className="error">{err.detail}</span> + } else { + return <span key={index} className="waring">{err.detail}锛�</span> + } + })} + </div> + </div> + </div> </div> ) } } -export default PropCardEditComponent \ No newline at end of file +export default LoginComponent \ No newline at end of file -- Gitblit v1.8.0