cwg-sidebar.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <template>
  2. <view class="cwg-sidebar">
  3. <image class="logo" src="/static/images/logo3.png" mode="widthFix" />
  4. <view class="menu">
  5. <view class="menu-item" v-for="item in menu" :key="item.key" @click="handleClick(item)">
  6. <cwg-icon color="#fff" :icon="item.icon" class="arrow" />
  7. </view>
  8. </view>
  9. </view>
  10. </template>
  11. <script lang="ts" setup>
  12. import { ref } from 'vue';
  13. import useRouter from "@/hooks/useRouter";
  14. const router = useRouter();
  15. interface MenuItem {
  16. key: string;
  17. label: string;
  18. icon?: string;
  19. children?: MenuItem[];
  20. }
  21. const emit = defineEmits(['menu-click']);
  22. const menu = ref<MenuItem[]>([
  23. { key: 'client', label: 'Client Zone', icon: 'crm-house' },
  24. { key: 'promotion', label: 'Promotion Center', icon: 'crm-users' },
  25. { key: 'deposit', label: 'Deposit', icon: 'crm-chart-area' },
  26. { key: 'withdrawal', label: 'Withdrawal', icon: 'crm-download' },
  27. { key: 'withdrawal', label: 'Withdrawal', icon: 'crm-headset' },
  28. ]);
  29. function handleClick(item: MenuItem) {
  30. router.push(item.key);
  31. }
  32. </script>
  33. <style scoped lang="scss">
  34. @import "@/uni.scss";
  35. .cwg-sidebar {
  36. width: px2rpx(100);
  37. background: var(--color-navy-900);
  38. color: #fff;
  39. height: 100vh;
  40. display: flex;
  41. flex-direction: column;
  42. align-items: center;
  43. padding-top: px2rpx(20);
  44. box-sizing: border-box;
  45. .logo {
  46. width: px2rpx(54);
  47. }
  48. .menu {
  49. display: flex;
  50. flex-direction: column;
  51. gap: px2rpx(20);
  52. align-items: center;
  53. padding-top: px2rpx(30);
  54. }
  55. .menu-item {
  56. display: flex;
  57. align-items: center;
  58. justify-content: center;
  59. width: px2rpx(54);
  60. height: px2rpx(54);
  61. border-radius: px2rpx(12);
  62. cursor: pointer;
  63. background: var(--color-navy-700);
  64. transition: background 0.2s;
  65. &:hover {
  66. background: var(--color-navy-600);
  67. }
  68. }
  69. }
  70. </style>