menus.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <template>
  2. <el-menu
  3. :default-active="appStore.getActiveMenu"
  4. background-color="var(--sider-menu-bg-color)"
  5. active-text-color="var(--sider-ment-active-text-color)"
  6. text-color="var(--sider-menu-text-color)"
  7. :collapse="!appStore.isExpand"
  8. :collapse-transition="false"
  9. :router="true"
  10. @select="selectMenu"
  11. :unique-opened="true"
  12. >
  13. <slot />
  14. </el-menu>
  15. </template>
  16. <script lang="ts" setup name="menus">
  17. import { useAppStore } from '/admin/stores/modules/app'
  18. const appStore = useAppStore()
  19. const selectMenu = (index: string) => {
  20. if (index.startsWith('http') || index.startsWith('https')) {
  21. window.open(index)
  22. }
  23. }
  24. </script>
  25. <style scoped lang="scss">
  26. .el-menu {
  27. border-right: none;
  28. }
  29. :deep(.is-active) {
  30. background-color: var(--side-active-menu-bg-color) !important;
  31. }
  32. :deep(.el-sub-menu__title) {
  33. padding-left: calc(calc(var(--el-menu-base-level-padding) + var(--el-menu-level) * var(--el-menu-level-padding)));
  34. color: var(--sider-menu-text-color);
  35. }
  36. :deep(.el-sub-menu) {
  37. color: var(--sider-sub-menu-bg-color);
  38. }
  39. :deep(.el-sub-menu__title:hover) {
  40. background-color: var(--sider-menu-bg-color);
  41. }
  42. :deep(.el-menu--popup .el-menu-item:hover) {
  43. background-color: var(--sider-menu-bg-color) !important;
  44. }
  45. :deep(.el-menu-item:hover) {
  46. background-color: var(--sider-sub-menu-hover-bg-color) !important;
  47. border-right: 3px solid;
  48. border-right-color: var(--el-color-primary);
  49. }
  50. :deep(.el-menu-item.is-active) {
  51. border-right: 3px solid;
  52. border-right-color: var(--el-color-primary);
  53. }
  54. :deep(.el-menu-item) {
  55. height: 50px !important;
  56. }
  57. </style>