SiderBar.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <el-aside class="siderbar_container" :width="isCollapse ? '72px' : '150px'">
  3. <div @click="toggleCollapse">
  4. <img v-if="isCollapse" src="@/assets/icon/open.svg" alt="">
  5. <img v-else src="@/assets/icon/close.svg" alt="">
  6. </div>
  7. <el-menu default-active="/schoolManage" :collapse="isCollapse" router @handleOpen="handleOpen" @handleClose="handleClose">
  8. <el-menu-item v-for="item in menuItems" :key="item.route" :index="item.route">
  9. <template #title>
  10. <!-- <img :src="`@/assets/icon/${item.icon}.svg`" alt=""> -->
  11. <img src="`@/assets/icon/manage_normal.svg`" alt="">
  12. <span>{{ item.label }}</span>
  13. </template>
  14. </el-menu-item>
  15. </el-menu>
  16. </el-aside>
  17. </template>
  18. <script>
  19. import { ref } from 'vue';
  20. export default {
  21. name: 'SiderBar',
  22. components: {
  23. },
  24. setup() {
  25. const isCollapse = ref(false)
  26. const menuItems = ref([
  27. {
  28. label: '学校管理',
  29. icon: 'school_normal',
  30. icon_light: 'school_light',
  31. icon_hover: 'school_hover',
  32. route: '/school',
  33. },
  34. {
  35. label: '运维管理',
  36. icon: 'manage_normal',
  37. icon_light: 'school_light',
  38. icon_hover: 'school_hover',
  39. route: '/manager',
  40. },
  41. {
  42. label: '联考管理',
  43. icon: 'join_exam_normal',
  44. icon_light: 'join_exam_light',
  45. icon_hover: 'join_exam_hover',
  46. route: '/examination',
  47. }
  48. ])
  49. const handleOpen = (key, keyPath) => {
  50. console.log(key, keyPath)
  51. }
  52. const handleClose = (key, keyPath) => {
  53. console.log(key, keyPath)
  54. }
  55. const toggleCollapse = () => {
  56. isCollapse.value = !isCollapse.value
  57. }
  58. return {
  59. isCollapse,
  60. menuItems,
  61. handleOpen,
  62. handleClose,
  63. toggleCollapse,
  64. }
  65. }
  66. }
  67. </script>
  68. <style scoped>
  69. .siderbar_container {
  70. background: #fff;
  71. padding: 16px;
  72. }
  73. .el-menu {
  74. width: 100%;
  75. border: none;
  76. }
  77. .el-menu-item {
  78. padding: 0;
  79. }
  80. </style>