46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
|
|
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;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|