LeftNav.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <template>
  2. <div class="sidebar">
  3. <div style="font-family: AliMaMa;font-size: 30px;font-weight: 1000;text-align: left;">
  4. <span style="position: absolute;top:-3px;left: 70px;color: #fff;">目录</span>
  5. </div>
  6. <div style="height: 40px"></div>
  7. <el-menu
  8. :default-openeds="['/1']"
  9. active-text-color="#ffd04b"
  10. background-color="transparent"
  11. class="sidebar-el-menu"
  12. text-color="#fff"
  13. @select="selectMenu">
  14. <!-- 一级菜单 -->
  15. <template v-for="item in list">
  16. <el-submenu v-if="item.children && item.children.length" :id="item.path" :key="item.path"
  17. :index="item.path">
  18. <template slot="title"><img :src="require('../fdjh/img/plan.png')" style="margin-right: 8px;"
  19. width="28px"/><span style="font-size:18px;font-weight:bold"><div
  20. class="d1">{{ item.name }}</div></span>
  21. </template>
  22. <!-- 二级菜单 -->
  23. <template v-for="itemChild in item.children">
  24. <el-submenu v-if="itemChild.children && itemChild.children.length" :id="itemChild.path"
  25. :key="itemChild.path"
  26. :index="itemChild.path">
  27. <template slot="title"><img :src="require('../fdjh/img/pc1.png')"
  28. style="margin-right: 8px;"/><span
  29. style="font-size:16px;font-weight:bold">{{ itemChild.name }}</span></template>
  30. <!-- 三级菜单 -->
  31. <el-menu-item v-for="itemChild_Child in itemChild.children" :id="itemChild_Child.path"
  32. :key="itemChild_Child.path"
  33. :index="itemChild_Child.path">
  34. <img :src="require('../fdjh/img/last1.png')" style="margin-right: 8px;"/><span
  35. slot="title"><div class="d1">{{ itemChild_Child.name }}</div></span></el-menu-item>
  36. </el-submenu>
  37. <el-menu-item v-else :id="itemChild.path" :key="itemChild.path" :index="itemChild.path"><img
  38. :src="require('../fdjh/img/pc1.png')"
  39. style="margin-right: 8px;"/><span slot="title">{{ itemChild.name }}</span>
  40. </el-menu-item>
  41. </template>
  42. </el-submenu>
  43. <el-menu-item v-else :id="item.path" :key="item.path" :index="item.path"><img
  44. :src="require('../fdjh/img/plan.png')" style="margin-right: 8px;"
  45. width="28px"/><span
  46. slot="title">{{ item.name }}</span></el-menu-item>
  47. </template>
  48. </el-menu>
  49. </div>
  50. </template>
  51. <script>
  52. export default {
  53. data() {
  54. return {
  55. list: [
  56. {
  57. path: "/1",
  58. name: "系统配置与日志",
  59. children: [
  60. {
  61. path: "/1/1",
  62. name: "系统日志",
  63. children: [
  64. {
  65. path: "/#/jkcx",
  66. name: "接口、程序",
  67. }
  68. ]
  69. },
  70. {
  71. path: "/1/2",
  72. name: "系统配置",
  73. children: [
  74. {
  75. path: "/#/pzb",
  76. name: "配置表",
  77. }
  78. ]
  79. }
  80. ]
  81. }
  82. ]
  83. }
  84. },
  85. methods: {
  86. selectMenu(key, keyPath, node) {
  87. // 右侧区域显示页面
  88. var parentIframe = parent.document.getElementById('showcontent');
  89. parentIframe.src = key;
  90. // 1、2级菜单设置
  91. for (var i = 0; i < document.getElementsByClassName('el-submenu').length; i++) {
  92. if (node.$parent.$attrs.id == document.getElementsByClassName('el-submenu')[i].id) {
  93. document.getElementById(document.getElementsByClassName('el-submenu')[i].id).getElementsByTagName('img')[0].src = require('../fdjh/img/pc.png');
  94. document.getElementById(document.getElementsByClassName('el-submenu')[i].id).getElementsByTagName('span')[0].style = 'color:rgb(227,220,10);font-size:16px;font-weight:bold';
  95. } else {
  96. if (document.getElementsByClassName('el-submenu')[i].id != '/1') {
  97. document.getElementById(document.getElementsByClassName('el-submenu')[i].id).getElementsByTagName('img')[0].src = require('../fdjh/img/pc1.png');
  98. document.getElementById(document.getElementsByClassName('el-submenu')[i].id).getElementsByTagName('span')[0].style = 'font-size:16px;font-weight:bold';
  99. }
  100. if (document.getElementsByClassName('el-submenu')[i].id == '/1') {
  101. // root根设置背景图
  102. document.getElementById(document.getElementsByClassName('el-submenu')[i].id).getElementsByTagName('span')[0].className = "rootbg";
  103. }
  104. }
  105. }
  106. // 3级菜单设置
  107. for (var i = 0; i < document.getElementsByClassName('el-menu-item').length; i++) {
  108. if (document.getElementsByClassName('el-menu-item')[i].id == key) {
  109. document.getElementsByClassName('el-menu-item')[i].getElementsByTagName('img')[0].src = require('../fdjh/img/last.png');
  110. document.getElementById(document.getElementsByClassName('el-menu-item')[i].id).getElementsByTagName('span')[0].className = "test";
  111. document.getElementById(document.getElementsByClassName('el-menu-item')[i].id).getElementsByTagName('span')[0].style = 'color:rgb(227,220,10);font-size:16px;font-weight:bold';
  112. } else {
  113. document.getElementsByClassName('el-menu-item')[i].getElementsByTagName('img')[0].src = require('../fdjh/img/last1.png');
  114. document.getElementById(document.getElementsByClassName('el-menu-item')[i].id).getElementsByTagName('span')[0].className = "";
  115. document.getElementById(document.getElementsByClassName('el-menu-item')[i].id).getElementsByTagName('span')[0].style = 'font-size:16px;font-weight:bold';
  116. }
  117. }
  118. },
  119. }
  120. }
  121. </script>
  122. <style scoped>
  123. .d1 {
  124. padding-left: 8px;
  125. height: 38px;
  126. width: 90%;
  127. display: inline-block;
  128. line-height: 38px;
  129. }
  130. .test {
  131. background: url(../fdjh/img/node_bg.png) no-repeat;
  132. //padding-left: 8px; height: 38px; width: 90%; display: inline-block; line-height: 38px;
  133. }
  134. .rootbg {
  135. background: url(../fdjh/img/root_bg.png) no-repeat;
  136. //padding-left: 8px; height: 38px; width: 90%; display: inline-block; line-height: 38px;
  137. }
  138. .sidebar {
  139. display: block;
  140. text-align: left;
  141. }
  142. .sidebar::-webkit-scrollbar {
  143. width: 0;
  144. }
  145. .sidebar-el-menu:not(.el-menu--collapse) {
  146. margin: 0px 0 30px 30px;
  147. background-size: 100% 100%;
  148. height: 90%;
  149. }
  150. /deep/ .el-submenu__title:hover {
  151. background-color: rgb(103, 118, 49) !important;
  152. }
  153. /deep/ .sidebar-el-menu {
  154. margin-left: 23px !important;
  155. }
  156. .sidebar > ul {
  157. height: 100%;
  158. }
  159. .el-menu {
  160. border: 0 !important;
  161. }
  162. .el-menu-item {
  163. height: 40px;
  164. font-size: 16px;
  165. font-weight: bold;
  166. }
  167. .el-submenu .el-menu-item:hover {
  168. background-color: rgb(103, 118, 49) !important;
  169. }
  170. .el-sub-menu__title:hover {
  171. background-color: rgb(103, 118, 49) !important;
  172. }
  173. </style>