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/views/login/index.jsx |  182 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 154 insertions(+), 28 deletions(-)

diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx
index 8238418..c1de41c 100644
--- a/src/views/login/index.jsx
+++ b/src/views/login/index.jsx
@@ -1,6 +1,5 @@
 import React, { Component } from 'react'
 import { message, Modal, notification } from 'antd'
-import { connect } from 'react-redux'
 import md5 from 'md5'
 import moment from 'moment'
 
@@ -11,19 +10,15 @@
 import enUS from '@/locales/en-US/login.js'
 import asyncComponent from '@/utils/asyncComponent'
 import asyncLoadComponent from '@/utils/asyncLoadComponent'
-import { modifyMemberLevel } from '@/store/action'
 import './index.scss'
 
 const LoginForm = asyncLoadComponent(() => import('./loginform'))
 const Resetpwd = asyncLoadComponent(() => import('@/components/header/resetpwd'))
 const LoginCloudForm = asyncComponent(() => import('./logincloudform'))
+const LoginCodeForm = asyncComponent(() => import('./logincodeform'))
 const iszhCN = sessionStorage.getItem('lang') !== 'en-US'
 
 const _href = window.location.href.split('#')[0]
-if (localStorage.getItem(_href + 'paramsmain')) {
-  sessionStorage.setItem('history', localStorage.getItem(_href + 'paramsmain'))
-  localStorage.removeItem(_href + 'paramsmain')
-}
 
 class Login extends Component {
   state = {
@@ -95,6 +90,20 @@
     // 鐧诲綍鎻愪氦
     let res = await Api.getusermsg(param.username, param.password, false, ipAddress, city)
     if (res.status) {
+      if (res.check_mob) {
+        let loginWays = this.state.loginWays.filter(item => item.type === 'sms_vcode')
+
+        if (loginWays.length > 0) {
+          this.setState({loginWays: null, isDisabled: false}, () => {
+            this.setState({loginWays: loginWays})
+          })
+          Modal.warning({
+            title: '涓虹‘璁ゆ槸鎮ㄦ湰浜烘搷浣滐紝璇蜂娇鐢ㄦ墜鏈虹煭淇¢獙璇佺爜杩涜韬唤璁よ瘉',
+            okText: '鐭ラ亾浜�'
+          })
+          return
+        }
+      }
       localStorage.setItem('UserID', res.UserID)
       localStorage.setItem('LoginUID', res.LoginUID)
       localStorage.setItem('User_Name', res.UserName)
@@ -106,6 +115,7 @@
       localStorage.setItem('role_id', res.role_id || '')
       localStorage.setItem('departmentcode', res.departmentcode || '')
       localStorage.setItem('organization', res.organization || '')
+      localStorage.setItem('mk_user_type', res.mk_user_type || '')
       localStorage.setItem('localRole_id', res.role_id || '')
 
       localStorage.setItem('lang', 'zh-CN')
@@ -119,6 +129,16 @@
         UserName: param.username,
         Password: param.password,
         BasePath: '/'
+      }
+      
+      // positecgroup
+      if (res.token) {
+        this.setState({
+          isDisabled: false,
+          verify: {...res, $password: param.password},
+          codeVisible: true
+        })
+        return
       }
 
       if (process.env.NODE_ENV === 'production') {
@@ -142,6 +162,7 @@
         sessionStorage.setItem('localDataM', res.dataM ? 'true' : '')
         sessionStorage.setItem('debug', res.debug || '')
         sessionStorage.setItem('role_id', res.role_id || '')
+        sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
         sessionStorage.setItem('localRole_id', res.role_id || '')
 
         let _history = sessionStorage.getItem('history')
@@ -197,7 +218,13 @@
       sessionStorage.setItem('role_id', res.role_id || '')
       sessionStorage.setItem('departmentcode', res.departmentcode || '')
       sessionStorage.setItem('organization', res.organization || '')
+      sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
       sessionStorage.setItem('localRole_id', res.role_id || '')
+      
+      if (res.paas_externalDatabase) {
+        sessionStorage.setItem('externalDatabase', res.paas_externalDatabase)
+        window.GLOB.externalDatabase = `[${res.paas_externalDatabase}]..`
+      }
 
       localStorage.setItem(_href + 'lang', param.lang || 'zh-CN')
       sessionStorage.setItem('lang', param.lang || 'zh-CN')
@@ -229,7 +256,7 @@
   }
 
   authLogin = (appid, openid, memberid, scanId) => {
-    Api.getTouristMsg(appid, openid, memberid, scanId).then(res => {
+    Api.getTouristMsg('mk', appid, openid, memberid, scanId).then(res => {
       if (res.status) {
         sessionStorage.setItem('UserID', res.UserID)
         sessionStorage.setItem('LoginUID', res.LoginUID)
@@ -242,7 +269,13 @@
         sessionStorage.setItem('role_id', res.role_id || '')
         sessionStorage.setItem('departmentcode', res.departmentcode || '')
         sessionStorage.setItem('organization', res.organization || '')
+        sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
         sessionStorage.setItem('localRole_id', res.role_id || '')
+
+        if (res.paas_externalDatabase) {
+          sessionStorage.setItem('externalDatabase', res.paas_externalDatabase)
+          window.GLOB.externalDatabase = `[${res.paas_externalDatabase}]..`
+        }
   
         sessionStorage.removeItem('visitorUserID')
         sessionStorage.removeItem('visitorLoginUID')
@@ -299,6 +332,14 @@
     //   if (!res || !res.ip) return
     //   sessionStorage.setItem('ipAddress', res.ip)
     // })
+    if (window.GLOB.filter) {
+      let view = document.getElementById('mk-login-view')
+      
+      if (view) {
+        view.style.filter = 'grayscale(100%)'
+      }
+    }
+
     if (sessionStorage.getItem('loginError')) {
       try {
         let res = JSON.parse(sessionStorage.getItem('loginError'))
@@ -322,10 +363,7 @@
 
     const _addressUrl = _href + 'queryAddress'
 
-    if (localStorage.getItem(_addressUrl) !== 'true') {
-      sessionStorage.setItem('city', '')
-      sessionStorage.setItem('ipAddress', '')
-    } else {
+    if (localStorage.getItem(_addressUrl) === 'true') {
       this.queryAddress()
     }
 
@@ -501,6 +539,21 @@
 
     Api.getTouristMsg().then(result => {
       if (result.status) {
+        if (result.website && process.env.NODE_ENV === 'production') {
+          let website = result.website.replace(/http(s)?:\/\/|\/$/ig, '').toLowerCase()
+          let current = window.GLOB.baseurl.replace(/http(s)?:\/\/|\/$/ig, '').toLowerCase()
+
+          if (website !== current) {
+            try {
+              window.history.replaceState(null, null, result.website.replace(/\/$/ig, '') + '/admin/index.html#/login')
+              window.location.reload()
+            } catch(e) {
+              window.location.href = result.website.replace(/\/$/ig, '') + '/admin/index.html#/login'
+            }
+            return
+          }
+        }
+        
         sessionStorage.setItem('visitorUserID', result.UserID || '')
         sessionStorage.setItem('visitorLoginUID', result.LoginUID || '')
 
@@ -528,6 +581,10 @@
             res.indexlogo = res.indexlogo ? res.indexlogo.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
             res.loginlogo = res.loginlogo ? res.loginlogo.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
 
+            if (!['shutter', 'linkage_navigation', 'linkage', 'menu_board', 'menu_board_navigation'].includes(res.menu_type)) {
+              res.menu_type = 'shutter'
+            }
+
             let _url = _href + 'system'
             let systemMsg = {
               favicon: res.titlelogo || '',
@@ -542,7 +599,7 @@
               style: res.CSS || '',
               showline: res.split_line_show || 'true',
               webSite: res.WebSite || '',
-              navBar: res.menu_type,
+              navBar: res.menu_type, // shutter 鐧惧彾绐椼�乴inkage_navigation 鑱斿姩鑿滃崟銆乴inkage 鑱斿姩鑿滃崟_鏃犲鑸爮銆乵enu_board 鑿滃崟闈㈡澘銆乵enu_board_navigation 鑿滃崟闈㈡澘_鏍囩椤�
               app_version: res.app_version
             }
 
@@ -630,8 +687,8 @@
             let memberLevel = res.member_level
 
             if (typeof(memberLevel) === 'number' && memberLevel > 10 && parseInt(memberLevel / 10) * 10 === memberLevel) {
-              sessionStorage.setItem('Member_Level', md5('mksoft' + moment().format('YYYYMM') + memberLevel))
-              this.props.modifyMemberLevel(memberLevel)
+              sessionStorage.setItem('Member_Level', md5('mksoft' + window.GLOB.appkey + new Date().getFullYear() + new Date().getMonth() + memberLevel))
+              window.GLOB.memberLevel = memberLevel
             }
 
             // positecgroup
@@ -687,8 +744,12 @@
   queryAddress = () => {
     window.callbackFunction = (res) => {
       if (res.result && res.result.ad_info) {
-        sessionStorage.setItem('city', res.result.ad_info.city)
-        sessionStorage.setItem('ipAddress', res.result.ip)
+        sessionStorage.setItem('nation', res.result.ad_info.nation || '')
+        sessionStorage.setItem('province', res.result.ad_info.province || '')
+        sessionStorage.setItem('city', res.result.ad_info.city || '')
+        sessionStorage.setItem('district', res.result.ad_info.district || '')
+        sessionStorage.setItem('address', res.result.ad_info.address || '')
+        sessionStorage.setItem('ipAddress', res.result.ip || '')
       }
     }
 
@@ -766,6 +827,66 @@
     })
   }
 
+  codeSubmit = () => {
+    const { verify } = this.state
+    this.codeRef.handleConfirm().then(res => {
+      this.setState({
+        codeLoading: true
+      })
+      Api.verifycode({...verify, code: res.code}).then(result => {
+        this.setState({
+          codeVisible: false,
+          codeLoading: false
+        })
+
+        if (result.verifyResult === 'success') {
+          let level = localStorage.getItem(_href + 'pwdlevel')
+          if (level) {
+            let visible = false
+            let tip = '瀵嗙爜寮哄害涓嶅锛岃淇敼瀵嗙爜锛�'
+            if (verify.$password.length < 8) {
+              visible = true
+            } else if (level === 'letter_num' && /^([^0-9]*|[^a-zA-Z]*)$/.test(verify.$password)) {
+              visible = true
+            } else if ((level === 'char_num' || level === 'char_num_90') && /^([^0-9]*|[^a-zA-Z]*|[^!@#$%^&*()_]*)$/.test(verify.$password)) {
+              visible = true
+            } else if (level === 'char_num_90' && verify.modifydate) {
+              let s = (new Date().getTime() - new Date(verify.modifydate).getTime()) / (1000 * 24 * 60 * 60)
+              if (!isNaN(s) && s > 90) {
+                visible = true
+                tip = '鎮ㄥ凡90澶╂湭淇敼瀵嗙爜锛岃鏇存崲瀵嗙爜鍚庝娇鐢紒'
+              }
+            }
+
+            if (visible) {
+              message.warning(tip)
+              this.setState({
+                isDisabled: false,
+                visible: true
+              })
+              return
+            }
+          }
+
+          let _history = sessionStorage.getItem('history')
+          if (_history) {
+            sessionStorage.removeItem('history')
+            // 鏌ョ湅鏄惁涓哄叾浠栭〉闈㈣烦杞紝璺緞瀛樺湪鏃讹紝璺冲洖鍘熼〉闈�
+            this.props.history.replace(_history)
+          } else {
+            this.props.history.replace('/main')
+          }
+        } else {
+          notification.warning({
+            top: 92,
+            message: '楠岃瘉鐮佹棤鏁堬紝璇烽噸鏂扮櫥褰曪紒',
+            duration: 5
+          })
+        }
+      })
+    }, () => {})
+  }
+
   resetPwdSubmit = () => {
     this.formRef.handleConfirm().then(res => {
       this.setState({
@@ -821,7 +942,7 @@
     const { lineColor, loginlogo, bgImage, copyRight, webSite, ICP, loginWays, touristLogin } = this.state
 
     return (
-      <div className="login-container">
+      <div className="login-container" id="mk-login-view">
         <div className="logo" style={lineColor ? {borderColor: lineColor} : {}}>
           {loginlogo ? <img src={loginlogo} alt=""/> : null}
         </div>
@@ -872,25 +993,30 @@
           cancelText={this.state.dict['login.cancel']}
           visible={this.state.visible}
           onOk={this.resetPwdSubmit}
+          maskClosable={false}
           confirmLoading={this.state.resetLoading}
           onCancel={() => this.setState({visible: false, resetLoading: false})}
           destroyOnClose
         >
           <Resetpwd wrappedComponentRef={(inst) => this.formRef = inst} resetPwdSubmit={this.resetPwdSubmit}/>
         </Modal>
+        {/* 浜屾楠岃瘉 */}
+        <Modal
+          title="浜屾楠岃瘉"
+          okText={this.state.dict['login.ok']}
+          cancelText={this.state.dict['login.cancel']}
+          visible={this.state.codeVisible}
+          onOk={this.codeSubmit}
+          maskClosable={false}
+          confirmLoading={this.state.codeLoading}
+          onCancel={() => this.setState({codeVisible: false, codeLoading: false})}
+          destroyOnClose
+        >
+          <LoginCodeForm verify={this.state.verify} wrappedComponentRef={(inst) => this.codeRef = inst} handleSubmit={this.codeSubmit}/>
+        </Modal>
       </div>
     )
   }
 }
 
-const mapStateToProps = () => {
-  return {}
-}
-
-const mapDispatchToProps = (dispatch) => {
-  return {
-    modifyMemberLevel: (memberLevel) => dispatch(modifyMemberLevel(memberLevel))
-  }
-}
-
-export default connect(mapStateToProps, mapDispatchToProps)(Login)
\ No newline at end of file
+export default Login
\ No newline at end of file

--
Gitblit v1.8.0