king
2025-01-10 dfdcdcb3dbd0b711bc0b77bb00fd1d39af91bd0b
src/views/sso/index.jsx
@@ -1,13 +1,11 @@
import React, {Component} from 'react'
import { Spin } from 'antd'
import { connect } from 'react-redux'
import { Spin, notification } from 'antd'
import md5 from 'md5'
import moment from 'moment'
import Api from '@/api'
import Utils from '@/utils/utils.js' 
import { styles } from '@/store/options.js'
import { modifyMemberLevel } from '@/store/action'
import './index.scss'
class SSOLogin extends Component {
@@ -16,30 +14,51 @@
      let _param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param)))
      if (typeof(_param) === 'object') {
        _param.UserID && sessionStorage.setItem('UserID', _param.UserID)
        _param.LoginUID && sessionStorage.setItem('LoginUID', _param.LoginUID)
        _param.User_Name && sessionStorage.setItem('User_Name', _param.User_Name)
        _param.Full_Name && sessionStorage.setItem('Full_Name', _param.Full_Name)
        _param.debug && sessionStorage.setItem('debug', _param.debug)
        _param.dataM && sessionStorage.setItem('dataM', _param.dataM)
        _param.dataM && sessionStorage.setItem('localDataM', _param.dataM)
        _param.avatar && sessionStorage.setItem('avatar', _param.avatar)
        _param.role_id && sessionStorage.setItem('role_id', _param.role_id)
        _param.role_id && sessionStorage.setItem('localRole_id', _param.role_id)
        this.authLogin(_param.appid, _param.openid, _param.memberId, _param.key, _param.menuId || '')
      } else {
        this.props.history.replace('/login')
      }
      this.getMessage()
    } catch {
    } catch (e) {
      this.props.history.replace('/login')
    }
  }
  getMessage = () => {
  authLogin = (appid, openid, memberid, scanId, menuId) => {
    Api.getTouristMsg('mk', appid, openid, memberid, scanId).then(res => {
      if (res.status) {
        sessionStorage.setItem('UserID', res.UserID)
        sessionStorage.setItem('LoginUID', res.LoginUID)
        sessionStorage.setItem('User_Name', res.UserName)
        sessionStorage.setItem('Full_Name', res.FullName)
        sessionStorage.setItem('avatar', res.icon || '')
        sessionStorage.setItem('dataM', res.dataM ? 'true' : '')
        sessionStorage.setItem('debug', res.debug || '')
        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 || '')
        this.getMessage(menuId)
      } else {
        notification.warning({
          top: 92,
          message: res.message,
          duration: 5
        })
        this.props.history.replace('/login')
      }
    })
  }
  getMessage = (menuId) => {
    let _param = {
      func: 's_Get_style',
      TypeCharOne: 'PC',
      LText: `select '${window.GLOB.appkey}'`,
    }
    if (window.GLOB.style_appkey) {
      _param.style_appkey = window.GLOB.style_appkey
    }
    _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -47,7 +66,10 @@
    Api.getSystemConfig(_param).then(res => {
      if (res.status) {
        let _url = window.location.href.split('#')[0] + 'system'
        if (!['shutter', 'linkage_navigation', 'linkage', 'menu_board', 'menu_board_navigation'].includes(res.menu_type)) {
          res.menu_type = 'shutter'
        }
        let systemMsg = {
          favicon: res.titlelogo || '',
          platTitle: res.titleName || '',
@@ -59,54 +81,57 @@
          mainlogo: res.indexlogo || '',
          doclogo: res.doclogo || '',
          style: res.CSS || '',
          webSite: res.WebSite || ''
          showline: res.split_line_show || 'true',
          webSite: res.WebSite || '',
          navBar: res.menu_type,
          app_version: res.app_version,
          Member_Level: 0,
          appname: res.appname || ''
        }
        if ([10, 20, 30, 40, 50, 60, 70, 80, 90, 100].includes(res.member_level)) {
          systemMsg.Member_Level = md5('mksoft' + window.GLOB.appkey + res.member_level)
          if (!window.GLOB.memberLevel) {
            Object.defineProperty(window.GLOB, 'memberLevel', {
              writable: false,
              value: res.member_level
            })
          }
        }
        let level = res.pwd_level || ''
        if (level && !['letter_num', 'char_num', 'char_num_90', 'char_num_90_sms'].includes(level)) {
          level = ''
        }
        localStorage.setItem(window.GLOB.sysSign + 'pwdlevel', level)
        res.index_background_color && sessionStorage.setItem('home_background', res.index_background_color)
        let seconds = 0
        if (res.sys_datetime) {
          seconds = Math.floor((new Date(res.sys_datetime).getTime() - new Date().getTime()) / 1000)
        }
        sessionStorage.setItem('sys_time_shim', isNaN(seconds) ? 0 : seconds)
        // url标题
        document.title = systemMsg.platTitle
        try {
          localStorage.setItem(_url, window.btoa(window.encodeURIComponent(JSON.stringify(systemMsg))))
        } catch {
          localStorage.removeItem(_url)
        }
        let _loginurl = window.location.href.split('#')[0] + 'loginways'
        let login_ways = []
        let login_types = []
        if (res.login_ways && res.login_ways.length > 0) {
          res.login_ways.forEach(item => {
            // 短信验证码登录,必须设置短信Id
            if (item.way_no === 'sms_vcode' && !item.sms_id) return
            if (login_types.includes(item.way_no)) return
            login_types.push(item.way_no)
            login_ways.push({
              label: item.way_name,
              type: item.way_no,
              smsId: item.sms_id
            })
          })
        } else {
          login_ways.push({
            label: '账号密码登录',
            type: 'uname_pwd',
            smsId: ''
          })
        }
        try {
          localStorage.setItem(_loginurl, window.btoa(window.encodeURIComponent(JSON.stringify(login_ways))))
        } catch {
          localStorage.removeItem(_loginurl)
          localStorage.setItem(window.GLOB.sysSign + 'system', window.btoa(window.encodeURIComponent(JSON.stringify(systemMsg))))
        } catch (e) {
          localStorage.removeItem(window.GLOB.sysSign + 'system')
        }
        window.GLOB.mainlogo = systemMsg.mainlogo
        window.GLOB.style = systemMsg.style
        window.GLOB.navBar = systemMsg.navBar
        window.GLOB.appVersion = systemMsg.app_version
        sessionStorage.setItem('appname', res.appname || '')
    
        if (window.GLOB.style && styles[window.GLOB.style]) {
          document.body.className = styles[window.GLOB.style]
          document.body.className = styles[window.GLOB.style] + ' ' + (res.split_line_show === 'false' ? 'hidden-split-line' : '')
        }
        if (res.titlelogo && window.GLOB.favicon !== res.titlelogo) {
@@ -117,14 +142,17 @@
          document.getElementsByTagName('head')[0].appendChild(link)
        }
        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)
        if (menuId) {
          sessionStorage.setItem('ThirdMenu', menuId)
        }
        this.props.history.replace('/main')
      } else {
        notification.warning({
          top: 92,
          message: res.message,
          duration: 5
        })
        this.props.history.replace('/login')
      }
    }, () => {
@@ -141,14 +169,4 @@
  }
}
const mapStateToProps = () => {
  return {}
}
const mapDispatchToProps = (dispatch) => {
  return {
    modifyMemberLevel: (memberLevel) => dispatch(modifyMemberLevel(memberLevel))
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(SSOLogin)
export default SSOLogin