MenuTree.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <div>
  3. <template v-for="item in menuList">
  4. <el-submenu v-if="!!item.children" :index="'/' + item.linkPath" :key="item.id">
  5. <template slot="title">
  6. <img
  7. :src="`${envConfig.baseImgApi}${
  8. openArray.includes(item.linkPath) ? item.menuDynamicImage || item.menuImage : item.menuImage
  9. }`"
  10. style="width: 14px; height: 14px; margin-right: 10px"
  11. />
  12. <span v-if="!collapse" slot="title">{{ item.name }}</span>
  13. </template>
  14. <menu-tree :menuList="item.children" :openArray="openArray" />
  15. </el-submenu>
  16. <el-menu-item v-else :index="'/' + item.linkPath" :key="item.id">
  17. <img
  18. :src="`${envConfig.baseImgApi}${
  19. openArray.includes(item.linkPath) ? item.menuDynamicImage || item.menuImage : item.menuImage
  20. }`"
  21. style="width: 14px; height: 14px; margin-right: 10px"
  22. />
  23. <span slot="title">{{ item.name }}</span>
  24. </el-menu-item>
  25. </template>
  26. </div>
  27. </template>
  28. <script>
  29. import MenuTree from './MenuTree.vue';
  30. import envConfig from '@/config';
  31. export default {
  32. name: 'MenuTree',
  33. data() {
  34. return {
  35. envConfig: envConfig
  36. };
  37. },
  38. components: {
  39. MenuTree
  40. },
  41. computed: {
  42. onRoutes() {
  43. return this.$route.path;
  44. }
  45. },
  46. methods: {},
  47. props: {
  48. menuList: {
  49. type: Array,
  50. default: () => []
  51. },
  52. collapse: {
  53. type: Boolean,
  54. default: false
  55. },
  56. openArray: {
  57. type: Array,
  58. default: () => []
  59. }
  60. },
  61. created() {}
  62. };
  63. </script>