|
|
@@ -20,7 +20,19 @@ const generatorMenu = (routes: any[]) => {
|
|
|
generatorMenu(menuRouter)
|
|
|
// 生成菜单部分结束
|
|
|
|
|
|
+const router = useRouter()
|
|
|
const route = useRoute()
|
|
|
+
|
|
|
+const isAbsolutePath = (path: string) => {
|
|
|
+ return path.startsWith('http')
|
|
|
+}
|
|
|
+const handleSelect = (index: string) => {
|
|
|
+ if (isAbsolutePath(index)) {
|
|
|
+ window.open(index)
|
|
|
+ } else {
|
|
|
+ router.push(index)
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
@@ -28,9 +40,9 @@ const route = useRoute()
|
|
|
:default-active="route.path"
|
|
|
:collapse="menuStore.collapse"
|
|
|
:collapse-transition="false"
|
|
|
- router
|
|
|
class="layout-menu"
|
|
|
:class="{ 'menu-normal': !menuStore.collapse }"
|
|
|
+ @select="handleSelect"
|
|
|
>
|
|
|
<component :is="item.menuName" :index="item.path" v-for="item in menuRouter">
|
|
|
<el-icon v-if="item.menuName === 'el-menu-item'"><component :is="item.meta?.icon"></component></el-icon>
|
|
|
@@ -38,7 +50,10 @@ const route = useRoute()
|
|
|
<el-icon v-if="item.menuName === 'el-sub-menu'"><component :is="item.meta?.icon"></component></el-icon>
|
|
|
<span>{{ item.meta.title }}</span>
|
|
|
</template>
|
|
|
- <el-menu-item :index="item.path + '/' + subItem.path" v-for="subItem in item.children">
|
|
|
+ <el-menu-item
|
|
|
+ :index="isAbsolutePath(subItem.path) ? subItem.path : item.path + '/' + subItem.path"
|
|
|
+ v-for="subItem in item.children"
|
|
|
+ >
|
|
|
<template #title>
|
|
|
<el-icon v-if="subItem.meta?.icon"><component :is="subItem.meta?.icon"></component></el-icon>
|
|
|
<span>{{ subItem.meta.title }}</span>
|