root 3 лет назад
Родитель
Сommit
f7b796215b

+ 28 - 1
src/App.vue

@@ -5,7 +5,34 @@
 </template>
 
 <script>
+import store from './store'
+
 export default {
-  name: 'App'
+  name: 'App',
+  created() {
+    this.refresh()
+  },
+  methods:{
+    refresh() {
+      if (localStorage.getItem("MenuPrmStore")) {
+        store.commit('permission/SET_ROUTES',JSON.parse(localStorage.getItem("MenuPrmStore")))
+      }
+      
+      if (localStorage.getItem("roleList")) {
+        store.commit('user/SET_ROLES',JSON.parse(localStorage.getItem("roleList")))
+      }
+
+      window.addEventListener("beforeunload", () => {
+        localStorage.setItem(
+          "MenuPrmStore",
+          JSON.stringify(store.state.permission.addRoutes)
+        );
+        localStorage.setItem(
+          "roleList",
+          JSON.stringify(store.state.user.roles)
+        );
+      });
+    }
+  }
 }
 </script>

+ 10 - 7
src/permission.js

@@ -1,4 +1,4 @@
-import router from './router'
+import router, { selfAddRoutes } from './router'
 import store from './store'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
@@ -28,27 +28,30 @@ router.beforeEach(async(to, from, next) => {
     } else {
       // determine whether the user has obtained his permission roles through getInfo
       const hasRoles = store.getters.roles && store.getters.roles.length > 0
+      console.log('ssss', hasRoles)
       if (hasRoles) {
         next()
       } else {
         try {
           // get user info
           // note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
-          const { roles } = await store.dispatch('user/getInfo')
-
+          // const { roles } = await store.dispatch('user/getInfo')
+          const { roles } = ['admin'];
           // generate accessible routes map based on roles
           const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
-
           // dynamically add accessible routes
-          router.addRoutes(accessRoutes)
+          
+          // router.addRoutes(accessRoutes)
+          selfAddRoutes(accessRoutes)
 
           // hack method to ensure that addRoutes is complete
           // set the replace: true, so the navigation will not leave a history record
           next({ ...to, replace: true })
         } catch (error) {
+          console.log('------>', error, '<------')
           // remove token and go to login page to re-login
           await store.dispatch('user/resetToken')
-          Message.error(error || 'Has Error')
+          // Message.error(error || 'Has Error')
           next(`/login?redirect=${to.path}`)
           NProgress.done()
         }
@@ -56,7 +59,7 @@ router.beforeEach(async(to, from, next) => {
     }
   } else {
     /* has no token*/
-
+alert('no token')
     if (whiteList.indexOf(to.path) !== -1) {
       // in the free login whitelist, go directly
       next()

+ 7 - 1
src/router/index.js

@@ -404,7 +404,7 @@ export const asyncRoutes = [
 const createRouter = () => new Router({
   // mode: 'history', // require service support
   scrollBehavior: () => ({ y: 0 }),
-  routes: constantRoutes
+  routes: constantRoutes.concat(asyncRoutes)
 })
 
 const router = createRouter()
@@ -415,4 +415,10 @@ export function resetRouter() {
   router.matcher = newRouter.matcher // reset router
 }
 
+export function selfAddRoutes(params) {
+  const newRouter = createRouter()
+  router.matcher = newRouter.matcher
+  router.addRoutes(params)
+}
+
 export default router

+ 18 - 5
src/store/modules/permission.js

@@ -46,21 +46,34 @@ const mutations = {
   }
 }
 
+// 系统使用版
 const actions = {
   generateRoutes({ commit }, roles) {
     return new Promise(resolve => {
       let accessedRoutes
-      if (roles.includes('admin')) {
-        accessedRoutes = asyncRoutes || []
-      } else {
-        accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
-      }
+      roles = ['admin']
+      accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
       commit('SET_ROUTES', accessedRoutes)
       resolve(accessedRoutes)
     })
   }
 }
 
+// const actions = {
+//   generateRoutes({ commit }, roles) {
+//     return new Promise(resolve => {
+//       let accessedRoutes
+//       if (roles.includes('admin')) {
+//         accessedRoutes = asyncRoutes || []
+//       } else {
+//         accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
+//       }
+//       commit('SET_ROUTES', accessedRoutes)
+//       resolve(accessedRoutes)
+//     })
+//   }
+// }
+
 export default {
   namespaced: true,
   state,

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

@@ -58,6 +58,10 @@ const actions = {
         updateLoginAllInfo(response.data)
         commit('SET_TOKEN', response.data.accessToken)
         setToken(response.data.accessToken)
+        commit('SET_ROLES', ['admin'])
+        commit('SET_NAME', 'userName')
+        commit('SET_AVATAR', 'avatar')
+        commit('SET_INTRODUCTION', 'introduction')
         resolve()
       }).catch(error => {
         localClear()
@@ -172,10 +176,20 @@ const actions = {
     return new Promise(resolve => {
       commit('SET_TOKEN', '')
       commit('SET_ROLES', [])
+      localClear()
       removeToken()
       resolve()
     })
   },
+  // // remove token
+  // resetToken({ commit }) {
+  //   return new Promise(resolve => {
+  //     commit('SET_TOKEN', '')
+  //     commit('SET_ROLES', [])
+  //     removeToken()
+  //     resolve()
+  //   })
+  // },
 
   // dynamically modify permissions
   async changeRoles({ commit, dispatch }, role) {

+ 11 - 11
src/utils/localUserInfo.js

@@ -1,6 +1,17 @@
 import tool from './tool'
 import router from '@/router'
 
+export function refreshToken (...arg) {
+  if (arg.length === 0) {
+    return localStorage.getItem('refreshToken')
+  }
+  if (arg[0] === '') {
+    localStorage.removeItem('refreshToken')
+    return
+  }
+  localStorage.setItem('refreshToken', arg[0])
+}
+
 export function accessToken (...arg) {
   if (arg.length === 0) {
     return localStorage.getItem('accessToken')
@@ -34,17 +45,6 @@ export function accessTokenExpiresIn (...arg) {
   localStorage.setItem('accessTokenExpiresIn', arg[0])
 }
 
-export function refreshToken (...arg) {
-  if (arg.length === 0) {
-    return localStorage.getItem('refreshToken')
-  }
-  if (arg[0] === '') {
-    localStorage.removeItem('refreshToken')
-    return
-  }
-  localStorage.setItem('refreshToken', arg[0])
-}
-
 export function refreshTokenUpdateAt (...arg) {
   if (arg.length === 0) {
     return localStorage.getItem('refreshTokenUpdateAt')

+ 9 - 1
src/views/dashboard/index.vue

@@ -8,6 +8,7 @@
 import { mapGetters } from 'vuex'
 import adminDashboard from './admin'
 import editorDashboard from './editor'
+import store from '../../store'
 
 export default {
   name: 'Dashboard',
@@ -19,10 +20,17 @@ export default {
   },
   computed: {
     ...mapGetters([
-      'roles'
+      'roles',
+      'permission_routes'
     ])
   },
   created() {
+    let aa = store.getters.roles
+    console.log('first--->', aa)
+    console.log('11111111111111')
+    console.log('222222', this.roles)
+    console.log(this.permission_routes,3333)
+    // console.log(this.roles)
     if (!this.roles.includes('admin')) {
       this.currentRole = 'editorDashboard'
     }

+ 1 - 1
vue.config.js

@@ -38,7 +38,7 @@ module.exports = {
     },
     proxy: {
       [process.env.VUE_APP_BASE_API]:{
-        target:"http://172.24.191.210:8868",
+        target:"http://192.168.162.127:8868",
         changeOrigin:true,
         pathRewrite:{
           ["^" + process.env.VUE_APP_BASE_API] : ""