Navside.vue 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <template>
  2. <div class="Navside">
  3. <div class="logoContainer">
  4. <img src="../assets/img/nav/logo.png" height="40" width="180"/>
  5. </div>
  6. <div class="userContainer">
  7. <img src="../assets/img/nav/head.png" height="51" width="51"/>
  8. <span>{{shopName}}</span>
  9. <em>{{userLevelText}}</em>
  10. </div>
  11. <el-row :class="[{'shortnav':isCollapse},{'longNav':!isCollapse}]">
  12. <el-col :span="24">
  13. <el-menu
  14. :default-active="userLevelDeafult"
  15. class="el-menu-vertical-demo"
  16. @open="handleOpen"
  17. @close="handleClose"
  18. @select="handleSelect"
  19. background-color="#ffffff"
  20. text-color="#777777"
  21. active-text-color="#fff"
  22. router
  23. >
  24. <el-menu-item :index="nav.clmid" :route="nav.clmurl" v-for="nav in navs" v-if="nav.show == userLevel">
  25. <i :class="nav.icon"></i>
  26. <span slot="title">{{nav.clmname}}</span>
  27. </el-menu-item>
  28. </el-menu>
  29. </el-col>
  30. </el-row>
  31. </div>
  32. </template>
  33. <script>
  34. import Navs from '../api/Navs';
  35. import {ManagerSelfQuery} from '../api/getApiRes.js'
  36. let qs = require('qs');
  37. export default {
  38. data() {
  39. return {
  40. wildState: 0,
  41. navs: [],
  42. shopName: 'xx店',
  43. userLevelText: '',
  44. userLevel: 0,
  45. userLevelDeafult: "11",
  46. }
  47. },
  48. props: ['isCollapse'],
  49. mounted() {
  50. this.getTableQuery();
  51. this.getManagerSelfQuery();
  52. },
  53. methods: {
  54. handleSelect(i, s, t) {
  55. // this.$emit('TabsAdd', i);//触发事件
  56. },
  57. getTableQuery() {
  58. // 菜单
  59. this.navs = Navs;
  60. },
  61. getManagerSelfQuery(){
  62. let that = this;
  63. let param = {
  64. token: localStorage.token,
  65. };
  66. let postdata = qs.stringify(param);
  67. ManagerSelfQuery(postdata).then(res => {
  68. let json = res;
  69. if (json.Code == 0) {
  70. that.userLevelText = json.Rs.Role.Name;
  71. that.userLevel = json.Rs.Role.State;
  72. localStorage.shopId = json.Rs.ShopId;
  73. } else {
  74. that.$message.error(json.Memo);
  75. }
  76. })
  77. },
  78. handleOpen(key, keyPath) {
  79. // console.log(key, keyPath);
  80. },
  81. handleClose(key, keyPath) {
  82. // console.log(key, keyPath);
  83. },
  84. },
  85. watch: {
  86. $route(to,from){
  87. this.userLevelDeafult = to.meta.clmid
  88. },
  89. },
  90. }
  91. </script>
  92. <style scoped>
  93. /*注释*/
  94. .Navside {
  95. width: 100%;
  96. height: 100%;
  97. overflow: hidden;
  98. display: block;
  99. margin: 0 auto;
  100. overflow-y: scroll;
  101. background-color: #fff;
  102. }
  103. .logoContainer {
  104. width: 256px;
  105. height: 72px;
  106. overflow: hidden;
  107. display: block;
  108. margin: 0 auto;
  109. background: #3799FF;
  110. }
  111. .logoContainer img {
  112. width: 100%;
  113. height: 100%;
  114. overflow: hidden;
  115. display: block;
  116. margin: 0 auto;
  117. margin-top: 1px;
  118. }
  119. .userContainer {
  120. width: 100%;
  121. overflow: hidden;
  122. display: block;
  123. margin: 0 auto;
  124. margin-bottom: 16px;
  125. padding-top: 19px;
  126. padding-bottom: 19px;
  127. border-bottom: 1px solid #F0F2F5;
  128. background: #fff;
  129. }
  130. .userContainer img {
  131. overflow: hidden;
  132. display: block;
  133. margin: 0 auto;
  134. margin-bottom: 16px;
  135. }
  136. .userContainer span {
  137. width: 100%;
  138. overflow: hidden;
  139. display: block;
  140. margin: 0 auto;
  141. color: #565656;
  142. font-size: 16px;
  143. }
  144. .userContainer em {
  145. width: 125px;
  146. height: 26px;
  147. line-height: 26px;
  148. text-align: center;
  149. color: #fff;
  150. overflow: hidden;
  151. display: block;
  152. margin: 0 auto;
  153. background: #E75296;
  154. border-radius: 250px;
  155. font-style: normal;
  156. margin-top: 8px;
  157. }
  158. /deep/ .el-menu {
  159. border: none;
  160. }
  161. /deep/ .el-menu-item.is-active {
  162. background-color:#3799FF!important;
  163. color: #fff!important;
  164. }
  165. /deep/ .el-menu-item:hover {
  166. background-color:#3799FF!important;
  167. color: #fff!important;
  168. }
  169. /deep/ .el-menu-item:hover i {
  170. color: #fff!important;
  171. }
  172. </style>