fix: 🐛 补充 basePath 父级路径
Former-commit-id: cce921b52b3f93fb9be8d9619c788a5b1b585fe9
This commit is contained in:
@@ -5,6 +5,9 @@ import { useSettingsStore } from "@/store/modules/settings";
|
||||
import { useAppStore } from "@/store/modules/app";
|
||||
import variables from "@/styles/variables.module.scss";
|
||||
|
||||
import path from "path-browserify";
|
||||
import { isExternal } from "@/utils/index";
|
||||
|
||||
const settingsStore = useSettingsStore();
|
||||
const appStore = useAppStore();
|
||||
const currRoute = useRoute();
|
||||
@@ -17,7 +20,29 @@ const props = defineProps({
|
||||
},
|
||||
type: Array<any>,
|
||||
},
|
||||
basePath: {
|
||||
type: String,
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* 解析路径
|
||||
*
|
||||
* @param routePath 路由路径
|
||||
*/
|
||||
function resolvePath(routePath: string) {
|
||||
if (isExternal(routePath)) {
|
||||
return routePath;
|
||||
}
|
||||
if (isExternal(props.basePath)) {
|
||||
return props.basePath;
|
||||
}
|
||||
|
||||
// 完整路径 = 父级路径(/level/level_3) + 路由路径
|
||||
const fullPath = path.resolve(props.basePath, routePath); // 相对路径 → 绝对路径
|
||||
return fullPath;
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<el-menu
|
||||
@@ -34,7 +59,7 @@ const props = defineProps({
|
||||
v-for="route in menuList"
|
||||
:key="route.path"
|
||||
:item="route"
|
||||
:base-path="route.path"
|
||||
:base-path="resolvePath(route.path)"
|
||||
:is-collapse="!appStore.sidebar.opened"
|
||||
/>
|
||||
</el-menu>
|
||||
|
||||
@@ -54,6 +54,7 @@ function hasOneShowingChild(children = [], parent: any) {
|
||||
// 2:如果无子路由, 复制当前路由信息作为其子路由,满足只拥有一个子路由的条件,所以返回 true
|
||||
if (showingChildren.length === 0) {
|
||||
onlyOneChild.value = { ...parent, path: "", noShowingChildren: true };
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
@@ -71,6 +72,7 @@ function resolvePath(routePath: string) {
|
||||
if (isExternal(props.basePath)) {
|
||||
return props.basePath;
|
||||
}
|
||||
|
||||
// 完整路径 = 父级路径(/level/level_3) + 路由路径
|
||||
const fullPath = path.resolve(props.basePath, routePath); // 相对路径 → 绝对路径
|
||||
return fullPath;
|
||||
|
||||
@@ -32,7 +32,7 @@ watch(
|
||||
>
|
||||
<logo v-if="sidebarLogo" :collapse="!appStore.sidebar.opened" />
|
||||
<el-scrollbar v-if="showContent">
|
||||
<LeftMenu :menu-list="permissionStore.routes" />
|
||||
<LeftMenu :menu-list="permissionStore.routes" base-path="" />
|
||||
</el-scrollbar>
|
||||
<NavRight v-if="layout === 'top'" />
|
||||
</div>
|
||||
|
||||
@@ -38,12 +38,11 @@ watch(
|
||||
mixLeftMenu.value = item.children || [];
|
||||
}
|
||||
});
|
||||
console.log(" mixLeftMenu.value ", mixLeftMenu.value);
|
||||
// if (mixLeftMenu.value.length) {
|
||||
// router.push({
|
||||
// path: mixLeftMenu.value[0].path,
|
||||
// });
|
||||
// }
|
||||
if (mixLeftMenu.value) {
|
||||
router.push({
|
||||
path: mixLeftMenu.value[0].path,
|
||||
});
|
||||
}
|
||||
},
|
||||
{
|
||||
deep: true,
|
||||
@@ -94,7 +93,8 @@ function handleOutsideClick() {
|
||||
<template v-if="layout === 'mix'">
|
||||
<div class="mix-wrap">
|
||||
<!-- :menu-list="mixLeftMenu -->
|
||||
<LeftMenu :menu-list="permissionStore.routes" />
|
||||
<!-- :menu-list="permissionStore.routes -->
|
||||
<LeftMenu :menu-list="mixLeftMenu" :base-path="activeTopMenu" />
|
||||
<Main />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user