fix: menu and routing
This commit is contained in:
@@ -49,6 +49,42 @@ const router = createRouter({
|
||||
],
|
||||
})
|
||||
|
||||
const viewModules = import.meta.glob('/src/views/**/*.vue')
|
||||
const componentModules = import.meta.glob('/src/components/**/*.vue')
|
||||
|
||||
async function setRoutes() {
|
||||
const routes = await getRoutes()
|
||||
|
||||
for (const item of routes) {
|
||||
const componentName = item.component
|
||||
const [, folder] = componentName.split('/')
|
||||
const componentPath = `/src${componentName}`
|
||||
console.log(componentPath);
|
||||
|
||||
|
||||
let modules =
|
||||
folder === 'views' ? viewModules : componentModules
|
||||
|
||||
const importer = modules[componentPath]
|
||||
|
||||
if (!importer) {
|
||||
console.error('Component not found:', componentPath)
|
||||
continue
|
||||
}
|
||||
|
||||
const importedComponent = (await importer()).default
|
||||
|
||||
router.addRoute('locale', {
|
||||
path: item.path,
|
||||
component: importedComponent,
|
||||
name: item.name,
|
||||
meta: item.meta ? JSON.parse(item.meta) : {}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
await setRoutes()
|
||||
|
||||
router.beforeEach((to, from) => {
|
||||
const locale = to.params.locale as string
|
||||
const localeLang = langs.find((x) => x.iso_code === locale)
|
||||
|
||||
@@ -3,9 +3,7 @@ import type { MenuItem, Route } from "@/types/menu";
|
||||
|
||||
export const getMenu = async () => {
|
||||
const resp = await useFetchJson<MenuItem>('/api/v1/restricted/menu/get-menu');
|
||||
|
||||
return resp.items.children
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -13,5 +11,4 @@ export const getRoutes = async () => {
|
||||
const resp = await useFetchJson<Route[]>('/api/v1/public/menu/get-routes');
|
||||
|
||||
return resp.items
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user