Files
pqs-9100_client/frontend/src/stores/modules/auth.ts

46 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-08-22 11:27:06 +08:00
import {defineStore} from "pinia";
import {AuthState} from "@/stores/interface";
import {getAuthButtonListApi, getAuthMenuListApi} from "@/api/modules/login";
import {getFlatMenuList, getShowMenuList, getAllBreadcrumbList} from "@/utils";
import {AUTH_STORE_KEY} from "@/stores/constant";
export const useAuthStore = defineStore({
id: AUTH_STORE_KEY,
state: (): AuthState => ({
// 按钮权限列表
authButtonList: {},
// 菜单权限列表
authMenuList: [],
// 当前页面的 router name用来做按钮权限筛选
routeName: ""
}),
getters: {
// 按钮权限列表
authButtonListGet: state => state.authButtonList,
// 菜单权限列表 ==> 这里的菜单没有经过任何处理
authMenuListGet: state => state.authMenuList,
// 菜单权限列表 ==> 左侧菜单栏渲染,需要剔除 isHide == true
showMenuListGet: state => getShowMenuList(state.authMenuList),
// 菜单权限列表 ==> 扁平化之后的一维数组菜单,主要用来添加动态路由
flatMenuListGet: state => getFlatMenuList(state.authMenuList),
// 递归处理后的所有面包屑导航列表
breadcrumbListGet: state => getAllBreadcrumbList(state.authMenuList)
},
actions: {
// Get AuthButtonList
async getAuthButtonList() {
const {data} = await getAuthButtonListApi();
this.authButtonList = data;
},
// Get AuthMenuList
async getAuthMenuList() {
const {data} = await getAuthMenuListApi();
this.authMenuList = data;
},
// Set RouteName
async setRouteName(name: string) {
this.routeName = name;
}
}
});