import React, {Component} from 'react'
|
import { message } from 'antd'
|
import md5 from 'md5'
|
import moment from 'moment'
|
import Api from '@/api'
|
import zhCN from '@/locales/zh-CN/login.js'
|
import enUS from '@/locales/en-US/login.js'
|
import options from '@/store/options.js'
|
import Utils from '@/utils/utils.js'
|
import asyncComponent from '@/utils/asyncComponent'
|
import logourl from '@/assets/img/login-logo.png'
|
import loginbg from '@/assets/img/loginbg.jpg'
|
import './index.scss'
|
|
const LoginForm = asyncComponent(() => import('./loginform'))
|
const iszhCN = !localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN'
|
|
class Login extends Component {
|
state = {
|
selectedlang: iszhCN ? 'zh-CN' : 'en-US',
|
dict: iszhCN ? zhCN : enUS,
|
isDisabled: false,
|
auth: false,
|
logo: window.GLOB.logo || logourl,
|
bgImage: window.GLOB.bgImage || loginbg,
|
platName: window.GLOB.platName || '明科商业智能开放平台',
|
copyright: window.GLOB.copyRight || 'Copyright©2017 所有相关版权归 北京明科普华信息技术有限公司',
|
ICP: window.GLOB.icp || 'ICP备案: 京ICP备12007830号',
|
bgColor: window.GLOB.bgColor || '#000000',
|
lineColor: window.GLOB.lineColor || '#1890ff',
|
website: window.GLOB.website || (!window.GLOB.copyRight && 'http://minkesoft.com')
|
}
|
|
changelang (item) {
|
// 切换语言
|
this.setState({
|
dict: item === 'zh-CN' ? zhCN : enUS
|
})
|
}
|
|
md5Password (pwd) {
|
// md5密码加密
|
const salt = 'minkesoft'
|
return md5(md5(pwd + salt))
|
}
|
|
handleSubmit = () => {
|
this.loginformRef.handleConfirm().then(res => {
|
this.setState({
|
isDisabled: true
|
})
|
this.loginsubmit(res)
|
})
|
}
|
|
async loginsubmit (param) {
|
// 登录提交
|
// let password = this.md5Password(param.password)
|
// let result = await Api.loginsystem(param.username, param.password)
|
// if (!result.IsError) {
|
let res = await Api.getusermsg(param.username, param.password)
|
if (res.status) {
|
sessionStorage.setItem('UserID', res.UserID)
|
sessionStorage.setItem('SessionUid', Utils.getuuid())
|
sessionStorage.setItem('LoginUID', res.LoginUID)
|
sessionStorage.setItem('User_Name', res.UserName)
|
sessionStorage.setItem('avatar', res.icon || '')
|
|
localStorage.setItem('lang', param.lang)
|
|
let _url = window.location.href.split('#')[0]
|
|
if (param.remember) { // 记住密码时账号密码存入localStorage
|
localStorage.setItem(_url, window.btoa(window.encodeURIComponent(JSON.stringify({username: param.username, password: param.password}))))
|
} else {
|
localStorage.removeItem(_url)
|
}
|
|
if (this.props.location.state && this.props.location.state.from.pathname) {
|
// 查看是否为其他页面跳转,路径存在时,跳回原页面
|
this.props.history.replace(this.props.location.state.from.pathname)
|
} else {
|
this.props.history.replace('/main')
|
}
|
} else {
|
message.warning(res.message)
|
this.setState({
|
isDisabled: false
|
})
|
}
|
// } else {
|
// message.warning(result.Message)
|
// this.setState({
|
// isDisabled: false
|
// })
|
// }
|
}
|
|
componentDidMount () {
|
let timeStamp = new Date().getTime()
|
let _appId = window.GLOB.appId
|
|
if (options.systemType === 'Cloud') { // 云端使用系统配置appid
|
_appId = options.AppId
|
}
|
|
let str = md5('MK19' + _appId + timeStamp)
|
Api.systemauth(_appId, timeStamp).then(res => {
|
if (res.status && res.EPC === str) {
|
let box = []
|
for (let i = 0; i < 15; i++) {
|
let s = 'mksoft' + moment().add(i, 'days').format('YYYYMMDD')
|
box.push(md5(s))
|
}
|
box = box.join(',')
|
localStorage.setItem('AuthCode', box)
|
|
this.setState({
|
auth: true
|
})
|
} else {
|
localStorage.removeItem('AuthCode')
|
this.setState({
|
auth: false
|
})
|
}
|
})
|
|
let authCode = localStorage.getItem('AuthCode')
|
let _s = md5('mksoft' + moment().format('YYYYMMDD'))
|
if (authCode && authCode.includes(_s)) {
|
this.setState({
|
auth: true
|
})
|
}
|
}
|
|
render () {
|
return (
|
<div className="login-container" style={{backgroundImage: 'url(' + this.state.bgImage + ')', backgroundColor: this.state.bgColor}}>
|
<div className="logo" style={{borderColor: this.state.lineColor}}>
|
<img src={this.state.logo} alt=""/>
|
</div>
|
<div className="login-middle" style={{borderColor: this.state.lineColor}}>
|
<LoginForm
|
platName={this.state.platName}
|
dict={this.state.dict}
|
auth={this.state.auth}
|
lang={this.state.selectedlang}
|
isDisabled={this.state.isDisabled}
|
changelang={(value) => this.changelang(value)}
|
handleSubmit={() => this.handleSubmit()}
|
wrappedComponentRef={(inst) => this.loginformRef = inst}
|
/>
|
</div>
|
<div className="login-bottom">
|
{this.state.website ?
|
<a target="blank" href={this.state.website} dangerouslySetInnerHTML={{ __html: this.state.copyright.replace(/\s/ig, ' ') }}></a> :
|
<p dangerouslySetInnerHTML={{ __html: this.state.copyright.replace(/\s/ig, ' ') }}></p>
|
}
|
<p dangerouslySetInnerHTML={{ __html: this.state.ICP.replace(/\s/ig, ' ') }}></p>
|
</div>
|
</div>
|
)
|
}
|
}
|
|
export default Login
|