|
@@ -1,36 +1,39 @@
|
|
|
<template>
|
|
<template>
|
|
|
<div v-if="!item.hidden">
|
|
<div v-if="!item.hidden">
|
|
|
- <template v-if="hasOneShowingChild(item.children, item) && (!onlyOneChild.children || onlyOneChild.noShowingChildren) && !item.alwaysShow">
|
|
|
|
|
|
|
+ <template
|
|
|
|
|
+ v-if="hasOneShowingChild(item.children, item) && (!onlyOneChild.children || onlyOneChild.noShowingChildren) && !item.alwaysShow">
|
|
|
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
|
|
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
|
|
|
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }">
|
|
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }">
|
|
|
<svg-icon :icon-class="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"/>
|
|
<svg-icon :icon-class="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"/>
|
|
|
- <template #title><span class="menu-title" :title="hasTitle(onlyOneChild.meta.title)">{{ onlyOneChild.meta.title }}</span></template>
|
|
|
|
|
|
|
+ <template #title><span class="menu-title"
|
|
|
|
|
+ :title="hasTitle(onlyOneChild.meta.title)">{{ onlyOneChild.meta.title }}</span>
|
|
|
|
|
+ </template>
|
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
|
</app-link>
|
|
</app-link>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<el-sub-menu v-else ref="subMenu" :index="resolvePath(item.path)" teleported>
|
|
<el-sub-menu v-else ref="subMenu" :index="resolvePath(item.path)" teleported>
|
|
|
<template v-if="item.meta" #title>
|
|
<template v-if="item.meta" #title>
|
|
|
- <svg-icon :icon-class="item.meta && item.meta.icon" />
|
|
|
|
|
|
|
+ <svg-icon :icon-class="item.meta && item.meta.icon"/>
|
|
|
<span class="menu-title" :title="hasTitle(item.meta.title)">{{ item.meta.title }}</span>
|
|
<span class="menu-title" :title="hasTitle(item.meta.title)">{{ item.meta.title }}</span>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<sidebar-item
|
|
<sidebar-item
|
|
|
- v-for="(child, index) in item.children"
|
|
|
|
|
- :key="child.path + index"
|
|
|
|
|
- :is-nest="true"
|
|
|
|
|
- :item="child"
|
|
|
|
|
- :base-path="resolvePath(child.path)"
|
|
|
|
|
- class="nest-menu"
|
|
|
|
|
|
|
+ v-for="(child, index) in item.children"
|
|
|
|
|
+ :key="child.path + index"
|
|
|
|
|
+ :is-nest="true"
|
|
|
|
|
+ :item="child"
|
|
|
|
|
+ :base-path="resolvePath(child.path)"
|
|
|
|
|
+ class="nest-menu"
|
|
|
/>
|
|
/>
|
|
|
</el-sub-menu>
|
|
</el-sub-menu>
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
-import { isExternal } from '@/utils/validate'
|
|
|
|
|
|
|
+import {isExternal} from '@/utils/validate'
|
|
|
import AppLink from './Link'
|
|
import AppLink from './Link'
|
|
|
-import { getNormalPath } from '@/utils/ruoyi'
|
|
|
|
|
|
|
+import {getNormalPath} from '@/utils/ruoyi'
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
// route object
|
|
// route object
|
|
@@ -71,7 +74,7 @@ function hasOneShowingChild(children = [], parent) {
|
|
|
|
|
|
|
|
// Show parent if there are no child router to display
|
|
// Show parent if there are no child router to display
|
|
|
if (showingChildren.length === 0) {
|
|
if (showingChildren.length === 0) {
|
|
|
- onlyOneChild.value = { ...parent, path: '', noShowingChildren: true }
|
|
|
|
|
|
|
+ onlyOneChild.value = {...parent, path: '', noShowingChildren: true}
|
|
|
return true
|
|
return true
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -87,12 +90,12 @@ function resolvePath(routePath, routeQuery) {
|
|
|
}
|
|
}
|
|
|
if (routeQuery) {
|
|
if (routeQuery) {
|
|
|
let query = JSON.parse(routeQuery);
|
|
let query = JSON.parse(routeQuery);
|
|
|
- return { path: getNormalPath(props.basePath + '/' + routePath), query: query }
|
|
|
|
|
|
|
+ return {path: getNormalPath(props.basePath + '/' + routePath), query: query}
|
|
|
}
|
|
}
|
|
|
return getNormalPath(props.basePath + '/' + routePath)
|
|
return getNormalPath(props.basePath + '/' + routePath)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function hasTitle(title){
|
|
|
|
|
|
|
+function hasTitle(title) {
|
|
|
if (title.length > 5) {
|
|
if (title.length > 5) {
|
|
|
return title;
|
|
return title;
|
|
|
} else {
|
|
} else {
|