|
@@ -3,7 +3,7 @@ import { cloneDeep } from 'lodash';
|
|
import { getMenus, logout, login } from '@/api/user';
|
|
import { getMenus, logout, login } from '@/api/user';
|
|
import router from '@/router/index';
|
|
import router from '@/router/index';
|
|
import asyncRoutes from '@/router/asyncRoutes';
|
|
import asyncRoutes from '@/router/asyncRoutes';
|
|
-import { getTreeList, local } from '@/utils/tool';
|
|
|
|
|
|
+import { getTreeList, local, session, clear } from '@/utils/tool';
|
|
import { whiteMenuList } from '@/router/asyncRoutes';
|
|
import { whiteMenuList } from '@/router/asyncRoutes';
|
|
// 路由扁平化
|
|
// 路由扁平化
|
|
const flatAsyncRoutes = (routes, breadcrumb = []) => {
|
|
const flatAsyncRoutes = (routes, breadcrumb = []) => {
|
|
@@ -38,7 +38,8 @@ const findRoutersItemByName = (name, arr = asyncRoutes, finds = []) => {
|
|
for (let i = 0; i < arr.length; i++) {
|
|
for (let i = 0; i < arr.length; i++) {
|
|
const item = arr[i];
|
|
const item = arr[i];
|
|
//asyncRoutes里,当有非菜单的路由时,其meta里会有bind字段定义,也要考虑进来
|
|
//asyncRoutes里,当有非菜单的路由时,其meta里会有bind字段定义,也要考虑进来
|
|
- if (item.name === name || item.meta?.bind === name) {
|
|
|
|
|
|
+ // if (item.name === name || item.meta?.bind === name) {
|
|
|
|
+ if (item.meta.alias === name || item.meta?.bind === name) {
|
|
finds.push(item);
|
|
finds.push(item);
|
|
}
|
|
}
|
|
if (item.children) {
|
|
if (item.children) {
|
|
@@ -51,7 +52,7 @@ const findRoutersItemByName = (name, arr = asyncRoutes, finds = []) => {
|
|
const filterAsyncRouter = (routerMap) => {
|
|
const filterAsyncRouter = (routerMap) => {
|
|
const accessedRouters = [];
|
|
const accessedRouters = [];
|
|
routerMap.forEach((item) => {
|
|
routerMap.forEach((item) => {
|
|
- const targets = findRoutersItemByName(item.name);
|
|
|
|
|
|
+ const targets = findRoutersItemByName(item.url);
|
|
if (targets.length) {
|
|
if (targets.length) {
|
|
targets.forEach((target) => {
|
|
targets.forEach((target) => {
|
|
const route = {
|
|
const route = {
|
|
@@ -72,9 +73,11 @@ const filterAsyncRouter = (routerMap) => {
|
|
};
|
|
};
|
|
|
|
|
|
const useUserStore = defineStore('user', {
|
|
const useUserStore = defineStore('user', {
|
|
- persist: true,
|
|
|
|
- storage: localStorage,
|
|
|
|
- paths: ['user'],
|
|
|
|
|
|
+ // persist: true,
|
|
|
|
+ persist: {
|
|
|
|
+ storage: sessionStorage,
|
|
|
|
+ paths: ['user'],
|
|
|
|
+ },
|
|
state: () => ({
|
|
state: () => ({
|
|
routers: undefined,
|
|
routers: undefined,
|
|
user: undefined,
|
|
user: undefined,
|
|
@@ -85,17 +88,17 @@ const useUserStore = defineStore('user', {
|
|
}),
|
|
}),
|
|
|
|
|
|
actions: {
|
|
actions: {
|
|
- setToken(token) {
|
|
|
|
- local.set(import.meta.env.VITE_APP_TOKEN_PREFIX, token);
|
|
|
|
- },
|
|
|
|
|
|
+ // setToken(token) {
|
|
|
|
+ // local.set(import.meta.env.VITE_APP_TOKEN_PREFIX, token);
|
|
|
|
+ // },
|
|
|
|
|
|
- getToken() {
|
|
|
|
- return local.get(import.meta.env.VITE_APP_TOKEN_PREFIX);
|
|
|
|
- },
|
|
|
|
|
|
+ // getToken() {
|
|
|
|
+ // return local.get(import.meta.env.VITE_APP_TOKEN_PREFIX);
|
|
|
|
+ // },
|
|
|
|
|
|
- clearToken() {
|
|
|
|
- local.remove(import.meta.env.VITE_APP_TOKEN_PREFIX);
|
|
|
|
- },
|
|
|
|
|
|
+ // clearToken() {
|
|
|
|
+ // local.remove(import.meta.env.VITE_APP_TOKEN_PREFIX);
|
|
|
|
+ // },
|
|
setState(data) {
|
|
setState(data) {
|
|
this.$patch(data);
|
|
this.$patch(data);
|
|
},
|
|
},
|
|
@@ -109,7 +112,7 @@ const useUserStore = defineStore('user', {
|
|
setCurPageModule(name) {
|
|
setCurPageModule(name) {
|
|
this.curPageModule = name;
|
|
this.curPageModule = name;
|
|
let item = this.menus.find((item) => item.name === name);
|
|
let item = this.menus.find((item) => item.name === name);
|
|
- this.moduleMenus = item.children;
|
|
|
|
|
|
+ this.moduleMenus = item?.children || [];
|
|
},
|
|
},
|
|
setHeaderMenus(menus) {
|
|
setHeaderMenus(menus) {
|
|
let newMenus = cloneDeep(menus);
|
|
let newMenus = cloneDeep(menus);
|
|
@@ -138,25 +141,23 @@ const useUserStore = defineStore('user', {
|
|
router.push({ name: 'Login' });
|
|
router.push({ name: 'Login' });
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- let allMenus = [...whiteMenuList, ...response];
|
|
|
|
|
|
+ let allMenus = [...whiteMenuList, ...(response.privileges || [])];
|
|
this.setMenu(allMenus);
|
|
this.setMenu(allMenus);
|
|
resolve(allMenus);
|
|
resolve(allMenus);
|
|
})
|
|
})
|
|
- .catch((_) => {
|
|
|
|
- this.clearToken();
|
|
|
|
|
|
+ .catch((error) => {
|
|
|
|
+ reject(error);
|
|
|
|
+ clear();
|
|
|
|
+ this.resetUserInfo();
|
|
router.push({ name: 'Login' });
|
|
router.push({ name: 'Login' });
|
|
});
|
|
});
|
|
- }).catch((error) => {
|
|
|
|
- this.clearToken();
|
|
|
|
- router.push({ name: 'Login' });
|
|
|
|
});
|
|
});
|
|
},
|
|
},
|
|
|
|
|
|
login(form) {
|
|
login(form) {
|
|
return login(form)
|
|
return login(form)
|
|
- .then((r) => {
|
|
|
|
- this.setToken(r.token);
|
|
|
|
- this.setInfo(r);
|
|
|
|
|
|
+ .then((userInfo) => {
|
|
|
|
+ this.setInfo(userInfo);
|
|
return true;
|
|
return true;
|
|
})
|
|
})
|
|
.catch((e) => {
|
|
.catch((e) => {
|
|
@@ -167,7 +168,8 @@ const useUserStore = defineStore('user', {
|
|
|
|
|
|
async logout() {
|
|
async logout() {
|
|
await logout();
|
|
await logout();
|
|
- this.clearToken();
|
|
|
|
|
|
+ // this.clearToken();
|
|
|
|
+ clear();
|
|
this.resetUserInfo();
|
|
this.resetUserInfo();
|
|
},
|
|
},
|
|
},
|
|
},
|