index.js 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. import Vue from "vue"
  2. import store from "@/store"
  3. import VueRouter from "vue-router"
  4. import {
  5. query
  6. } from "@/utils/query"
  7. import {
  8. getPvUv
  9. } from "@/api/public.js"
  10. Vue.use(VueRouter)
  11. const routes = [
  12. // {
  13. // path: '/',
  14. // redirect: '/home/overview', // 只有区域,及区域以上用户才能进入总部首页这一套
  15. // },
  16. {
  17. path: "/404",
  18. name: "404页面",
  19. component: () => import("../components/404"),
  20. },
  21. {
  22. path: "/group",
  23. name: "集团首页",
  24. component: () => import("../views/statistics/index"),
  25. },
  26. // home
  27. {
  28. path: "/home",
  29. name: "home",
  30. component: () => import("../views/index"),
  31. redirect: "/home/homepage",
  32. children: [{
  33. path: "homepage",
  34. name: "项目首页",
  35. component: () => import("../views/homepage"),
  36. redirect: "/home/overview",
  37. },
  38. //概览
  39. {
  40. path: "overview",
  41. name: "项目概览",
  42. component: () => import("../views/overview"),
  43. },
  44. // 楼层功能
  45. {
  46. path: "floorFunc",
  47. name: "楼层功能",
  48. component: () => import("../views/floorFunc"),
  49. },
  50. // 设备设施
  51. {
  52. path: "equipment",
  53. name: "设备设施",
  54. component: () => import("../views/equipment"),
  55. },
  56. // 其他功能
  57. {
  58. path: "other",
  59. name: "其他事项",
  60. component: () => import("../views/other"),
  61. },
  62. // 分析
  63. {
  64. path: "analysis",
  65. name: "分享报表",
  66. component: () => import("../views/analysis"),
  67. },
  68. //图例库管理
  69. {
  70. path: "legendLibrary",
  71. name: "图例管理",
  72. component: () => import("../views/legendLibrary"),
  73. },
  74. //图例绘制规则
  75. {
  76. path: "legendRules",
  77. name: "绘制规则",
  78. component: () => import("../views/legendRules"),
  79. },
  80. ],
  81. },
  82. ]
  83. const router = new VueRouter({
  84. mode: "history",
  85. base: process.env.BASE_URL,
  86. routes,
  87. })
  88. const ignore = ["/404"]
  89. router.beforeEach(async (to, from, next) => {
  90. console.log('to', from.path, to)
  91. // 取出刷新时的 ssoToken, 路由拦截时app.vue 生命周期还没有执行,store中还没有数据,
  92. let beforeunload = localStorage.getItem("beforeunload"),
  93. __token = null
  94. beforeunload && (__token = JSON.parse(beforeunload).ssoToken)
  95. if (!ignore.includes(to.path)) {
  96. //都是需要token检验的页面 首先优先获取路由上带的token
  97. let token = null
  98. if (to.query.token) {
  99. store.commit("SETSSOTOKEN", to.query.token) //存vuex
  100. sessionStorage.setItem("SSOTOKEN", to.query.token)
  101. token = to.query.token
  102. } else {
  103. // to.query.token ? to.query.token : store.getters['ssoToken'] ? store.getters['ssoToken'] : __token
  104. if (store.getters["ssoToken"]) {
  105. token = store.getters["ssoToken"]
  106. } else if (sessionStorage.getItem("SSOTOKEN")) {
  107. token = sessionStorage.getItem("SSOTOKEN")
  108. store.commit("SETSSOTOKEN", sessionStorage.getItem("SSOTOKEN")) //存vuex
  109. } else {
  110. let lastRoute = {
  111. path: to.path,
  112. params: to.params,
  113. query: to.query,
  114. }
  115. store.commit("SETLASTROUTER", lastRoute)
  116. let ssoServer = "http://oauth.wanda-dev.cn"
  117. if (process.env.NODE_ENV == "wanda_build") {
  118. ssoServer = "http://oauth.wanda.cn"
  119. }
  120. let systemcode = "CAD156",
  121. signal = new Date().getTime(),
  122. version = "1.0.0"
  123. window.location.href = `${ssoServer}/login?systemcode=${systemcode}&signal=${signal}&version=${version}`
  124. }
  125. }
  126. if (token) {
  127. if (to.path == "/") {
  128. next("/group")
  129. }
  130. if (to.path == "/group" || to.path == "/home/homepage") {
  131. if (store.state.accessLevel == -1) {
  132. await store.dispatch("getUserInfo", router)
  133. console.log('getUserInfo', 4)
  134. await store.dispatch("getBrand")
  135. // await store.dispatch('getFact')
  136. }
  137. }
  138. console.log("token", token)
  139. await store.dispatch("getFloors")
  140. await store.dispatch("getBrand")
  141. // 如果在跳转获取token之前保存了指定的路径,则后去token后需要跳转到相关页面
  142. if (sessionStorage.getItem("TOURL")) {
  143. // 如果去的地址等于缓存的地址
  144. if (sessionStorage.getItem("TOURL") == to.path) {
  145. sessionStorage.setItem("TOURL", '')
  146. next()
  147. } else {
  148. next(sessionStorage.getItem("TOURL"))
  149. }
  150. } else {
  151. next()
  152. }
  153. } else {
  154. let lastRoute = {
  155. path: to.path,
  156. params: to.params,
  157. query: to.query,
  158. }
  159. store.commit("SETLASTROUTER", lastRoute)
  160. let ssoServer = "http://oauth.wanda-dev.cn"
  161. if (process.env.NODE_ENV == "wanda_build") {
  162. ssoServer = "http://oauth.wanda.cn"
  163. }
  164. let systemcode = "CAD156",
  165. signal = new Date().getTime(),
  166. version = "1.0.0";
  167. // 获取token前需要保存跳转前路径
  168. if (!ignore.includes(to.path)) {
  169. sessionStorage.setItem("TOURL", to.path)
  170. } else {
  171. // 如果重定向前为404则跳入/
  172. sessionStorage.setItem("TOURL", '/')
  173. }
  174. window.location.href = `${ssoServer}/login?systemcode=${systemcode}&signal=${signal}&version=${version}`
  175. }
  176. } else {
  177. next()
  178. return
  179. }
  180. })
  181. // 跳入路由后要对发送pvuv
  182. router.afterEach((to) => {
  183. let postParams = {
  184. type: "router",
  185. target: to.name,
  186. parameter: to.path,
  187. }
  188. const data = {
  189. plazaId: store.getters["plazaId"],
  190. }
  191. getPvUv(data, postParams)
  192. .then((res) => {
  193. console.log("pvuv", res)
  194. })
  195. .catch((res) => {
  196. console.log("error", res)
  197. })
  198. })
  199. export default router