| 12345678910111213141516171819202122232425262728293031323334 |
- import { defineStore } from 'pinia'
- import type { MenuGroupItem } from '@/types/user'
- import { session } from '@/utils/session'
- /** 预留:后端 user.display 驱动菜单;当前侧栏使用 `router/localMenu` 静态配置。 */
- export const usePermissionStore = defineStore('permission', {
- state: () => ({
- menus: [] as MenuGroupItem[],
- }),
- actions: {
- initFromUserDisplay(display: MenuGroupItem[] | undefined | null): void {
- this.menus = display ?? []
- if (this.menus.length) {
- session.Set('menus', JSON.stringify(this.menus), true)
- }
- },
- hydrateFromSession(): void {
- const raw = session.Get('menus', true)
- if (raw) {
- try {
- this.menus = JSON.parse(raw) as MenuGroupItem[]
- } catch {
- this.menus = []
- }
- }
- },
- clear(): void {
- this.menus = []
- session.Del('menus')
- },
- },
- })
|