import Vue from "vue" import store from "@/store" import VueRouter from "vue-router" import { query } from "@/utils/query" import { getPvUv } from "@/api/public.js" Vue.use(VueRouter) const routes = [ // { // path: '/', // redirect: '/home/overview', // 只有区域,及区域以上用户才能进入总部首页这一套 // }, { path: "/404", name: "404页面", component: () => import("../components/404"), }, { path: "/group", name: "集团首页", component: () => import("../views/statistics/index"), }, // home { path: "/home", name: "home", component: () => import("../views/index"), redirect: "/home/homepage", children: [{ path: "homepage", name: "项目首页", component: () => import("../views/homepage"), redirect: "/home/overview", }, //概览 { path: "overview", name: "项目概览", component: () => import("../views/overview"), }, // 楼层功能 { path: "floorFunc", name: "楼层功能", component: () => import("../views/floorFunc"), }, // 设备设施 { path: "equipment", name: "设备设施", component: () => import("../views/equipment"), }, // 其他功能 { path: "other", name: "其他事项", component: () => import("../views/other"), }, // 分析 { path: "analysis", name: "分享报表", component: () => import("../views/analysis"), }, //图例库管理 { path: "legendLibrary", name: "图例管理", component: () => import("../views/legendLibrary"), }, //图例绘制规则 { path: "legendRules", name: "绘制规则", component: () => import("../views/legendRules"), }, ], }, ] const router = new VueRouter({ mode: "history", base: process.env.BASE_URL, routes, }) const ignore = ["/404"] router.beforeEach(async (to, from, next) => { // 如果路径上有plazaId就保存 let plazaId = to.query.plazaId ?to.query.plazaId:'' if (plazaId) { localStorage.setItem('PLAZAID', plazaId) store.commit('STOREPLAZAID', plazaId); } let previewUrl = to.query.isPreview ? to.query.isPreview : ''; if (previewUrl) { sessionStorage.setItem("SETISPREVIEW", previewUrl) store.commit('SETISPREVIEW', previewUrl) } // 取出刷新时的 ssoToken, 路由拦截时app.vue 生命周期还没有执行,store中还没有数据, let beforeunload = localStorage.getItem("beforeunload"), __token = null beforeunload && (__token = JSON.parse(beforeunload).ssoToken) if (!ignore.includes(to.path)) { //都是需要token检验的页面 首先优先获取路由上带的token let token = null if (to.query.token) { store.commit("SETSSOTOKEN", to.query.token) //存vuex sessionStorage.setItem("SSOTOKEN", to.query.token) token = to.query.token } else { if (store.getters["ssoToken"]) { token = store.getters["ssoToken"] } else if (sessionStorage.getItem("SSOTOKEN")) { token = sessionStorage.getItem("SSOTOKEN") store.commit("SETSSOTOKEN", sessionStorage.getItem("SSOTOKEN")) //存vuex } else { redirectGetToken(to,from) } } // 如果有token if (token) { // 有token 将数据 isPreview赋给 vuex方便取值 store.commit('SETISPREVIEW', sessionStorage.getItem("SETISPREVIEW")) // 如果在跳转获取token之前保存了指定的路径,则后去token后需要跳转到相关页面 console.log(to.path) if(to.path !='/group' && to.path !='/home/homepage' && to.path !='/' ){ if(!store.state.permissions || store.state.permissions.length ==0){ // 如果没有请求permissions则请求getUserInfo await store.dispatch("getUserInfoNoPath", router) } } if (sessionStorage.getItem("TOURL")) { // 如果去的地址等于缓存的地址 if (sessionStorage.getItem("TOURL") == to.path) { sessionStorage.setItem("TOURL", '') if (to.path == "/") { next("/group") } if (to.path == "/group" || to.path == "/home/homepage") { if (store.state.accessLevel == -1) { await store.dispatch("getUserInfo", router) await store.dispatch("getBrand") // await store.dispatch('getFact') } } await store.dispatch("getFloors") await store.dispatch("getBrand") next() } else { next(sessionStorage.getItem("TOURL")) } } else { if (to.path == "/") { next("/group") } if (to.path == "/group" || to.path == "/home/homepage") { if (store.state.accessLevel == -1) { await store.dispatch("getUserInfo", router) console.log('getUserInfo', 4) await store.dispatch("getBrand") // await store.dispatch('getFact') } } await store.dispatch("getFloors") await store.dispatch("getBrand") next() } } else { redirectGetToken(to,from) } } else { next() return } }) // 跳入路由后要对发送pvuv router.afterEach((to) => { let postParams = { type: "router", target: to.name, parameter: to.path, } const data = { plazaId: store.getters["plazaId"], } getPvUv(data, postParams) .then((res) => { console.log("pvuv", res) }) .catch((res) => { console.log("error", res) }) }) // 重定向获取token function redirectGetToken (to) { let lastRoute = { path: to.path, params: to.params, query: to.query, } store.commit("SETLASTROUTER", lastRoute) let ssoServer = "http://oauth.wanda-dev.cn" if (process.env.NODE_ENV == "wanda_build") { ssoServer = "http://oauth.wanda.cn" } let systemcode = "CAD156", signal = new Date().getTime(), version = "1.0.0"; // 获取token前需要保存跳转前路径 if (!ignore.includes(to.path)) { let previewUrl = to.query.isPreview ? to.query.isPreview : ''; let plazaId = to.query.plazaId ?to.query.plazaId:'' if (previewUrl) { sessionStorage.setItem("SETISPREVIEW", previewUrl) store.commit('SETISPREVIEW', previewUrl) } // else{ // sessionStorage.setItem("SETISPREVIEW", 'false') // store.commit('SETISPREVIEW', 'false') // } if (plazaId) { localStorage.setItem('PLAZAID', plazaId) store.commit('STOREPLAZAID', plazaId) } sessionStorage.setItem("TOURL", to.path) } else { // 如果重定向前为404则跳入/ sessionStorage.setItem("TOURL", '/') } window.location.href = `${ssoServer}/login?systemcode=${systemcode}&signal=${signal}&version=${version}` } export default router