Files
art-design/src/api/menuApi.ts
T

44 lines
1.5 KiB
TypeScript
Raw Normal View History

2025-07-21 11:16:16 +08:00
import { menuDataToRouter } from '@/router/utils/menuToRouter'
import { AppRouteRecord } from '@/types/router'
import { useUserStore } from '@/store/modules/user'
2025-08-15 16:37:41 +08:00
import { UserService } from '@/api/usersApi'
2025-07-21 11:16:16 +08:00
interface MenuResponse {
menuList: AppRouteRecord[]
}
// 菜单接口
export const menuService = {
async getMenuList(delay = 300): Promise<MenuResponse> {
try {
const userStore = useUserStore()
// 验证用户登录状态
if (!userStore.isLogin) {
throw new Error('用户未登录')
}
2025-08-15 16:37:41 +08:00
const { menu } = await UserService.getMenuList()
const menuData = menu
// const userStore = useUserStore()
2025-07-21 11:16:16 +08:00
// 模拟接口返回的菜单数据
// 验证菜单数据
if (!menuData || !Array.isArray(menuData) || menuData.length === 0) {
ElMessage.error('暂无系统菜单权限')
return { menuList: [] }
}
2025-08-15 16:37:41 +08:00
console.log('menuData', menuData)
2025-07-21 11:16:16 +08:00
// 处理菜单数据
2025-08-15 16:37:41 +08:00
const menuList = menuData.map((route: any) => menuDataToRouter(route))
2025-07-21 11:16:16 +08:00
// 验证处理后的菜单列表
if (!menuList || menuList.length === 0) {
ElMessage.error('菜单数据处理失败')
return { menuList: [] }
}
// 模拟接口延迟
await new Promise((resolve) => setTimeout(resolve, delay))
return { menuList }
} catch (error) {
console.error('获取菜单失败:', error)
throw error instanceof Error ? error : new Error('获取菜单失败')
}
}
}