| | |
| | | </el-submenu> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import path from 'path' |
| | | import { isExternal } from '@/utils/validate' |
| | | import Item from './Item' |
| | | import AppLink from './Link' |
| | | import FixiOSBug from './FixiOSBug' |
| | | |
| | | <script> |
| | | import path from 'path' |
| | | import { isExternal } from '@/utils/validate' |
| | | import Item from './Item' |
| | | import AppLink from './Link' |
| | | import FixiOSBug from './FixiOSBug' |
| | | |
| | | export default { |
| | | name: 'SidebarItem', |
| | | components: { Item, AppLink }, |
| | | mixins: [FixiOSBug], |
| | | props: { |
| | | // route object |
| | | item: { |
| | | type: Object, |
| | | required: true |
| | | }, |
| | | isNest: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | basePath: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | this.onlyOneChild = null |
| | | return {} |
| | | }, |
| | | methods: { |
| | | hasOneShowingChild(children = [], parent) { |
| | | if (!children) { |
| | | children = []; |
| | | } |
| | | const showingChildren = children.filter(item => { |
| | | if (item.hidden) { |
| | | return false |
| | | } else { |
| | | // Temp set(will be used if only has one showing child) |
| | | this.onlyOneChild = item |
| | | return true |
| | | export default { |
| | | name: 'SidebarItem', |
| | | components: { Item, AppLink }, |
| | | mixins: [FixiOSBug], |
| | | props: { |
| | | // route object |
| | | item: { |
| | | type: Object, |
| | | required: true |
| | | }, |
| | | isNest: { |
| | | type: Boolean, |
| | | default: false |
| | | }, |
| | | basePath: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }) |
| | | }, |
| | | data() { |
| | | this.onlyOneChild = null |
| | | return {} |
| | | }, |
| | | methods: { |
| | | hasOneShowingChild(children = [], parent) { |
| | | if (!children) { |
| | | children = []; |
| | | } |
| | | const showingChildren = children.filter(item => { |
| | | if (item.hidden) { |
| | | return false |
| | | } else { |
| | | // Temp set(will be used if only has one showing child) |
| | | this.onlyOneChild = item |
| | | return true |
| | | } |
| | | }) |
| | | |
| | | // When there is only one child router, the child router is displayed by default |
| | | if (showingChildren.length === 1) { |
| | | return true |
| | | } |
| | | // When there is only one child router, the child router is displayed by default |
| | | if (showingChildren.length === 1) { |
| | | return true |
| | | } |
| | | |
| | | // Show parent if there are no child router to display |
| | | if (showingChildren.length === 0) { |
| | | this.onlyOneChild = { ... parent, path: '', noShowingChildren: true } |
| | | return true |
| | | } |
| | | // Show parent if there are no child router to display |
| | | if (showingChildren.length === 0) { |
| | | this.onlyOneChild = { ... parent, path: '', noShowingChildren: true } |
| | | return true |
| | | } |
| | | |
| | | return false |
| | | }, |
| | | resolvePath(routePath, routeQuery) { |
| | | if (isExternal(routePath)) { |
| | | return routePath |
| | | return false |
| | | }, |
| | | resolvePath(routePath, routeQuery) { |
| | | if (isExternal(routePath)) { |
| | | return routePath |
| | | } |
| | | if (isExternal(this.basePath)) { |
| | | return this.basePath |
| | | } |
| | | if (routeQuery) { |
| | | let query = JSON.parse(routeQuery); |
| | | return { path: path.resolve(this.basePath, routePath), query: query } |
| | | } |
| | | return path.resolve(this.basePath, routePath) |
| | | } |
| | | } |
| | | if (isExternal(this.basePath)) { |
| | | return this.basePath |
| | | } |
| | | if (routeQuery) { |
| | | let query = JSON.parse(routeQuery); |
| | | return { path: path.resolve(this.basePath, routePath), query: query } |
| | | } |
| | | return path.resolve(this.basePath, routePath) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | </script> |