plm前端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.5 KiB

2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <el-submenu
  3. v-if="menu.list && menu.list.length >= 1 "
  4. :index="menu.menuId + ''"
  5. :popper-class="'site-sidebar--' + sidebarLayoutSkin + '-popper'">
  6. <template slot="title">
  7. <icon-svg :name="menu.icon || ''" class="site-sidebar__menu-icon"></icon-svg>
  8. <span>{{ menu.name }}</span>
  9. </template>
  10. <sub-menu
  11. v-for="item in menu.list"
  12. v-if="item"
  13. :key="item.menuId"
  14. :menu="item"
  15. :dynamicMenuRoutes="dynamicMenuRoutes">
  16. </sub-menu>
  17. </el-submenu>
  18. <el-menu-item v-else :index="menu.menuId + ''" @click="gotoRouteHandle(menu)">
  19. <icon-svg :name="menu.icon || ''" class="site-sidebar__menu-icon"></icon-svg>
  20. <span>{{ menu.name }}</span>
  21. </el-menu-item>
  22. </template>
  23. <script>
  24. import SubMenu from './main-sidebar-sub-menu'
  25. export default {
  26. name: 'sub-menu',
  27. props: {
  28. menu: {
  29. type: Object,
  30. required: true
  31. },
  32. dynamicMenuRoutes: {
  33. type: Array,
  34. required: true
  35. }
  36. },
  37. components: {
  38. SubMenu
  39. },
  40. computed: {
  41. sidebarLayoutSkin: {
  42. get () { return this.$store.state.common.sidebarLayoutSkin }
  43. }
  44. },
  45. methods: {
  46. // 通过menuId与动态(菜单)路由进行匹配跳转至指定路由
  47. gotoRouteHandle (menu) {
  48. let route = this.dynamicMenuRoutes.filter(item => item.meta.menuId === menu.menuId)
  49. if (route.length >= 1) {
  50. this.$router.push({ name: route[0].name })
  51. }
  52. }
  53. }
  54. }
  55. </script>