From 3b103caa6bfc9ed410e67156c3ca1785bf1cecc9 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 19 八月 2022 01:15:31 +0800 Subject: [PATCH] 2022-08-19 --- src/router/index.js | 135 +++++++++++++++++++++++++++++++++++++-------- 1 files changed, 111 insertions(+), 24 deletions(-) diff --git a/src/router/index.js b/src/router/index.js index dc89810..0d98df5 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,37 +1,124 @@ import React, {Component} from 'react' import {HashRouter, Switch, Route, Redirect} from 'react-router-dom' +import md5 from 'md5' +import moment from 'moment' +import { styles } from '@/store/options.js' import asyncComponent from '@/utils/asyncComponent' -const personal = asyncComponent(() => import('@/views/personal/personal')) +import asyncLoadComponent from '@/utils/asyncLoadComponent' + +const Pay = asyncLoadComponent(() => import('@/views/pay')) +const Sso = asyncLoadComponent(() => import('@/views/sso')) +const Main = asyncLoadComponent(() => import('@/views/main')) +const Design = asyncLoadComponent(() => import('@/views/design')) +const Login = asyncLoadComponent(() => import('@/views/login')) +const NotFound = asyncComponent(() => import('@/views/404')) +const AppManage = asyncLoadComponent(() => import('@/views/appmanage')) +const AppCheck = asyncLoadComponent(() => import('@/views/appcheck')) +const PCDesign = asyncLoadComponent(() => import('@/views/pcdesign')) +const MobDesign = asyncLoadComponent(() => import('@/views/mobdesign')) +const PopDesign = asyncLoadComponent(() => import('@/views/popdesign')) +const ImDesign = asyncLoadComponent(() => import('@/views/imdesign')) +const MenuDesign = asyncLoadComponent(() => import('@/views/menudesign')) +const BaseDesign = asyncLoadComponent(() => import('@/views/basedesign')) +const TableDesign = asyncLoadComponent(() => import('@/views/tabledesign')) +const BillPrint = asyncLoadComponent(() => import('@/views/billprint')) +const PrintT = asyncLoadComponent(() => import('@/views/printTemplate')) +const Interface = asyncLoadComponent(() => import('@/views/interface')) +const RoleManage = asyncLoadComponent(() => import('@/views/rolemanage')) +const SystemFunc = asyncLoadComponent(() => import('@/views/systemfunc')) + +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', component: Sso, auth: false}, + {path: '/main', name: 'main', component: Main, auth: true}, + {path: '/design', name: 'design', component: Design, auth: true}, + {path: '/appmanage', name: 'appmanage', component: AppManage, auth: true}, + {path: '/appcheck', name: 'appcheck', component: AppCheck, auth: true}, + {path: '/pcdesign/:param', name: 'pcdesign', component: PCDesign, auth: true}, + {path: '/mobdesign/:param', name: 'mobdesign', component: MobDesign, auth: true}, + {path: '/imdesign/:param', name: 'imdesign', component: ImDesign, auth: true}, + {path: '/menudesign/:param', name: 'menudesign', component: MenuDesign, auth: true}, + {path: '/basedesign/:param', name: 'basedesign', component: BaseDesign, auth: true}, + {path: '/tabledesign/:param', name: 'tabledesign', component: TableDesign, auth: true}, + {path: '/popdesign/:param', name: 'popdesign', component: PopDesign, auth: true}, + {path: '/billprint/:param', name: 'billprint', component: BillPrint, auth: true}, + {path: '/docprint/:menuId', name: 'docprint', component: BillPrint, auth: false}, + {path: '/docprint/:menuId/:id', name: 'docprint', component: BillPrint, auth: false}, + {path: '/paramsmain/:param', name: 'pmain', component: Main, auth: true}, + {path: '/role/:param', name: 'role', component: RoleManage, auth: true}, + {path: '/hs', name: 'hs', component: SystemFunc, auth: true}, + {path: '/interface', name: 'interface', component: Interface, auth: true} +] export default class RouteConfig extends Component { + controlRoute (item, props) { + if (!item.auth) { // 涓嶉渶瑕佹巿鏉冿紝鐩存帴璺宠浆 + return (<item.component {...props}/>) + } + + if (item.name === 'pmain') { // 鏂扮獥鍙f墦寮�锛屽彇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.dataM && sessionStorage.setItem('localDataM', _param.dataM) + _param.avatar && sessionStorage.setItem('avatar', _param.avatar) + _param.role_id && sessionStorage.setItem('role_id', _param.role_id) + _param.dataM && sessionStorage.setItem('localRole_id', _param.dataM) + _param.Member_Level && sessionStorage.setItem('Member_Level', _param.Member_Level) + _param.ThirdMenu && sessionStorage.setItem('ThirdMenu', _param.ThirdMenu) + + window.GLOB.mainlogo = _param.mainlogo || '' + window.GLOB.navBar = _param.navBar || '' + + if (_param.mstyle && styles[_param.mstyle]) { + document.body.className = styles[_param.mstyle] + } + } + } catch (e) { + console.warn('鑿滃崟鍙傛暟瑙f瀽閿欒锛�') + } + + return (<item.component {...props}/>) + } + + 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) + let key = md5(window.GLOB.appId + 'minke_software' + window.GLOB.appkey).toUpperCase().substr(-6) + let key1 = window.GLOB.licenseKey ? window.GLOB.licenseKey.substring(0, 6) : '' + + if (key1 === key) { + isauth = true + } + + 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> - <Route path="/main" exact component={personal}/> - <Route path="/main/:param" exact component={personal}/> - <Redirect exact from="/" to="main"/> - <Route component= {personal}/> + {routers.map((item, index) => <Route key={index} path={item.path} name={item.name} exact render={ props => this.controlRoute(item, props)}/>)} + <Redirect exact from="/" to="login"/> + <Route component= {NotFound}/> </Switch> </HashRouter> ) } -} - -// import React, { lazy } from 'react'; -// import { Route } from 'react-router-dom'; - -// const RouteLis = [ -// { -// component: lazy(() => import ('../views/home')), -// path: '/' -// } -// ]; - -// const RouterList = () => ( -// RouteLis.map((item, key) => { -// return <Route key={key} exact path={item.path} component={item.component}/>; -// }) -// ); - -// export default RouterList; \ No newline at end of file +} \ No newline at end of file -- Gitblit v1.8.0