index.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <template>
  2. <el-menu default-active="1-1" class="main-menu" @open="handleOpen" @close="handleClose">
  3. <el-submenu v-for="(menu, index) of menus" :key="index" :index="String(index)">
  4. <template slot="title">
  5. <span class="menu-title" slot="title">{{menu.title}}</span>
  6. </template>
  7. <el-menu-item
  8. v-for="(sub, subIndex) of menu.subs"
  9. :key="subIndex"
  10. :index="String(index) + subIndex"
  11. @click.native="$router.push({ name: getPathName(sub) })"
  12. >{{sub.title}}</el-menu-item>
  13. </el-submenu>
  14. </el-menu>
  15. </template>
  16. <script>
  17. import data from './data'
  18. // console.log(data)
  19. let menus = data.map(menu => ({
  20. ...menu,
  21. subs: menu.subs.filter(sub => !sub.hidden)
  22. }))
  23. export default {
  24. props: [],
  25. data() {
  26. return {
  27. menus,
  28. }
  29. },
  30. mounted() {
  31. },
  32. methods: {
  33. getPathName(sub) {
  34. let name = `main-index`
  35. if(sub.path) name = `main-index-${sub.path}`
  36. return name
  37. },
  38. handleOpen() {
  39. // console.log('open')
  40. },
  41. handleClose() {
  42. // console.log('close')
  43. },
  44. },
  45. }
  46. </script>
  47. <style scoped>
  48. .menu-title {
  49. padding: 0 16px;
  50. }
  51. </style>