Sidebar.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. <template>
  2. <div style="background-color: #1461cc">
  3. <el-menu
  4. style="border: 0;text-align: left"
  5. background-color="#1461cc"
  6. text-color="rgba(255, 255, 255, 1)"
  7. active-text-color="white"
  8. :collapse="isCollapse"
  9. :collapse-transition="false"
  10. router
  11. mode="vertical"
  12. :unique-opened="true"
  13. >
  14. <template v-for="(menu, index) in menus" >
  15. <el-submenu :index="menu.path" v-if="menu.submenus != null" :key="menu.path">
  16. <template slot="title">
  17. <el-avatar :src="menu.url" :size="25" shape="square" style="background-color: transparent;margin-right: 12px" ></el-avatar>
  18. <span>{{ menu.name }}</span>
  19. </template>
  20. <el-menu-item
  21. v-for="submenu in menu.submenus"
  22. :index="submenu.path"
  23. :key="submenu.path"
  24. >
  25. <span style="margin-left: 40px">{{ submenu.name }}</span>
  26. </el-menu-item>
  27. </el-submenu>
  28. <el-menu-item
  29. v-if="menu.submenus == null"
  30. :key="menu.path"
  31. :index="menu.path"
  32. >
  33. <el-avatar :src="menu.url" :size="25" shape="square" style="background-color: transparent;margin-right: 6px" ></el-avatar>
  34. <span slot="title">
  35. {{ menu.name }}
  36. </span>
  37. </el-menu-item>
  38. </template>
  39. </el-menu>
  40. </div>
  41. </template>
  42. <script>
  43. export default {
  44. props: {
  45. isCollapse: Boolean,
  46. },
  47. data() {
  48. return {
  49. menus: [
  50. {
  51. url: require("@/assets/menu/userManagement@3x.png"),
  52. name: "用户管理",
  53. submenus: [
  54. {
  55. name: "人员管理",
  56. path: "/home/user/person",
  57. },
  58. {
  59. name: "组织管理",
  60. path: "/home/user/group",
  61. },
  62. ],
  63. },
  64. {
  65. url: require("@/assets/menu/roleManagement@3x.png"),
  66. name: "角色管理",
  67. path: "/home/role",
  68. },
  69. {
  70. url: require("@/assets/menu/systemConfiguration@3x.png"),
  71. name: "系统配置",
  72. path: "/home/system",
  73. submenus: [
  74. {
  75. name: "策略配置",
  76. path: "/home/system/strategy",
  77. },
  78. {
  79. name: "消息配置",
  80. path: "/home/system/message",
  81. },
  82. {
  83. name: "信息配置",
  84. path: "/home/system/info",
  85. },
  86. {
  87. name: "指标配置",
  88. path: "/home/system/index",
  89. },
  90. ],
  91. },
  92. {
  93. url: require("@/assets/menu/deviceManagement@3x.png"),
  94. name: "设备管理",
  95. path: "/home/device",
  96. submenus: [
  97. {
  98. name: "设备配置",
  99. path: "/home/device/config",
  100. },
  101. {
  102. name: "设备告警",
  103. path: "/home/device/warning",
  104. },
  105. ],
  106. },
  107. {
  108. url: require("@/assets/menu/dataManagement@3x.png"),
  109. name: "数据管理",
  110. path: "/home/data",
  111. submenus: [
  112. {
  113. name: "报表配置",
  114. path: "/home/data/statement",
  115. },
  116. {
  117. name: "报告配置",
  118. path: "/home/data/report",
  119. },
  120. {
  121. name: "基础信息",
  122. path: "/home/data/basicInfo",
  123. },
  124. ],
  125. },
  126. {
  127. url: require("@/assets/menu/serviceManagement@3x.png"),
  128. name: "服务管理",
  129. path: "/home/service",
  130. },
  131. {
  132. url: require("@/assets/menu/securityManagement@3x.png"),
  133. name: "安全管理",
  134. path: "/home/security",
  135. submenus: [
  136. {
  137. name: "日志监控",
  138. path: "/home/security/logMonitor",
  139. },
  140. {
  141. name: "系统监控",
  142. path: "/home/security/systemMonitor",
  143. },
  144. ],
  145. },
  146. ],
  147. };
  148. },
  149. };
  150. </script>
  151. <style lang="less" scoped>
  152. /deep/ .el-menu-item.is-active {
  153. background-color: #409EFF !important;
  154. }
  155. /deep/.el-submenu__icon-arrow {
  156. display: none;
  157. }
  158. .el-image {
  159. position: relative;
  160. overflow: auto;
  161. float: left;
  162. }
  163. /deep/.el-image__inner {
  164. vertical-align: middle;
  165. width: 30px;
  166. height: 30px;
  167. }
  168. /deep/.el-menu-item-group__title {
  169. padding: 0;
  170. }
  171. .el-menu-item-group > .span {
  172. margin-left: 70px;
  173. }
  174. /deep/.el-menu--inline > {
  175. border: none;
  176. text-align: -webkit-right;
  177. }
  178. /deep/ .el-submenu .el-menu-item {
  179. padding: 0 0 0 25px !important;
  180. text-align: left;
  181. }
  182. .el-menu-item {
  183. font-size: 16px;
  184. padding: 0 40px;
  185. cursor: pointer;
  186. }
  187. /deep/.el-submenu__title {
  188. font-size: 16px;
  189. }
  190. </style>