AppSider.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <a-layout id="app-layout-sider">
  3. <a-layout-sider
  4. v-model="collapsed"
  5. theme="light"
  6. class="layout-sider"
  7. >
  8. <div class="logo">
  9. <img class="pic-logo" src="~@/assets/logo.png">
  10. </div>
  11. <a-menu class="menu-item" theme="light" mode="inline" :default-selected-keys="[default_key]" @click="menuHandle">
  12. <a-menu-item v-for="(menuInfo, index) in menu" :key="index">
  13. <a-icon :type="menuInfo.icon" />
  14. {{ menuInfo.title }}
  15. </a-menu-item>
  16. </a-menu>
  17. </a-layout-sider>
  18. <a-layout>
  19. <a-layout-content class="layout-content">
  20. <router-view />
  21. </a-layout-content>
  22. </a-layout>
  23. </a-layout>
  24. </template>
  25. <script>
  26. export default {
  27. name: 'AppSider',
  28. data() {
  29. return {
  30. collapsed: true,
  31. default_key: 'menu_1',
  32. current: '',
  33. menu: {
  34. 'menu_1' : {
  35. icon: 'home',
  36. title: '框架',
  37. pageName: 'Base',
  38. params: {},
  39. },
  40. 'menu_2' : {
  41. icon: 'desktop',
  42. title: '其它',
  43. pageName: 'Other',
  44. params: {},
  45. },
  46. }
  47. };
  48. },
  49. created () {
  50. },
  51. mounted () {
  52. this.menuHandle()
  53. },
  54. methods: {
  55. menuHandle (e) {
  56. this.current = e ? e.key : this.default_key;
  57. const linkInfo = this.menu[this.current]
  58. console.log('[home] load page:', linkInfo.pageName);
  59. this.$router.push({ name: linkInfo.pageName, params: linkInfo.params})
  60. },
  61. },
  62. };
  63. </script>
  64. <style lang="less" scoped>
  65. // 嵌套
  66. #app-layout-sider {
  67. height: 100%;
  68. .logo {
  69. border-bottom: 1px solid #e8e8e8;
  70. }
  71. .pic-logo {
  72. height: 32px;
  73. //background: rgba(139, 137, 137, 0.2);
  74. margin: 10px;
  75. }
  76. .layout-sider {
  77. border-top: 1px solid #e8e8e8;
  78. border-right: 1px solid #e8e8e8;
  79. }
  80. .menu-item {
  81. .ant-menu-item {
  82. background-color: #fff;
  83. margin-top: 0px;
  84. margin-bottom: 0px;
  85. padding: 0 0px !important;
  86. }
  87. }
  88. .layout-content {
  89. //background-color: #fff;
  90. }
  91. }
  92. </style>