123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239 |
- 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
|