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 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/:MenuId/:ParentId/:MenuName/:MenuNo', name: 'menudesign', component: MenuDesign, auth: true}, {path: '/paramsmain/:param', name: 'pmain', component: Main, auth: true} ] export default class RouteConfig extends Component { controlRoute (item, props) { if (!item.auth) { // 不需要授权,直接跳转(登录页) return () } if (item.name === 'pmain') { // 新窗口打开,取url参数放入sessionStorage let _param = window.atob(props.match.params.param) let p = {} _param.split('&').forEach(cell => { let _cell = cell.split('=') p[_cell[0]] = _cell[1] }) !sessionStorage.getItem('UserID') && sessionStorage.setItem('UserID', p.ud) !sessionStorage.getItem('LoginUID') && sessionStorage.setItem('LoginUID', p.ld) !sessionStorage.getItem('User_Name') && sessionStorage.setItem('User_Name', p.un) if (p.mlogo) { window.GLOB.mainlogo = p.mlogo } if (options.styles[p.mstyle]) { document.getElementById('root').className = options.styles[p.mstyle] } sessionStorage.setItem('MainMenu', p.mm) sessionStorage.setItem('SubMenu', p.sm) sessionStorage.setItem('ThirdMenu', p.tm) return () } else if (item.name === 'ssologin') { let _param = window.atob(props.match.params.param) let p = {} _param.split('&').forEach(cell => { let _cell = cell.split('=') p[_cell[0]] = _cell[1] }) sessionStorage.setItem('UserID', p.ud) sessionStorage.setItem('LoginUID', p.ld) sessionStorage.setItem('User_Name', p.un) return () } 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 () } else { // return () return () } } render () { return ( { routers.map((item, index) => { return ( { return this.controlRoute(item, props) }}/> ) }) } ) } }