king
2023-06-30 0519dcda8b6fb2914987f8d4d58e1d14bcf98dc3
src/views/login/index.jsx
@@ -1,27 +1,24 @@
import React, { Component } from 'react'
import { message, Modal } from 'antd'
import { connect } from 'react-redux'
import md5 from 'md5'
import moment from 'moment'
import Api from '@/api'
import Utils from '@/utils/utils.js' 
import MKEmitter from '@/utils/events.js'
import options, { styles } from '@/store/options.js'
import zhCN from '@/locales/zh-CN/login.js'
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 LoginCloudForm = asyncLoadComponent(() => import('./logincloudform'))
const Resetpwd = asyncLoadComponent(() => import('@/components/resetPassword'))
const LoginCloudForm = asyncComponent(() => import('./logincloudform'))
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 = {
@@ -41,7 +38,7 @@
    syncApp: false,
    loginWays: null,
    touristLogin: false,
    syncing: false
    syncing: false,
  }
  changelang (item) {
@@ -70,49 +67,92 @@
   * @param {Object} param 用户名密码等信息
   */
  async loginsubmit (param) {
    if (options.sysType === 'local' && !window.GLOB.mainSystemApi) { // 业务系统必须设置单点地址
      Modal.warning({
        title: '未设置单点服务器地址,请联系管理员!'
      })
      return
    }
    let city = sessionStorage.getItem('city') || ''
    let ipAddress = sessionStorage.getItem('ipAddress') || ''
    // 登录提交
    let res = await Api.getusermsg(param.username, param.password, false, ipAddress, city)
    let res = await Api.getusermsg(param.username, param.password, false)
    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
        }
      }
      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('localDataM', res.dataM ? 'true' : '')
      sessionStorage.setItem('debug', res.debug || '')
      sessionStorage.setItem('role_id', res.role_id || '')
      sessionStorage.setItem('localRole_id', res.role_id || '')
      let _url = window.location.href.split('#')[0]
      sessionStorage.setItem('departmentcode', res.departmentcode || '')
      sessionStorage.setItem('organization', res.organization || '')
      sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
      localStorage.setItem(_url + 'lang', param.lang || 'zh-CN')
      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')
      sessionStorage.removeItem('visitorUserID')
      sessionStorage.removeItem('visitorLoginUID')
      
      if (param.remember) { // 记住密码时账号密码存入localStorage
        localStorage.setItem(_url, window.btoa(window.encodeURIComponent(JSON.stringify({username: param.username, password: param.password}))))
        localStorage.setItem(_href, window.btoa(window.encodeURIComponent(JSON.stringify({username: param.username, password: param.password}))))
      } else {
        localStorage.removeItem(_url)
        localStorage.removeItem(_href)
      }
      let _history = sessionStorage.getItem('history')
      if (_history) {
        sessionStorage.removeItem('history')
        // 查看是否为其他页面跳转,路径存在时,跳回原页面
        this.props.history.replace(_history)
      let level = localStorage.getItem(_href + 'pwdlevel')
      if (level && process.env.NODE_ENV === 'production') {
        let visible = false
        let tip = '密码强度不够,请修改密码!'
        if (param.password.length < 8) {
          visible = true
        } else if (level === 'letter_num' && /^([^0-9]*|[^a-zA-Z]*)$/.test(param.password)) {
          visible = true
        } else if ((level === 'char_num' || level === 'char_num_90' || level === 'char_num_90_sms') && /^([^0-9]*|[^a-zA-Z]*|[^!@#$%^&*()_]*)$/.test(param.password)) {
          visible = true
        } else if ((level === 'char_num_90' || level === 'char_num_90_sms') && res.modifydate) {
          let s = (new Date().getTime() - new Date(res.modifydate).getTime()) / (1000 * 24 * 60 * 60)
          if (!isNaN(s) && s > 90) {
            visible = true
            tip = '您已90天未修改密码,请更换密码后使用!'
          }
        }
        if (visible) {
          message.warning(tip)
          this.setState({
            isDisabled: false
          })
          MKEmitter.emit('resetpassword', () => {
            const input = document.getElementById('password')
            if (input) {
              input.select()
            }
          })
          return
        }
      }
      let iframe = sessionStorage.getItem('iframe')
      if (iframe) {
        sessionStorage.removeItem('iframe')
        this.props.history.replace(iframe.replace(/@loginuid@/, res.LoginUID))
      } else {
        this.props.history.replace('/main')
      }
@@ -143,18 +183,8 @@
  }
  async phoneloginsubmit (param) {
    if (options.sysType === 'local' && !window.GLOB.mainSystemApi) { // 业务系统必须设置单点地址
      Modal.warning({
        title: '未设置单点服务器地址,请联系管理员!'
      })
      return
    }
    let city = sessionStorage.getItem('city') || ''
    let ipAddress = sessionStorage.getItem('ipAddress') || ''
    // 登录提交
    let res = await Api.getphoneusermsg(param.phone, param.vercode, false, ipAddress, city)
    let res = await Api.getphoneusermsg(param.phone, param.vercode, false)
    if (res.status) {
      sessionStorage.setItem('UserID', res.UserID)
      sessionStorage.setItem('LoginUID', res.LoginUID)
@@ -162,24 +192,27 @@
      sessionStorage.setItem('Full_Name', res.FullName)
      sessionStorage.setItem('avatar', res.icon || '')
      sessionStorage.setItem('dataM', res.dataM ? 'true' : '')
      sessionStorage.setItem('localDataM', res.dataM ? 'true' : '')
      sessionStorage.setItem('debug', res.debug || '')
      sessionStorage.setItem('role_id', res.role_id || '')
      sessionStorage.setItem('localRole_id', res.role_id || '')
      sessionStorage.setItem('departmentcode', res.departmentcode || '')
      sessionStorage.setItem('organization', res.organization || '')
      sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
      if (res.paas_externalDatabase) {
        sessionStorage.setItem('externalDatabase', res.paas_externalDatabase)
        window.GLOB.externalDatabase = `[${res.paas_externalDatabase}]..`
      }
      let _url = window.location.href.split('#')[0]
      localStorage.setItem(_url + 'lang', param.lang || 'zh-CN')
      localStorage.setItem(_href + 'lang', param.lang || 'zh-CN')
      sessionStorage.setItem('lang', param.lang || 'zh-CN')
      sessionStorage.removeItem('visitorUserID')
      sessionStorage.removeItem('visitorLoginUID')
      let _history = sessionStorage.getItem('history')
      if (_history) {
        sessionStorage.removeItem('history')
        // 查看是否为其他页面跳转,路径存在时,跳回原页面
        this.props.history.replace(_history)
      let iframe = sessionStorage.getItem('iframe')
      if (iframe) {
        sessionStorage.removeItem('iframe')
        this.props.history.replace(iframe.replace(/@loginuid@/, res.LoginUID))
      } else {
        this.props.history.replace('/main')
      }
@@ -199,13 +232,7 @@
  }
  authLogin = (appid, openid, memberid, scanId) => {
    if (options.sysType === 'local' && !window.GLOB.mainSystemApi) { // 业务系统必须设置单点地址
      Modal.warning({
        title: '未设置单点服务器地址,请联系管理员!'
      })
      return
    }
    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)
@@ -213,19 +240,24 @@
        sessionStorage.setItem('Full_Name', res.FullName)
        sessionStorage.setItem('avatar', res.icon || '')
        sessionStorage.setItem('dataM', res.dataM ? 'true' : '')
        sessionStorage.setItem('localDataM', res.dataM ? 'true' : '')
        sessionStorage.setItem('debug', res.debug || '')
        sessionStorage.setItem('role_id', res.role_id || '')
        sessionStorage.setItem('localRole_id', res.role_id || '')
        sessionStorage.setItem('departmentcode', res.departmentcode || '')
        sessionStorage.setItem('organization', res.organization || '')
        sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
        if (res.paas_externalDatabase) {
          sessionStorage.setItem('externalDatabase', res.paas_externalDatabase)
          window.GLOB.externalDatabase = `[${res.paas_externalDatabase}]..`
        }
  
        sessionStorage.removeItem('visitorUserID')
        sessionStorage.removeItem('visitorLoginUID')
  
        let _history = sessionStorage.getItem('history')
        if (_history) {
          sessionStorage.removeItem('history')
          // 查看是否为其他页面跳转,路径存在时,跳回原页面
          this.props.history.replace(_history)
        let iframe = sessionStorage.getItem('iframe')
        if (iframe) {
          sessionStorage.removeItem('iframe')
          this.props.history.replace(iframe.replace(/@loginuid@/, res.LoginUID))
        } else {
          this.props.history.replace('/main')
        }
@@ -267,52 +299,112 @@
    // md5("/ws/location/v1/ip?callback=callbackFunction&key=key&output=jsonp secret key")
    // md5("/ws/location/v1/ip?callback=callbackFunction&key=BA7BZ-4QB65-LFCIA-QPDA6-4G6O7-MJB4Q&output=jsonpuThL4ZM3XOj642ksEQh76tyHFjh4")
    // 获取ip及城市信息
    // let ipurl = window.atob('aHR0cHM6Ly9lcGMubWs5a$mkC5jbi93ZWJhcGkvaXBsb2M='.replace(/\$mk/ig, ''))
    // Api.directRequest(ipurl, 'get', null, 'true').then(res => {
    //   if (!res || !res.ip) return
    //   sessionStorage.setItem('ipAddress', res.ip)
    // })
    const _addressUrl = window.location.href.split('#')[0] + 'queryAddress'
    setTimeout(() => {
      Api.delCacheConfig()
    }, 50)
    if (_addressUrl !== 'true') {
      sessionStorage.setItem('city', '')
      sessionStorage.setItem('ipAddress', '')
    } else {
      window.callbackFunction = (res) => {
        if (res.result && res.result.ad_info) {
          sessionStorage.setItem('city', res.result.ad_info.city)
          sessionStorage.setItem('ipAddress', res.result.ip)
        }
    if (window.GLOB.filter) {
      let view = document.getElementById('mk-login-view')
      if (view) {
        view.style.filter = 'grayscale(100%)'
      }
      const JSONP = document.createElement('script')
      JSONP.type = 'text/javascript'
      JSONP.src = 'https://apis.map.qq.com/ws/location/v1/ip?callback=callbackFunction&key=BA7BZ-4QB65-LFCIA-QPDA6-4G6O7-MJB4Q&output=jsonp&sig=3e5ebecb324ba266bf80014dcc8380db'
      document.getElementsByTagName('head')[0].appendChild(JSONP)
      setTimeout(() => {
        document.getElementsByTagName('head')[0].removeChild(JSONP)
      },500)
    }
    const _addressUrl = _href + 'queryAddress'
    if (localStorage.getItem(_addressUrl) === 'true') {
      this.queryAddress()
    }
    const timeStamp = new Date().getTime()
    const _authUrl = window.location.href.split('#')[0] + 'AuthCode'
    const _authUrl = _href + 'AuthCode'
    let authCode = localStorage.getItem(_authUrl)
    let _s = md5('mksoft' + moment().format('YYYYMMDD'))
    authCode = authCode ? authCode.split(',') : []
    let index = authCode.findIndex(key => key === _s)
    let license = false
    let key = md5(window.GLOB.appId + 'minke_software' + window.GLOB.appkey).toUpperCase().substr(-6)
    if (window.GLOB.licenseKey) {
      if (window.GLOB.licenseKey.length !== 20) {
        Modal.warning({
          title: `本地授权码已失效,请联系管理员。`,
          okText: '知道了'
        })
      } else {
        let key = md5(window.GLOB.appId + 'minke_software' + window.GLOB.appkey).toUpperCase().substr(-6)
        let key1 = window.GLOB.licenseKey.substring(0, 6)
        let key2 = window.GLOB.licenseKey.substring(6, 14)
        let key3 = window.GLOB.licenseKey.substring(14)
        let key4 = md5(key1 + key2).toUpperCase().substr(-6)
        if (key === key1 && key3 === key4) {
          let last = window.GLOB.appkey[window.GLOB.appkey.length - 1]
          let offset = 0
          let keys = {}
          if (!isNaN(+last)) {
            offset = (10 - last) % 10
          } else {
            last = last.charCodeAt() - 65
            offset = (30 - last) % 10
          }
          for (let i = 0; i < 26; i++) {
            let char = String.fromCharCode(65 + i)
            keys[char] = (offset + i) % 10
          }
          let lictime = key2.replace(/[A-Z]/ig, (s) => {
            return keys[s]
          })
          lictime = lictime.slice(0,4) + '/' + lictime.slice(4,6) + '/' + lictime.slice(6)
          lictime = Math.floor(new Date(lictime).getTime() / 86400000)
          let curtime = Math.floor(new Date().getTime() / 86400000)
          let licday = lictime - curtime
          let _mindUrl = _href + 'notMind'
    if (index > -1 || window.GLOB.licenseKey === key) {
          if (licday < 0 || isNaN(licday)) {
            Modal.warning({
              title: '本地授权码已失效,请联系管理员。',
              okText: '知道了'
            })
          } else if (licday > 20) {
            license = true
            localStorage.removeItem(_mindUrl)
          } else {
            license = true
            if (localStorage.getItem(_mindUrl) !== 'false') {
              Modal.confirm({
                title: `距离授权到期还剩${licday}天,请联系管理员。`,
                okText: '不在提醒',
                cancelText: '关闭',
                onOk() {
                  localStorage.setItem(_mindUrl, 'false')
                },
                onCancel() {},
              })
            }
          }
        } else {
          Modal.warning({
            title: '本地授权码已失效,请联系管理员。',
            okText: '知道了'
          })
        }
      }
    }
    if ((!window.GLOB.licenseKey && index > -1) || license) {
      this.setState({
        auth: true
      })
    }
    if (window.GLOB.licenseKey !== key && (index === -1 || index > 5)) {
    if (!window.GLOB.licenseKey && (index === -1 || index > 5)) {
      let _appId = window.GLOB.appId
  
      if (options.sysType === 'cloud') { // 云端使用系统配置appid
@@ -351,7 +443,11 @@
      param.sign = md5(values)
      param.t = new Date().getTime()
  
      Api.directRequest(_rduri + '/' + _func, 'post', param, 'true').then(res => {
      Api.directRequest({
        url: _rduri + '/' + _func,
        method: 'post',
        data: JSON.stringify(param)
      }).then(res => {
        if (res.status) {
          if (res.EPC === str) {
            let box = []
@@ -365,6 +461,13 @@
            this.setState({
              auth: true
            })
            if (res.warning_day && res.warning_day < 20) {
              Modal.warning({
                title: `距离授权到期还剩${res.warning_day}天,请联系管理员。`,
                okText: '知道了'
              })
            }
          } else {
            localStorage.removeItem(_authUrl)
            this.setState({
@@ -376,6 +479,7 @@
            localStorage.setItem(_addressUrl, 'false')
          } else {
            localStorage.setItem(_addressUrl, 'true')
            this.queryAddress()
          }
        } else if (res.ErrCode === 'N') {
          localStorage.removeItem(_authUrl)
@@ -384,11 +488,56 @@
            authError: res.message
          })
        }
      }, (error) => {
        if (error && error.ErrCode === 'LoginError') {
          let param = {
            func: 's_visitor_login',
            timestamp: moment().format('YYYY-MM-DD HH:mm:ss'),
            SessionUid: _id,
            TypeCharOne: 'pc',
            appkey: '202004041613277377A6A2456D34A4948AE84'
          }
          param.LText = md5(window.btoa(_id + param.timestamp))
          param.secretkey = md5(param.LText + 'mingke' + param.timestamp)
          let params = {
            url: _rduri.replace('dostars', 'dologon'),
            method: 'post',
            data: JSON.stringify(param)
          }
          Api.directRequest(params)
          return
        }
        if (index === -1 || index > 10) {
          this.setState({
            auth: false,
            authError: '网络错误导致系统授权失败,请联系管理员。'
          })
        }
      })
    }
    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 || '')
@@ -409,14 +558,40 @@
        _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp)
        Api.getSystemConfig(_param).then(res => {
          if (!res) return
          if (res.status) {
            // positecgroup
            res.Banner = res.Banner ? res.Banner.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
            res.doclogo = res.doclogo ? res.doclogo.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
            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:') : ''
            // res.Banner = res.Banner ? res.Banner.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
            // res.doclogo = res.doclogo ? res.doclogo.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
            // 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:') : ''
            let _url = window.location.href.split('#')[0] + 'system'
            if (options.sysType === 'local' && window.GLOB.systemType !== 'production') {
              if (md5(('mk' + window.GLOB.appkey + res.sys_datetime + res.member_type + res.registry_date).toLowerCase()) !== res.secret_key) {
                Modal.warning({
                  title: '密钥错误,请联系管理员!',
                  okText: '知道了'
                })
                this.setState({
                  auth: false,
                  authError: '密钥错误,请联系管理员!'
                })
                return
              } else if (res.member_type === 'personal' && res.registry_date) {
                let saveDelay = 0
                try {
                  saveDelay = parseInt((new Date().getTime() - new Date(res.registry_date).getTime()) / 4320000)
                  sessionStorage.setItem('mkDelay', saveDelay)
                } catch(e) {}
              }
            }
            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 || '',
              platTitle: res.titleName || '',
@@ -430,25 +605,42 @@
              style: res.CSS || '',
              showline: res.split_line_show || 'true',
              webSite: res.WebSite || '',
              navBar: res.menu_type
              navBar: res.menu_type, // shutter 百叶窗、linkage_navigation 联动菜单、linkage 联动菜单_无导航栏、menu_board 菜单面板、menu_board_navigation 菜单面板_标签页
              app_version: res.app_version
            }
            let level = res.pwd_level || ''
            if (level && !['letter_num', 'char_num', 'char_num_90', 'char_num_90_sms'].includes(level)) {
              level = ''
            }
            localStorage.setItem(_href + 'pwdlevel', level)
            if (res.srcid) {
              localStorage.setItem(_href + 'srcId', res.srcid)
            } else {
              localStorage.removeItem(_href + 'srcId')
            }
            sessionStorage.setItem('home_background', res.index_background_color || '')
            let seconds = 0
            if (res.sys_datetime) {
              sessionStorage.setItem('sys_datetime', res.sys_datetime)
              sessionStorage.setItem('app_datetime', new Date().getTime())
              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 {
            } catch (e) {
              localStorage.removeItem(_url)
            }
            let _loginurl = window.location.href.split('#')[0] + 'loginways'
            let _loginurl = _href + 'loginways'
            let login_ways = []
            let login_types = []
            if (res.login_ways && res.login_ways.length > 0) {
@@ -460,14 +652,16 @@
                login_types.push(item.way_no)
                login_ways.push({
                  label: item.way_name,
                  type: item.way_no,
                  smsId: item.sms_id
                })
                })
                if (item.way_no === 'sms_vcode' && item.sms_id) {
                  sessionStorage.setItem('mk_sms_id', item.sms_id)
                }
              })
            } else {
              login_ways.push({
                label: '账号密码登录',
                type: 'uname_pwd',
                smsId: ''
              })
@@ -475,7 +669,7 @@
            try {
              localStorage.setItem(_loginurl, window.btoa(window.encodeURIComponent(JSON.stringify(login_ways))))
            } catch {
            } catch (e) {
              localStorage.removeItem(_loginurl)
            }
            
@@ -488,6 +682,7 @@
            window.GLOB.mainlogo = systemMsg.mainlogo
            window.GLOB.style = systemMsg.style
            window.GLOB.navBar = systemMsg.navBar
            window.GLOB.appVersion = systemMsg.app_version
        
            if (window.GLOB.style && styles[window.GLOB.style]) {
              document.body.className = styles[window.GLOB.style] + ' ' + (res.split_line_show === 'false' ? 'hidden-split-line' : '')
@@ -504,36 +699,37 @@
            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
            }
            if (res.users_upt === 'true' && window.GLOB.systemType === 'production') {
              Api.getLocalConfig ({
                func: 's_Get_local_u_deleted',
                users_upt_date: res.users_upt_date,
                userid: result.UserID,
                LoginUID: result.LoginUID
              }).then(localres => {
                if (!localres.status) return
                Api.getSystemConfig({
                  func: 's_get_sso_u_create',
                  user_ids: localres.user_ids,
                  user_ids_local: localres.user_ids_local,
                  users_upt_date: localres.users_upt_date,
                  userid: result.UserID,
                  LoginUID: result.LoginUID
                }).then(ssores => {
                  if (!ssores.status) return
                  Api.getLocalConfig ({
                    func: 's_get_local_u_create',
                    user_ids_local: ssores.user_ids_local,
                    userid: result.UserID,
                    LoginUID: result.LoginUID
                  })
                })
              })
            }
            // positecgroup
            // if (res.users_upt === 'true' && window.GLOB.systemType === 'production') {
            //   Api.genericInterface ({
            //     func: 's_Get_local_u_deleted',
            //     users_upt_date: res.users_upt_date,
            //     userid: result.UserID,
            //     LoginUID: result.LoginUID
            //   }).then(localres => {
            //     if (!localres.status) return
            //     Api.getSystemConfig({
            //       func: 's_get_sso_u_create',
            //       user_ids: localres.user_ids,
            //       user_ids_local: localres.user_ids_local,
            //       users_upt_date: localres.users_upt_date,
            //       userid: result.UserID,
            //       LoginUID: result.LoginUID
            //     }).then(ssores => {
            //       if (!ssores.status) return
            //       Api.genericInterface ({
            //         func: 's_get_local_u_create',
            //         user_ids_local: ssores.user_ids_local,
            //         userid: result.UserID,
            //         LoginUID: result.LoginUID
            //       })
            //     })
            //   })
            // }
          } else {
            message.warning(res.message)
          }
@@ -543,11 +739,11 @@
      }
    })
    
    let loginWays = localStorage.getItem(window.location.href.split('#')[0] + 'loginways')
    let loginWays = localStorage.getItem(_href + 'loginways')
    if (loginWays) {
      try {
        loginWays = JSON.parse(window.decodeURIComponent(window.atob(loginWays)))
      } catch {
      } catch (e) {
        loginWays = null
      }
@@ -555,6 +751,28 @@
        loginWays: loginWays
      })
    }
  }
  queryAddress = () => {
    window.callbackFunction = (res) => {
      if (res.result && res.result.ad_info) {
        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 || '')
      }
    }
    const JSONP = document.createElement('script')
    JSONP.type = 'text/javascript'
    JSONP.src = 'https://apis.map.qq.com/ws/location/v1/ip?callback=callbackFunction&key=BA7BZ-4QB65-LFCIA-QPDA6-4G6O7-MJB4Q&output=jsonp&sig=3e5ebecb324ba266bf80014dcc8380db'
    document.getElementsByTagName('head')[0].appendChild(JSONP)
    setTimeout(() => {
      document.getElementsByTagName('head')[0].removeChild(JSONP)
    },500)
  }
  syncSubmit = () => {
@@ -576,7 +794,6 @@
    if (options.cloudServiceApi) {
      param.rduri = options.cloudServiceApi.replace('dostars', 'dostar')
    }
    this.logincloudRef.handleConfirm().then(result => {
      param.UserName = result.cloudusername
@@ -635,7 +852,7 @@
    const { lineColor, bgImage, loginlogo, copyRight, webSite, ICP, loginWays, touristLogin } = this.state
    return (
      <div className="login-container" style={bgImage ? {backgroundImage: 'url(' + bgImage + ')'} : {}}>
      <div className="login-container" id="mk-login-view" style={bgImage ? {backgroundImage: 'url(' + bgImage + ')'} : {}}>
        <div className="logo" style={lineColor ? {borderColor: lineColor} : {}}>
          {loginlogo ? <img src={loginlogo} alt=""/> : null}
          {this.state.platName ? <p className="plat-name">{this.state.platName}</p> : null}
@@ -680,19 +897,11 @@
        >
          <LoginCloudForm handleSubmit={() => this.syncSubmit()} wrappedComponentRef={(inst) => this.logincloudRef = inst}/>
        </Modal>
        {/* 修改密码 */}
        <Resetpwd />
      </div>
    )
  }
}
const mapStateToProps = () => {
  return {}
}
const mapDispatchToProps = (dispatch) => {
  return {
    modifyMemberLevel: (memberLevel) => dispatch(modifyMemberLevel(memberLevel))
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(Login)
export default Login