修复菜单消失

This commit is contained in:
super
2026-06-10 17:52:58 +08:00
parent c3d43aa26a
commit c9efdf8b0e
6 changed files with 193 additions and 26 deletions

View File

@@ -4,7 +4,9 @@ export interface PermissionMenuItem {
id: number | string
name?: string
column_key?: string
columnKey?: string
route_path?: string
routePath?: string
menu_type?: string
sort_order?: number
created_at?: string
@@ -12,8 +14,10 @@ export interface PermissionMenuItem {
interface PermissionMenuResponse {
success: boolean
data?: PermissionMenuItem[]
items?: PermissionMenuItem[]
error?: string
message?: string
}
function getCurrentUserId() {
@@ -29,6 +33,23 @@ function getAppPermissionCacheKey(uid: number) {
return `app_column_permissions:${String(uid)}`
}
function getAuthToken() {
return typeof window === 'undefined' ? '' : window.localStorage.getItem('aiimage_auth_token') || ''
}
function normalizeColumnKeys(items: PermissionMenuItem[] | undefined) {
const keys = new Set<string>()
for (const item of items || []) {
for (const value of [item.column_key, item.columnKey, item.route_path, item.routePath]) {
const key = String(value || '').trim().toLowerCase()
if (key) {
keys.add(key)
}
}
}
return Array.from(keys)
}
export async function getCurrentUserAppColumnKeys() {
const uid = getCurrentUserId()
const cacheKey = getAppPermissionCacheKey(uid)
@@ -36,28 +57,35 @@ export async function getCurrentUserAppColumnKeys() {
try {
const cachedItems = JSON.parse(window.localStorage.getItem(cacheKey) || 'null') as PermissionMenuItem[] | null
if (Array.isArray(cachedItems)) {
return cachedItems
.map((item) => String(item.column_key || '').trim().toLowerCase())
.filter(Boolean)
const cachedKeys = normalizeColumnKeys(cachedItems)
if (cachedKeys.length) {
return cachedKeys
}
}
} catch (_error) {}
const headers: Record<string, string> = {}
const token = getAuthToken()
if (token) {
headers.Authorization = `Bearer ${token}`
}
const res = await requestGetJson<PermissionMenuResponse>(
`/api/admin/user/${encodeURIComponent(String(uid))}/column-permissions`,
`/newApi/api/admin/permission-users/${encodeURIComponent(String(uid))}/column-permissions`,
{
params: { menu_type: 'app' },
params: { menuType: 'app' },
headers,
},
)
if (!res.success) {
throw new Error(res.error || '获取菜单权限失败')
throw new Error(res.error || res.message || '获取菜单权限失败')
}
const items = res.data || res.items || []
try {
window.localStorage.setItem(cacheKey, JSON.stringify(res.items || []))
window.localStorage.setItem(cacheKey, JSON.stringify(items))
} catch (_error) {}
return (res.items || [])
.map((item) => String(item.column_key || '').trim().toLowerCase())
.filter(Boolean)
return normalizeColumnKeys(items)
}