Layout.vue 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. <template>
  2. <a-layout id="components-layout-demo-responsive">
  3. <a-layout-sider
  4. v-model="collapsed"
  5. theme="light"
  6. class="layout-sider"
  7. >
  8. <div class="logo"><img class="pic-logo" src="~@/assets/logo.png"></div>
  9. <a-menu class="menu-item" theme="light" mode="inline" @click="menuHandle" :default-selected-keys="['menu_1']">
  10. <a-menu-item :key="index" v-for="(menuInfo, index) in menu" :title="menuInfo.title">
  11. <a-icon :type="menuInfo.icon" />
  12. </a-menu-item>
  13. </a-menu>
  14. </a-layout-sider>
  15. <a-layout>
  16. <a-layout-sider
  17. theme="light"
  18. class="sub-layout-sider"
  19. >
  20. <a-menu class="sub-menu-item" theme="light" mode="inline" v-model="subMenuKey" :default-selected-keys="subMenuKey">
  21. <a-menu-item :key="subIndex" v-for="(menuInfo, subIndex) in subMenu">
  22. <router-link :to="{ name: menuInfo.pageName, params: menuInfo.params}">
  23. <span>{{ menuInfo.title }}</span>
  24. </router-link>
  25. </a-menu-item>
  26. </a-menu>
  27. </a-layout-sider>
  28. <a-layout-content :style="{padding: '10px', background: '#fff' }">
  29. <!-- <div :style="{ padding: '10px', background: '#fff', minHeight: '560px' }">
  30. <router-view />
  31. </div> -->
  32. <router-view />
  33. </a-layout-content>
  34. </a-layout>
  35. </a-layout>
  36. </template>
  37. <script>
  38. export default {
  39. name: 'Layout',
  40. data() {
  41. return {
  42. collapsed: true,
  43. menu: {
  44. 'menu_1' : {
  45. icon: 'home',
  46. title: ''
  47. },
  48. 'menu_2' : {
  49. icon: 'setting',
  50. title: ''
  51. },
  52. },
  53. menuKey: 'menu_1',
  54. subMenuKey: ['subMenu_1'],
  55. subMenu: {},
  56. subMenuList: {
  57. 'menu_1' : {
  58. 'subMenu_1' : {
  59. title: '上传文件到sm图床',
  60. pageName: 'UploadFile',
  61. params: {}
  62. },
  63. 'subMenu_2' : {
  64. title: '打开文件夹',
  65. pageName: 'FileOpenDir',
  66. params: {},
  67. },
  68. 'subMenu_3' : {
  69. title: '通信',
  70. pageName: 'Ipc',
  71. params: {},
  72. },
  73. 'subMenu_4' : {
  74. title: '快捷键',
  75. pageName: 'Shortcut',
  76. params: {},
  77. },
  78. 'subMenu_5' : {
  79. title: '调用其它软件',
  80. pageName: 'OpenSoftware',
  81. params: {},
  82. }
  83. },
  84. 'menu_2' : {
  85. 'subMenu_1' : {
  86. title: '基础设置',
  87. pageName: 'Setting',
  88. params: {},
  89. }
  90. },
  91. },
  92. contentPage: ''
  93. };
  94. },
  95. mounted () {
  96. this.menuHandle({key: 'menu_1'})
  97. },
  98. methods: {
  99. menuHandle (item) {
  100. this.subMenu = this.subMenuList[item.key]
  101. this.subMenuKey = ['subMenu_1']
  102. const linkInfo = this.subMenu['subMenu_1']
  103. this.$router.push({ name: linkInfo.pageName, params: linkInfo.params})
  104. },
  105. },
  106. };
  107. </script>
  108. <style lang="less" scoped>
  109. // 嵌套
  110. #components-layout-demo-responsive {
  111. height: 100%;
  112. .logo {
  113. border-bottom: 1px solid #e8e8e8;
  114. }
  115. .pic-logo {
  116. height: 32px;
  117. //background: rgba(139, 137, 137, 0.2);
  118. margin: 10px;
  119. }
  120. .layout-sider {
  121. border-right: 1px solid #e8e8e8;
  122. }
  123. .menu-item {
  124. .ant-menu-item {
  125. background-color: #fff;
  126. margin-top: 0px;
  127. margin-bottom: 0px;
  128. }
  129. }
  130. .sub-layout-sider {
  131. background-color: #FAFAFA;
  132. }
  133. .sub-menu-item {
  134. .ant-menu-item {
  135. margin-top: 0px;
  136. margin-bottom: 0px;
  137. }
  138. .ant-menu-item::after {
  139. border-right: 3px solid #F2F2F2;
  140. }
  141. .ant-menu-item-selected {
  142. background-color:#F2F2F2;
  143. span {
  144. color: #111;
  145. }
  146. }
  147. }
  148. .sub-menu-item.ant-menu {
  149. background: #FAFAFA;
  150. }
  151. .sub-menu-item.ant-menu-inline {
  152. border-right: 0px solid #FAFAFA;
  153. }
  154. }
  155. </style>