fix: 🐛 补充 basePath 父级路径

Former-commit-id: cce921b52b3f93fb9be8d9619c788a5b1b585fe9
This commit is contained in:
hxr
2023-08-15 05:35:35 +08:00
parent e01e221106
commit e03d73bb48
4 changed files with 36 additions and 9 deletions

View File

@@ -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>

View File

@@ -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;

View File

@@ -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>

View File

@@ -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>