Menu.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <template>
  2. <el-menu :router="true"
  3. :default-active="defaultMItem"
  4. class="el-menu-vertical-demo">
  5. <template v-for="(item,index) in data">
  6. <el-menu-item :index="'/'+role+'/'+item.code" v-if="item.subMenuList.length==0">
  7. <i v-bind:class="icons[item.code]"></i>
  8. <span slot="title">{{item.name}}</span>
  9. </el-menu-item>
  10. <el-submenu v-if="item.subMenuList.length>0" :index="index+1+''">
  11. <template slot="title">
  12. <i class="el-icon-location"></i>
  13. <span>{{item.name}}</span>
  14. </template>
  15. <el-menu-item v-for="(sub,i) in item.subMenuList" :index="'/'+role+'/'+sub.code">{{sub.name}}</el-menu-item>
  16. </el-submenu>
  17. </template>
  18. </el-menu>
  19. </template>
  20. <script>
  21. import config from '@api/config.js';
  22. export default {
  23. name: 'lt-menu',
  24. props: ['data', 'role'],
  25. data: function () {
  26. return {
  27. icons: config.menuIconList
  28. }
  29. },
  30. computed:{
  31. defaultMItem:function () {
  32. let route = this.$route.path;
  33. return route;
  34. }
  35. },
  36. methods: {
  37. }
  38. }
  39. </script>
  40. <style lang="less" scoped>
  41. .el-menu-vertical-demo {
  42. width: 300px;
  43. }
  44. </style>