feat: 添加第二布局页面,更新路由配置以支持新布局
This commit is contained in:
@ -1,14 +1,12 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { getRoutes } from '@/plugins/router';
|
||||||
import type { MenuItem } from 'primevue/menuitem';
|
import type { MenuItem } from 'primevue/menuitem';
|
||||||
import type { PanelMenuProps } from 'primevue/panelmenu';
|
import type { PanelMenuProps } from 'primevue/panelmenu';
|
||||||
import { createGetRoutes } from 'virtual:meta-layouts';
|
|
||||||
import type { RouteRecordRaw } from 'vue-router/auto';
|
import type { RouteRecordRaw } from 'vue-router/auto';
|
||||||
import { routes } from 'vue-router/auto-routes';
|
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
|
|
||||||
const getRoutes = createGetRoutes(router);
|
|
||||||
|
|
||||||
// 递归处理路由生成菜单项
|
// 递归处理路由生成菜单项
|
||||||
const _generateMenuItems = (routes: RouteRecordRaw[]): PanelMenuProps['model'] => {
|
const _generateMenuItems = (routes: RouteRecordRaw[]): PanelMenuProps['model'] => {
|
||||||
return [];
|
return [];
|
||||||
|
11
src/pages/use-second-layout-1/index.page.vue
Normal file
11
src/pages/use-second-layout-1/index.page.vue
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<template>
|
||||||
|
<div>src/pages/use-second-layout-1/index.page.vue</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts"></script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
|
<route lang="yaml">
|
||||||
|
meta:
|
||||||
|
layout: second
|
||||||
|
</route>
|
11
src/pages/use-second-layout-2.page.vue
Normal file
11
src/pages/use-second-layout-2.page.vue
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<template>
|
||||||
|
<div>src/pages/use-second-layout-2.page.vue</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts"></script>
|
||||||
|
|
||||||
|
<style scoped></style>
|
||||||
|
<route lang="yaml">
|
||||||
|
meta:
|
||||||
|
layout: second
|
||||||
|
</route>
|
@ -1,6 +1,6 @@
|
|||||||
import { DataLoaderPlugin } from 'unplugin-vue-router/data-loaders';
|
import { DataLoaderPlugin } from 'unplugin-vue-router/data-loaders';
|
||||||
import { createGetRoutes, setupLayouts } from 'virtual:meta-layouts';
|
import { createGetRoutes, setupLayouts } from 'virtual:meta-layouts';
|
||||||
// import { setupLayouts, createGetRoutes } from 'virtual:generated-layouts';
|
// import { createGetRoutes, setupLayouts } from 'virtual:generated-layouts';
|
||||||
import { createRouter, createWebHistory } from 'vue-router/auto';
|
import { createRouter, createWebHistory } from 'vue-router/auto';
|
||||||
import { handleHotUpdate, routes } from 'vue-router/auto-routes';
|
import { handleHotUpdate, routes } from 'vue-router/auto-routes';
|
||||||
|
|
||||||
@ -16,13 +16,14 @@ const router = createRouter({
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
const getRoutes = createGetRoutes(router);
|
||||||
if (import.meta.hot) handleHotUpdate(router);
|
if (import.meta.hot) handleHotUpdate(router);
|
||||||
if ($__DEV__) Object.assign(window, { router });
|
if ($__DEV__) Object.assign(window, { router });
|
||||||
router.onError((error) => {
|
router.onError((error) => {
|
||||||
console.debug('🚨 [router error]: ', error);
|
console.debug('🚨 [router error]: ', error);
|
||||||
});
|
});
|
||||||
|
|
||||||
export { router };
|
export { getRoutes, router };
|
||||||
export function install({ app }: { app: import('vue').App<Element> }) {
|
export function install({ app }: { app: import('vue').App<Element> }) {
|
||||||
app
|
app
|
||||||
// Register the plugin before the router
|
// Register the plugin before the router
|
||||||
|
2
typed-router.d.ts
vendored
2
typed-router.d.ts
vendored
@ -33,6 +33,8 @@ declare module 'vue-router/auto-routes' {
|
|||||||
'Primevue': RouteRecordInfo<'Primevue', '/primevue', Record<never, never>, Record<never, never>>,
|
'Primevue': RouteRecordInfo<'Primevue', '/primevue', Record<never, never>, Record<never, never>>,
|
||||||
'SomePage': RouteRecordInfo<'SomePage', '/some-page', Record<never, never>, Record<never, never>>,
|
'SomePage': RouteRecordInfo<'SomePage', '/some-page', Record<never, never>, Record<never, never>>,
|
||||||
'TsEnumUtil': RouteRecordInfo<'TsEnumUtil', '/ts-enum-util', Record<never, never>, Record<never, never>>,
|
'TsEnumUtil': RouteRecordInfo<'TsEnumUtil', '/ts-enum-util', Record<never, never>, Record<never, never>>,
|
||||||
|
'UseSecondLayout1': RouteRecordInfo<'UseSecondLayout1', '/use-second-layout-1', Record<never, never>, Record<never, never>>,
|
||||||
|
'UseSecondLayout2': RouteRecordInfo<'UseSecondLayout2', '/use-second-layout-2', Record<never, never>, Record<never, never>>,
|
||||||
'VueMacrosDefineRender': RouteRecordInfo<'VueMacrosDefineRender', '/vue-macros/DefineRender', Record<never, never>, Record<never, never>>,
|
'VueMacrosDefineRender': RouteRecordInfo<'VueMacrosDefineRender', '/vue-macros/DefineRender', Record<never, never>, Record<never, never>>,
|
||||||
'VueMacrosReactivityTransform': RouteRecordInfo<'VueMacrosReactivityTransform', '/vue-macros/ReactivityTransform', Record<never, never>, Record<never, never>>,
|
'VueMacrosReactivityTransform': RouteRecordInfo<'VueMacrosReactivityTransform', '/vue-macros/ReactivityTransform', Record<never, never>, Record<never, never>>,
|
||||||
'VueMacrosReusableTemplate': RouteRecordInfo<'VueMacrosReusableTemplate', '/vue-macros/ReusableTemplate', Record<never, never>, Record<never, never>>,
|
'VueMacrosReusableTemplate': RouteRecordInfo<'VueMacrosReusableTemplate', '/vue-macros/ReusableTemplate', Record<never, never>, Record<never, never>>,
|
||||||
|
@ -54,7 +54,7 @@ export function Plugins() {
|
|||||||
|
|
||||||
// https://github.com/dishait/vite-plugin-vue-meta-layouts
|
// https://github.com/dishait/vite-plugin-vue-meta-layouts
|
||||||
MetaLayouts({
|
MetaLayouts({
|
||||||
/* skipTopLevelRouteLayout: true */
|
// skipTopLevelRouteLayout: true,
|
||||||
defaultLayout: 'sakai-vue/AppLayout',
|
defaultLayout: 'sakai-vue/AppLayout',
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user