perf: 同步完整版分支代码

This commit is contained in:
xiaoxian521
2021-12-14 10:51:07 +08:00
parent 8381410ff4
commit eeb1d378f2
25 changed files with 535 additions and 271 deletions

View File

@@ -1,5 +1,6 @@
import { defineStore } from "pinia";
import { store } from "/@/store";
import { isEqual } from "lodash-es";
import { storageLocal } from "/@/utils/storage";
import { multiType, positionType } from "./types";
@@ -54,12 +55,18 @@ export const useMultiTagsStore = defineStore({
case "push":
{
const tagVal = value as multiType;
// 判断tag是否已存在:
// 判断tag是否已存在
const tagHasExits = this.multiTags.some(tag => {
return tag.path === tagVal?.path;
});
if (tagHasExits) return;
// 判断tag中的query键值是否相等
const tagQueryHasExits = this.multiTags.some(tag => {
return isEqual(tag.query, tagVal.query);
});
if (tagHasExits && tagQueryHasExits) return;
const meta = tagVal?.meta;
const dynamicLevel = meta?.dynamicLevel ?? -1;
if (dynamicLevel > 0) {
@@ -85,10 +92,8 @@ export const useMultiTagsStore = defineStore({
this.multiTags.splice(position?.startIndex, position?.length);
this.tagsCache(this.multiTags);
return this.multiTags;
break;
case "slice":
return this.multiTags.slice(-1);
break;
}
}
}

View File

@@ -1,28 +1,32 @@
import { defineStore } from "pinia";
import { store } from "/@/store";
import { cacheType } from "./types";
import { constantRoutesArr, ascending, filterTree } from "/@/router/index";
import { RouteConfigs } from "/@/layout/types";
import { constantMenus } from "/@/router/modules";
import { ascending, filterTree } from "/@/router/utils";
export const usePermissionStore = defineStore({
id: "pure-permission",
state: () => ({
// 静态路由
constantRoutes: constantRoutesArr,
wholeRoutes: [],
// 静态路由生成的菜单
constantMenus,
// 整体路由生成的菜单(静态、动态)
wholeMenus: [],
buttonAuth: [],
// 缓存页面keepAlive
cachePageList: []
}),
actions: {
// 获取异步路由菜单
asyncActionRoutes(routes) {
if (this.wholeRoutes.length > 0) return;
this.wholeRoutes = filterTree(
ascending(this.constantRoutes.concat(routes))
if (this.wholeMenus.length > 0) return;
this.wholeMenus = filterTree(
ascending(this.constantMenus.concat(routes))
);
const getButtonAuth = (arrRoutes: Array<string>) => {
const getButtonAuth = (arrRoutes: Array<RouteConfigs>) => {
if (!arrRoutes || !arrRoutes.length) return;
arrRoutes.forEach((v: any) => {
arrRoutes.forEach((v: RouteConfigs) => {
if (v.meta && v.meta.authority) {
this.buttonAuth.push(...v.meta.authority);
}
@@ -32,7 +36,7 @@ export const usePermissionStore = defineStore({
});
};
getButtonAuth(this.wholeRoutes);
getButtonAuth(this.wholeMenus);
},
async changeSetting(routes) {
await this.asyncActionRoutes(routes);

View File

@@ -25,6 +25,7 @@ export type multiType = {
path: string;
parentPath: string;
name: string;
query: object;
meta: any;
};