25 lines
758 B
TypeScript
25 lines
758 B
TypeScript
import { getSiteInfo } from '@/api/cms/cmsWebsite'
|
||
import { useMenu, mapNavItem } from '@/composables/useMenu'
|
||
import type { CmsNavigation } from '@/api/cms/cmsNavigation/model'
|
||
|
||
/**
|
||
* 应用启动时获取站点信息(含导航菜单),写入 useMenu() 状态
|
||
*/
|
||
export default defineNuxtPlugin(async () => {
|
||
const menu = useMenu()
|
||
|
||
// 如果已有数据,跳过
|
||
if (menu.value.length) return
|
||
|
||
try {
|
||
const data = await getSiteInfo()
|
||
// getSiteInfo 返回 CmsWebsite,其中 topNavs 是 CmsNavigation[]
|
||
const topNavs = (data as any)?.topNavs as CmsNavigation[] | undefined
|
||
if (topNavs?.length) {
|
||
menu.value = mapNavItem(topNavs)
|
||
}
|
||
} catch (e) {
|
||
console.warn('[fetch-menu] 获取导航菜单失败', e)
|
||
}
|
||
})
|