Files
aida_front/src/router/index.ts
2024-07-29 17:30:24 +08:00

285 lines
6.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { createRouter, createWebHistory, RouteRecordRaw, createWebHashHistory } from 'vue-router'
import { defineAsyncComponent } from 'vue'
import store from "@/store"
import { getCookie, setCookie } from "@/tool/cookie";
const _import = (path: string) => () => import(`../views/${path}.vue`);
const _import_component = (path : string) => () => import(`../component/${path}`);
const _import_custom = (path : string) => () => import(`../views/${path}`);
// defineAsyncComponent(import(`../views/${path}.vue`))
const routes: Array<RouteRecordRaw> = [
{
path: "/",
// redirect重定向
redirect: "/Square"
// redirect: "/upgrade"
},
{
path: '/login',
name: 'login',
component: _import('LoginPage')
},
// {
// path: '/register',
// name: 'register',
// component: _import('RegisterPage')
// },
{
path: '/upgrade',
name: 'upgrade',
component: _import('Upgrade'),
},
// {
// path: '/home',
// name: 'home',
// component: _import('HomeView')
// },
{
path: '/home',
name: 'home',
component: _import('HomeMain'),
children:[
{
path: "",
name:'HomeChil',
redirect: "/home/homePage"
},
{
path:'homePage',
name:'homePage',
component: _import_custom('HomeView/HomeView.vue'),
},{
path:'library',
name:'library',
component: _import_custom('HomeView/library.vue'),
},{
path:'history',
name:'history',
component: _import_custom('HomeView/history.vue'),
},{
path:'works',
name:'works',
component: _import_custom('HomeView/Works.vue'),
},{
path:'events',
name:'events',
component: _import_custom('HomeView/Events.vue'),
},{
path:'eventsDetail',
name:'eventsDetail',
component: _import_component('Events/eventsDetail.vue'),
}
]
},
{
path: '/Square',
name: "HomeRecommend",
component: _import('HomeRecommend'),
children:[
{
path: "",
name:'SquareChil',
redirect: "/Square/works"
},
{
path:'works',
name:'SquareWorks',
component: _import_custom('HomeView/Works.vue'),
},{
path:'events',
name:'SquareEvents',
component: _import_custom('HomeView/Events.vue'),
},{
path:'eventsDetail',
name:'SquareEventsDetail',
component: _import_component('Events/eventsDetail.vue'),
}
]
},
{
path: '/demo',
name: 'demo',
component: _import('Demo')
},
// {
// path: '/history',
// name: 'history',
// component: _import('history')
// },
// {
// path: '/testClickData',
// name: 'testClickData',
// component: _import('TestClickData')
// },
{
path: '/administrator',
name: 'administrator',
component: _import('Administrator'),
children:[
{
path: "",
name:'adminChil',
redirect: "/administrator/allUser"
},
{
path:'allUser',
name:'allUser',
component: _import_component('Administrator/allUser.vue'),
},
{
path:'testClickData',
name:'testClickData',
component: _import_component('Administrator/TestClickData.vue'),
},
{
path:'trialApproval',
name:'trialApproval',
component: _import_component('Administrator/trialApproval.vue'),
},{
path:'questionnaire',
name:'questionnaire',
component: _import_component('Administrator/questionnaire.vue'),
},
]
},
{
path: '/paySucceed',
name: 'paySucceed',
component: _import('paySucceed')
},
// {
// path: '/library',
// name: 'library',
// component: _import('library')
// },
// {
// path: '/trialApproval',
// name: 'trialApproval',
// component: _import('trialApproval')
// },
{
path: '/setIdentification',
name: 'setIdentification',
component: _import('setIdentification')
},
{
path: '/feedbackSurvey',
name: 'feedbackSurvey',
component: _import('feedbackSurvey'),
},
{
path: '/feedbackSurveyCN',
name: 'feedbackSurveyCN',
component: _import('feedbackSurveyCN'),
},
{
path: '/404',
name: '404',
component: _import('404')
},
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
// history: createWebHashHistory(),
routes
})
// 刷新保存数据-
let state:any = store.state
window.addEventListener("beforeunload", (e) => {
sessionStorage.setItem(
"vuex_setSystemUser",
JSON.stringify(state.UserHabit.systemUser.value)
);
});
var vuex_setSystemUser:any = sessionStorage.getItem("vuex_setSystemUser");
if (vuex_setSystemUser == 0 || vuex_setSystemUser == 1) {
store.commit("setSystemUser", JSON.parse(vuex_setSystemUser));
sessionStorage.removeItem("vuex_setSystemUser");
}
router.beforeEach((to, from, next) => {
// 系统维护
// let upgradeList = ['/feedbackSurvey','/feedbackSurveyCN']//指定页面系统维护也可以访问
// const toName = to.name === 'upgrade';
// if(upgradeList.indexOf(to.path) > -1){
// next();
// }else{
// if (toName) {
// next();
// } else {
// next({ name: 'upgrade' });
// }
// }
// return
// 检查路由是否存在
// 机房用户
let userInfo = JSON.parse(getCookie("userInfo") as any);
let murmurStr: any = localStorage.getItem('murmurStr')
let getIsMurmur: any = getCookie("isMurmur")
let token = getCookie("token");
let isMurmur = JSON.parse(getIsMurmur)
let routeList = ['/testClickData','/trialApproval']//指定页面需要指定id才能进入
let userIdList = [88,6,46,31,73,83,87,4]
let isSystemUserRouteList = ['/login','/Square']//游客用户只能进入这两个页面
let upgradeList = ['/feedbackSurvey','/feedbackSurveyCN']//指定页面系统维护也可以访问
let systemUser = state.UserHabit.systemUser
const routeExists = router.getRoutes().some(({ name }) =>{
if(name){
return name === to.name
}else{
return false
}
});
if(upgradeList.indexOf(to.path) > -1){//指定页面任何用户都可以进入
next();
return
}
if(systemUser.value == 0){//游客用户只能进入这两个页面
let sSystemUser = false
for (let index = 0; index < isSystemUserRouteList.length; index++) {
if(to.path.indexOf(isSystemUserRouteList[index]) > -1){
sSystemUser = true
break
}
}
if(sSystemUser){
next();
}else{
next('/Square');
}
return
}
if (routeExists) {//检测档期那页面是否存在
if (isMurmur && murmurStr && token) {
const toName = to.name === 'login';
if (toName) {
next({ name: '/home' });//机房用户
} else {
next();
}
} else {
if (routeList.indexOf(to.path) > -1 ) {//指定也买你必须指定用户可以进入
if(userIdList.indexOf(userInfo.userId) > -1){
next();
}else{
next({ name: '/404' });
}
}else{
next();
}
// 如果页面存在,正常跳转
}
} else {
// 如果页面不存在可以跳转到404页面或者其他页面
next('/404');
}
});
export default router