smallwei пре 5 година
родитељ
комит
6c6497e733
2 измењених фајлова са 27 додато и 16 уклоњено
  1. 24 16
      src/router/router.js
  2. 3 0
      src/store/modules/user.js

+ 24 - 16
src/router/router.js

@@ -5,23 +5,31 @@ import ViewsRouter from './views/'
 import AvueRouter from './avue-router'
 import Store from '../store/'
 Vue.use(VueRouter)
-const Router = new VueRouter({
-  scrollBehavior(to, from, savedPosition) {
-    if (savedPosition) {
-      return savedPosition
-    } else {
-      if (from.meta.keepAlive) {
-        from.meta.savedPosition = document.body.scrollTop
+//创建路由
+const createRouter = () => {
+  return new VueRouter({
+    scrollBehavior (to, from, savedPosition) {
+      if (savedPosition) {
+        return savedPosition
+      } else {
+        if (from.meta.keepAlive) {
+          from.meta.savedPosition = document.body.scrollTop
+        }
+        return {
+          x: 0,
+          y: to.meta.savedPosition || 0
+        }
       }
-      return {
-        x: 0,
-        y: to.meta.savedPosition || 0
-      }
-    }
-  },
-  routes: [].concat([])
-})
+    },
+    routes: [...PageRouter, ...ViewsRouter]
+  })
+}
+const Router = createRouter()
 AvueRouter.install(Router, Store)
 Router.$avueRouter.formatRoutes(Store.state.user.menu, true)
-Router.addRoutes([...PageRouter, ...ViewsRouter])
+// 重置路由
+export function resetRouter () {
+  const newRouter = createRouter()
+  Router.matcher = newRouter.matcher // reset router
+}
 export default Router

+ 3 - 0
src/store/modules/user.js

@@ -3,6 +3,7 @@ import { isURL, validatenull } from '@/util/validate'
 import { getUserInfo, loginByMobile, loginBySocial, loginByUsername, logout, refreshToken } from '@/api/login'
 import { deepClone, encryption } from '@/util/util'
 import webiste from '@/const/website'
+import { resetRouter } from '@/router/router'
 import { GetMenu } from '@/api/admin/menu'
 
 function addPath (ele, first) {
@@ -129,6 +130,7 @@ const user = {
     LogOut ({ commit }) {
       return new Promise((resolve, reject) => {
         logout().then(() => {
+          resetRouter();
           commit('SET_MENU', [])
           commit('SET_PERMISSIONS', [])
           commit('SET_USER_INFO', {})
@@ -147,6 +149,7 @@ const user = {
     // 注销session
     FedLogOut ({ commit }) {
       return new Promise(resolve => {
+        resetRouter();
         commit('SET_MENU', [])
         commit('SET_PERMISSIONS', [])
         commit('SET_USER_INFO', {})