layout.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <el-container class="container">
  3. <el-aside width="200px">
  4. <div class="logo">
  5. <img src="./static/logo.png" alt="logo">
  6. </div>
  7. <el-menu default-active="1" class="el-menu-vertical-demo" background-color="#141b2e" text-color="#E4ECFF">
  8. <router-link to="/map">
  9. <el-menu-item index="1">
  10. <i class="el-icon-map-location"></i>
  11. <span slot="title">实时分布</span>
  12. </el-menu-item>
  13. </router-link>
  14. <el-submenu index="2">
  15. <template #title><i class="el-icon-monitor"></i>设备管理</template>
  16. <router-link to="/devices">
  17. <el-menu-item index="2-1">设备列表</el-menu-item>
  18. </router-link>
  19. <router-link to="/logs">
  20. <el-menu-item index="2-2">消息日志</el-menu-item>
  21. </router-link>
  22. </el-submenu>
  23. <el-submenu index="3">
  24. <template #title><i class="el-icon-setting"></i>系统设置</template>
  25. <el-menu-item index="3-1">项目管理</el-menu-item>
  26. <el-menu-item index="3-2">项目组管理</el-menu-item>
  27. <el-menu-item index="3-3">角色管理</el-menu-item>
  28. <router-link to="/users">
  29. <el-menu-item index="3-4">用户管理</el-menu-item>
  30. </router-link>
  31. </el-submenu>
  32. </el-menu>
  33. </el-aside>
  34. <el-container>
  35. <el-header class='header' style="height: 50px;">
  36. <div class="dropdown">
  37. <el-dropdown trigger="click">
  38. <span class="el-dropdown-link">
  39. {{nickname}}<i class="el-icon-arrow-down el-icon--right"></i>
  40. </span>
  41. <template #dropdown>
  42. <el-dropdown-menu>
  43. <el-dropdown-item>退出登录</el-dropdown-item>
  44. </el-dropdown-menu>
  45. </template>
  46. </el-dropdown>
  47. </div>
  48. </el-header>
  49. <el-main>
  50. <router-view />
  51. </el-main>
  52. </el-container>
  53. </el-container>
  54. </template>
  55. <script>
  56. import TokenManager from '../../static/js/token.js'
  57. export default {
  58. data() {
  59. return {
  60. nickname: '管理员',
  61. };
  62. },
  63. mounted: function() {
  64. this.initToken();
  65. },
  66. methods: {
  67. /**
  68. * 查看token信息
  69. */
  70. initToken: function() {
  71. try {
  72. const obj = JSON.parse(TokenManager.getToken());
  73. if (TokenManager.getVerify() != null) {
  74. this.nickname = obj.nickname;
  75. return;
  76. }
  77. this.$http.Get(this.$global.verify, {}).then(res => {
  78. TokenManager.setVerify();
  79. this.nickname = obj.nickname;
  80. })
  81. } catch {
  82. this.$router.replace("/login");
  83. }
  84. }
  85. }
  86. };
  87. </script>
  88. <style scoped lang="scss">
  89. .container {
  90. height: 100%;
  91. & .logo {
  92. box-sizing: border-box;
  93. padding-top: 10px;
  94. padding-left: 20px;
  95. width: 100%;
  96. height: 60px;
  97. & img {
  98. width: 40px;
  99. height: 40px;
  100. }
  101. }
  102. & .header {
  103. background: #f3f5f9;
  104. & .dropdown {
  105. float: right;
  106. margin-right: 30px;
  107. cursor: pointer;
  108. line-height: 50px;
  109. }
  110. }
  111. & .el-main {
  112. background: #f3f5f9;
  113. height: 100%;
  114. overflow-x: hidden;
  115. overflow-y: scroll;
  116. box-sizing: border-box;
  117. padding: 0 15px 20px 20px;
  118. }
  119. & .el-aside {
  120. height: 100%;
  121. background: #141b2e;
  122. & .el-menu {
  123. border: none;
  124. }
  125. }
  126. }
  127. </style>