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