From 5df578ff69f6b02e821d59a8883bc75d78695a62 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 10 十一月 2020 11:07:31 +0800
Subject: [PATCH] 2020-11-10

---
 src/router/index.js |  142 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 118 insertions(+), 24 deletions(-)

diff --git a/src/router/index.js b/src/router/index.js
index dc89810..7b67105 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,37 +1,131 @@
 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'
-const personal = asyncComponent(() => import('@/views/personal/personal'))
+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') { // 鏂扮獥鍙f墦寮�锛屽彇url鍙傛暟鏀惧叆sessionStorage
+      try {
+        let _param = JSON.parse(window.decodeURIComponent(window.atob(props.match.params.param)))
+
+        if (typeof(_param) === 'object') {
+          if (_param.UserID && !sessionStorage.getItem('UserID')) {
+            sessionStorage.setItem('UserID', _param.UserID)
+          }
+          if (_param.LoginUID && !sessionStorage.getItem('LoginUID')) {
+            sessionStorage.setItem('LoginUID', _param.LoginUID)
+          }
+          if (_param.User_Name && !sessionStorage.getItem('User_Name')) {
+            sessionStorage.setItem('User_Name', _param.User_Name)
+          }
+          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('鑿滃崟鍙傛暟瑙f瀽閿欒锛�')
+      }
+
+      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('鑿滃崟鍙傛暟瑙f瀽閿欒锛�')
+      }
+
+      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>
-          <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) => {
+              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>
     )
   }
-}
-
-// 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