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: "", //登录不显示菜单栏和导航栏,点击进入测试的时候显示 showMenuFlag: JSON.parse(localStorage.getItem("showMenuFlag")), }), 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), //是否显示菜单和导航栏 showMenuFlagGet: (state) => state.showMenuFlag, }, 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; }, //重置权限 async resetAuthStore() { this.showMenuFlag=false; localStorage.removeItem("showMenuFlag"); }, //修改判断菜单栏/导航栏显示条件 async setShowMenu() { this.showMenuFlag = true; localStorage.setItem("showMenuFlag", true); }, //更改模式 async changeModel(){ this.showMenuFlag=!this.showMenuFlag; if(this.showMenuFlag){ localStorage.setItem("showMenuFlag", true); }else{ localStorage.removeItem("showMenuFlag"); } } }, });