navMenu.vue 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <template>
  2. <div class="nav-menu">
  3. <div
  4. :class="activeIndex == index ? 'menu-item-active' : 'menu-item'"
  5. v-for="(item, index) in menuList"
  6. :key="index"
  7. @click="handlerClick(item, index)"
  8. >{{ item.label }}</div
  9. >
  10. </div>
  11. </template>
  12. <script setup lang="ts">
  13. import { ref } from 'vue';
  14. //当前激活menu选项索引
  15. let activeIndex = ref(0);
  16. let menuList = ref<any[]>([
  17. { label: '一张图', value: 'yzt' },
  18. { label: '监测预警', value: 'jcyj' },
  19. { label: '设备管理', value: 'sbgl' },
  20. { label: '联动配置', value: 'ldpz' },
  21. { label: '系统管理', value: 'xtgl' },
  22. { label: '大屏展示', value: 'dpzs' },
  23. ]);
  24. let $emit = defineEmits(['changeMenu']);
  25. //menu选项切换
  26. function handlerClick(item, index) {
  27. activeIndex.value = index;
  28. $emit('changeMenu', item.value);
  29. }
  30. </script>
  31. <style lang="less" scoped>
  32. @import '/@/design/theme.less';
  33. @{theme-deepblue} {
  34. .nav-menu {
  35. }
  36. }
  37. .nav-menu {
  38. --image-modal-nav: url('@/assets/images/home-container/configurable/hsq/2-1.png');
  39. --image-modal-nav1: url('@/assets/images/home-container/configurable/hsq/2-2.png');
  40. --image-modal-nav2: url('@/assets/images/home-container/configurable/hsq/2-3.png');
  41. display: flex;
  42. justify-content: space-around;
  43. align-items: center;
  44. position: relative;
  45. width: 90%;
  46. height: 100%;
  47. background: var(--image-modal-nav) no-repeat;
  48. background-size: 100% 100%;
  49. padding: 6px 15px 0px 15px;
  50. box-sizing: border-box;
  51. .menu-item {
  52. display: flex;
  53. justify-content: center;
  54. align-items: center;
  55. width: 104px;
  56. height: 34px;
  57. background: var(--image-modal-nav1) no-repeat;
  58. background-size: 100% 100%;
  59. cursor: pointer;
  60. user-select: none; /* 禁止选择文本 */
  61. }
  62. .menu-item-active {
  63. display: flex;
  64. justify-content: center;
  65. align-items: center;
  66. width: 104px;
  67. height: 34px;
  68. background: var(--image-modal-nav2) no-repeat;
  69. background-size: 100% 100%;
  70. cursor: pointer;
  71. user-select: none; /* 禁止选择文本 */
  72. }
  73. }
  74. </style>