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