import React, {Component} from 'react'
|
import {HashRouter, Switch, Route, Redirect} from 'react-router-dom'
|
import md5 from 'md5'
|
import moment from 'moment'
|
import options from '@/store/options.js'
|
import asyncComponent from '@/utils/asyncComponent'
|
import asyncLoadComponent from '@/utils/asyncLoadComponent'
|
|
const Pay = asyncLoadComponent(() => import('@/views/pay'))
|
const Main = asyncLoadComponent(() => import('@/views/main'))
|
const Login = asyncLoadComponent(() => import('@/views/login'))
|
const NotFound = asyncComponent(() => import('@/views/404'))
|
const MobManage = asyncLoadComponent(() => import('@/views/mobmanage'))
|
const MobDesign = asyncLoadComponent(() => import('@/views/mobdesign'))
|
const MenuDesign = asyncLoadComponent(() => import('@/views/menudesign'))
|
const BillPrint = asyncLoadComponent(() => import('@/views/billprint'))
|
const PrintT = asyncLoadComponent(() => import('@/views/printTemplate'))
|
|
const routers = [
|
{path: '/login', name: 'login', component: Login, auth: false},
|
{path: '/pay/:param', name: 'pay', component: Pay, auth: false},
|
{path: '/print/:param', name: 'print', component: PrintT, auth: false},
|
{path: '/ssologin/:param', name: 'ssologin', auth: true},
|
{path: '/main', name: 'main', component: Main, auth: true},
|
{path: '/mobmanage', name: 'mobmanage', component: MobManage, auth: true},
|
{path: '/mobdesign/:appId/:appType/:appCode/:appName', name: 'mobdesign', component: MobDesign, auth: true},
|
{path: '/menudesign/:param', name: 'menudesign', component: MenuDesign, auth: true},
|
{path: '/billprint/:param', name: 'billprint', component: BillPrint, auth: true},
|
{path: '/paramsmain/:param', name: 'pmain', component: Main, auth: true}
|
]
|
|
export default class RouteConfig extends Component {
|
controlRoute (item, props) {
|
if (!item.auth) { // 不需要授权,直接跳转(登录页)
|
return (<item.component {...props}/>)
|
}
|
|
if (item.name === 'pmain') { // 新窗口打开,取url参数放入sessionStorage
|
try {
|
let _param = JSON.parse(window.decodeURIComponent(window.atob(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.avatar && sessionStorage.setItem('avatar', _param.avatar)
|
_param.role_id && sessionStorage.setItem('role_id', _param.role_id)
|
_param.Member_Level && sessionStorage.setItem('Member_Level', _param.Member_Level)
|
|
if (_param.mainlogo) {
|
window.GLOB.mainlogo = _param.mainlogo
|
}
|
if (_param.mstyle && options.styles[_param.mstyle]) {
|
document.getElementById('root').className = options.styles[_param.mstyle]
|
}
|
if (_param.MainMenu) {
|
sessionStorage.setItem('MainMenu', _param.MainMenu)
|
}
|
if (_param.SubMenu) {
|
sessionStorage.setItem('SubMenu', _param.SubMenu)
|
}
|
if (_param.ThirdMenu) {
|
sessionStorage.setItem('ThirdMenu', _param.ThirdMenu)
|
}
|
if (_param.param) {
|
_param.param.ThirdMenu = _param.ThirdMenu
|
sessionStorage.setItem('MenuParam', JSON.stringify(_param.param))
|
}
|
}
|
} catch {
|
console.warn('菜单参数解析错误!')
|
}
|
|
return (<item.component {...props}/>)
|
} else if (item.name === 'ssologin') {
|
try {
|
let _param = JSON.parse(window.decodeURIComponent(window.atob(props.match.params.param)))
|
if (typeof(_param) === 'object') {
|
if (_param.UserID) {
|
sessionStorage.setItem('UserID', _param.UserID)
|
}
|
if (_param.LoginUID) {
|
sessionStorage.setItem('LoginUID', _param.LoginUID)
|
}
|
if (_param.User_Name) {
|
sessionStorage.setItem('User_Name', _param.User_Name)
|
}
|
}
|
} catch {
|
console.warn('菜单参数解析错误!')
|
}
|
|
return (<Redirect to={{ pathname: '/main'}}/>)
|
}
|
|
let userId = sessionStorage.getItem('UserID') // 判断是否存在userid
|
|
let authCode = localStorage.getItem(window.location.href.split('#')[0] + 'AuthCode') // 判断系统是否在授权期限内
|
let _s = md5('mksoft' + moment().format('YYYYMMDD'))
|
let isauth = authCode && authCode.includes(_s)
|
|
if (userId && isauth) {
|
return (<item.component {...props}/>)
|
} else {
|
// return (<Redirect to={{ pathname: '/login', state: {from: props.location}}}/>)
|
return (<Redirect to={{ pathname: '/login'}}/>)
|
}
|
}
|
|
render () {
|
return (
|
<HashRouter>
|
<Switch>
|
{
|
routers.map((item, index) => {
|
return (
|
<Route key={index} path={item.path} name={item.name} exact render={ props => {
|
return this.controlRoute(item, props)
|
}}/>
|
)
|
})
|
}
|
<Redirect exact from="/" to="login"/>
|
<Route component= {NotFound}/>
|
</Switch>
|
</HashRouter>
|
)
|
}
|
}
|