2024-04-11 00:15:57 +08:00
|
|
|
|
import { defineStore } from "pinia";
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 路由列表
|
2024-04-13 15:54:07 +08:00
|
|
|
|
* @methods setRouteTree 设置路由树
|
|
|
|
|
|
* @methods setRoutesList 设置路由一维数据
|
2024-04-18 00:24:07 +08:00
|
|
|
|
* @methods setRouteNames 设置路由名称集合
|
2024-04-11 00:15:57 +08:00
|
|
|
|
*/
|
|
|
|
|
|
export const useRoutesListStore = defineStore("routeList", {
|
|
|
|
|
|
state: (): any => ({
|
2024-04-20 16:54:12 +08:00
|
|
|
|
routeTree: [], // 有访问权限的路由树
|
|
|
|
|
|
routeList: [], // 有访问权限的一维路由数组
|
|
|
|
|
|
routeNames: [], // 有访问权限的路由名称
|
|
|
|
|
|
tabsList: [], // 标签页数据
|
2024-04-18 13:01:43 +08:00
|
|
|
|
currentRoute: {} // 当前路由
|
2024-04-11 00:15:57 +08:00
|
|
|
|
}),
|
|
|
|
|
|
actions: {
|
2024-04-18 13:01:43 +08:00
|
|
|
|
setRouteTree(data: Menu.MenuOptions) {
|
2024-04-12 00:31:21 +08:00
|
|
|
|
this.routeTree = data;
|
|
|
|
|
|
},
|
2024-04-20 16:54:12 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 设置有访问权限的一维路由数组
|
|
|
|
|
|
* @param {Array} data 一维路由数组
|
|
|
|
|
|
*/
|
2024-04-13 15:54:07 +08:00
|
|
|
|
setRouteList(data: any) {
|
|
|
|
|
|
this.routeList = data;
|
2024-04-11 00:15:57 +08:00
|
|
|
|
},
|
2024-04-20 16:54:12 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 设置所有可缓存路由的路由名
|
|
|
|
|
|
* @param {Array} data 路由名数组
|
|
|
|
|
|
*/
|
2024-04-18 00:24:07 +08:00
|
|
|
|
setRouteNames(data: Array<string>) {
|
2024-04-11 00:15:57 +08:00
|
|
|
|
this.routeNames = data;
|
2024-04-18 00:24:07 +08:00
|
|
|
|
},
|
2024-04-20 16:54:12 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 添加tabs标签页
|
|
|
|
|
|
* @param {object} data 当前tabs路由
|
|
|
|
|
|
*/
|
|
|
|
|
|
setTabs(data: Menu.MenuOptions) {
|
|
|
|
|
|
// 当前路由在tags中是否存在,不存在则缓存
|
|
|
|
|
|
let isExist = this.tabsList.some((item: Menu.MenuOptions) => item.name === data.name);
|
|
|
|
|
|
if (isExist) return;
|
|
|
|
|
|
this.tabsList.push(data);
|
2024-04-18 13:01:43 +08:00
|
|
|
|
},
|
2024-04-20 16:54:12 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* 设置系统内的当前路由数据
|
|
|
|
|
|
* @param {object} data 当前路由
|
|
|
|
|
|
*/
|
|
|
|
|
|
setCurrentRoute(data: Menu.MenuOptions) {
|
|
|
|
|
|
if (this.currentRoute.name && data.name === this.currentRoute.name) return;
|
2024-04-18 13:01:43 +08:00
|
|
|
|
this.currentRoute = data;
|
2024-04-20 16:54:12 +08:00
|
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 删除tabs页的指定路由
|
|
|
|
|
|
* @param {string} key 路由name
|
|
|
|
|
|
*/
|
|
|
|
|
|
removeTabsList(key: string) {
|
|
|
|
|
|
const index = this.tabsList.findIndex((item: Menu.MenuOptions) => item.name === key);
|
|
|
|
|
|
if (index === -1) return;
|
|
|
|
|
|
this.tabsList.splice(index, 1);
|
2024-04-11 00:15:57 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|