index.vue 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <template>
  2. <el-menu
  3. :default-active="activeIndex"
  4. class="el-menu-demo"
  5. mode="horizontal"
  6. background-color="#1e1f22"
  7. text-color="#bcbec4"
  8. active-text-color="#2ab19f"
  9. @select="handleSelect">
  10. <template v-for="menu in menus">
  11. <template v-if="menu.subMenu.length > 0">
  12. <el-sub-menu :index="menu.index">
  13. <template #title>{{ menu.name }}</template>
  14. <template v-for="subMenu in menu.subMenu">
  15. <el-menu-item :index="subMenu.index" v-if="menu.path && menu.name" :key="subMenu.index"
  16. @click="JumpRouter(subMenu.path)">{{ subMenu.name }}
  17. </el-menu-item>
  18. </template>
  19. </el-sub-menu>
  20. </template>
  21. <template v-else>
  22. <el-menu-item v-if="menu.path && menu.name" :index="menu.index" @click="JumpRouter(menu.path)">{{ menu.name }}
  23. </el-menu-item>
  24. </template>
  25. </template>
  26. <!-- -->
  27. <!-- <el-menu-item index="1" @click="JumpRouter('/back/base')">基本功能</el-menu-item>-->
  28. <!-- <el-menu-item index="2" @click="JumpRouter('/back/general')">概述</el-menu-item>-->
  29. <!-- <el-sub-menu index="3">-->
  30. <!-- <template #title>商城</template>-->
  31. <!-- <el-menu-item index="2-1" @click="JumpRouter('/back/vip')">VIP</el-menu-item>-->
  32. <!-- <el-menu-item index="2-2">礼包</el-menu-item>-->
  33. <!-- <el-menu-item index="2-3">商品</el-menu-item>-->
  34. <!-- <el-menu-item index="2-4">回收</el-menu-item>-->
  35. <!-- </el-sub-menu>-->
  36. <!-- <el-menu-item index="4" @click="JumpRouter('/back/message')">消息</el-menu-item>-->
  37. <!-- <el-menu-item index="5">设置</el-menu-item>-->
  38. </el-menu>
  39. <router-view/>
  40. </template>
  41. <script lang="ts" setup>
  42. import {ref} from 'vue'
  43. import router from "../../router";
  44. const activeIndex = ref<string>('1')
  45. class Menu {
  46. index: string
  47. name: string
  48. path: string
  49. subMenu: Menu[]
  50. constructor(index: string, name: string, path: string, subMenu: Menu[]) {
  51. this.index = index;
  52. this.name = name;
  53. this.path = path;
  54. this.subMenu = subMenu;
  55. }
  56. }
  57. const menus = ref<Menu[]>([new Menu("1", "基本功能", "/back/base", []),
  58. new Menu("2", "概述", "/back/general", []),
  59. new Menu("3", "商城", "/back/vip", [
  60. new Menu("2-1", "VIP", "/back/general", []),
  61. new Menu("2-2", "礼包", "/back/kit", []),
  62. new Menu("2-3", "商品", "/back/shopItem", []),
  63. new Menu("2-4", "回收", "/back/sellItem", [])
  64. ]),
  65. new Menu("4", "消息", "/back/message", []),
  66. new Menu("5", "设置", "/back/message", [])
  67. ])
  68. function GetNowMenu() {
  69. let map = new Map<string, string>;
  70. for (let i = 0; i < menus.value.length; i++) {
  71. map.set(menus.value[i].index, menus.value[i].path)
  72. if (menus.value[i].subMenu.length > 0) {
  73. for (let j = 0; j < menus.value[i].subMenu.length; j++) {
  74. map.set(menus.value[i].subMenu[j].index, menus.value[i].subMenu[j].path)
  75. }
  76. }
  77. }
  78. activeIndex.value = map.get(router.currentRoute.value.path)
  79. }
  80. GetNowMenu()
  81. const handleSelect = (key: string, keyPath: string[]) => {
  82. console.log(key, keyPath)
  83. }
  84. function JumpRouter(path: string) {
  85. router.push({path: path})
  86. }
  87. </script>