Manage.vue 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <script setup lang="ts">
  2. import { onMounted, ref, nextTick, getCurrentInstance, reactive, onBeforeUnmount } from 'vue';
  3. import utils from "../util/common";
  4. import { useRoute } from "vue-router";
  5. import router from '../router/index'
  6. // import { removeToken } from "../util/tokenUtil";
  7. import { useUserInfo } from '@/stores/userInfo';
  8. const home = ref("");
  9. const avatar = ref("");
  10. const userName = ref("未知用户");
  11. const route = useRoute();////必须写在外面
  12. const gotoHome = () => {
  13. ///根据用户判断,如果是教师则返回后台
  14. let path = route.path;
  15. console.log(path);
  16. if (path.indexOf("/CourseEditor") >= 0 || path.indexOf("/CourseMng") >= 0) {
  17. router.push({
  18. path: "/CourseMng",
  19. });
  20. return;
  21. }
  22. router.push({
  23. path: "/TaskMng",
  24. });
  25. }
  26. const logOut = () => {
  27. const userInfo = useUserInfo();
  28. userInfo.removeToken();
  29. router.push({
  30. path: "/",
  31. });
  32. }
  33. onMounted(() => {
  34. const userInfo = useUserInfo();
  35. userName.value = userInfo.nickName;
  36. // 判断是否是老师老接口是 1, 新接口是 0
  37. // if (userInfo.userType != 1) {
  38. if (userInfo.userType != 0) {
  39. router.push({
  40. path: "/",
  41. });
  42. }
  43. });
  44. </script>
  45. <template>
  46. <el-container class="el-wrapper">
  47. <el-header class="header-title-wrap">
  48. <div class="header-title">排水管道智能检测教师平台</div>
  49. <div class="header-opts">
  50. <el-popover trigger="click">
  51. <template #reference>
  52. <div class="user-wrap">
  53. <el-avatar>
  54. <el-icon :size="24"><Avatar /></el-icon>
  55. </el-avatar>
  56. <span class="user-name">{{userName}}</span>
  57. </div>
  58. </template>
  59. <el-col>
  60. <div @click="logOut" style="cursor:pointer;">
  61. <a class="drawdown-item">
  62. <el-icon style="vertical-align: middle;margin:-3px 0.5rem 0 0; height:1.2rem; line-height:1rem;">
  63. <SwitchButton />
  64. </el-icon>
  65. <span>退出登录</span>
  66. </a>
  67. </div>
  68. </el-col>
  69. </el-popover>
  70. <a class="back-btn" @click="gotoHome" v-if="route.path.toLowerCase().indexOf('taskmng')<1" style="" title="返回"></a>
  71. </div>
  72. </el-header>
  73. <el-container class="el-main">
  74. <router-view />
  75. </el-container>
  76. </el-container>
  77. </template>
  78. <style scoped>
  79. .el-wrapper {
  80. display: grid;
  81. height: 100%;
  82. width: 100%;
  83. overflow: hidden;
  84. grid-template-rows: 60px 1fr;
  85. }
  86. .el-container {
  87. width: 100%;
  88. padding: 0;
  89. overflow: hidden;
  90. }
  91. .header-title-wrap {
  92. width: 100%;
  93. color: #fff;
  94. background-color: var(--el-color-primary);
  95. display: flex;
  96. justify-content: space-between;
  97. }
  98. .el-aside {
  99. transition: width 0.5s ease;
  100. }
  101. .container-main {
  102. transition: width 0.5s ease;
  103. }
  104. .el-menu {
  105. transition: width 0.5s ease;
  106. }
  107. .el-main {
  108. height: calc(100vh - 60px);
  109. /* background:#ccc;*/
  110. display: flex;
  111. background-color: rgb(246,246,246);
  112. }
  113. .header-title {
  114. background-color: var(--el-color-primary);
  115. font-weight: bold;
  116. font-size: 1.5rem;
  117. line-height: 60px;
  118. justify-self: flex-start;
  119. width: 20rem;
  120. }
  121. .header-opts {
  122. margin-right: 1rem;
  123. display: flex;
  124. align-items: center;
  125. }
  126. .header-opts > .el-avatar {
  127. margin-right: 1rem;
  128. cursor: pointer;
  129. }
  130. .user-wrap {
  131. display: flex;
  132. justify-self: flex-start;
  133. vertical-align: middle;
  134. height: 100%;
  135. align-items: center;
  136. cursor: pointer;
  137. }
  138. .user-name {
  139. margin-left: 0.5rem;
  140. }
  141. .log-out {
  142. justify-self: flex-end;
  143. line-height: 60px;
  144. cursor: pointer;
  145. }
  146. .header-bread {
  147. height: 3rem;
  148. display: flex;
  149. align-items: center;
  150. color: var(--el-text-color-regular);
  151. }
  152. .el-breadcrumb {
  153. line-height: 3rem;
  154. }
  155. .avatar {
  156. }
  157. .el-avatar {
  158. background: none;
  159. }
  160. .back-btn {
  161. margin-right: 0rem;
  162. margin-left:2rem;
  163. display: flex;
  164. align-self: center;
  165. background-image:url(@/assets/techer/task-back.png);
  166. height:2rem;
  167. width:2rem;
  168. background-size:2rem;
  169. background-repeat:no-repeat;
  170. background-position:center;
  171. }
  172. .drawdown-item {
  173. display: block;
  174. height: 2rem;
  175. line-height: 2rem;
  176. font-size: 1rem;
  177. text-decoration: none;
  178. color: var(--el-color-primary);
  179. }
  180. .container-main {
  181. }
  182. .el-aside {
  183. height: 100%;
  184. border-right: 1px solid var(--el-border-color);
  185. }
  186. .el-menu {
  187. height: calc(100vh - 60px);
  188. border-right: none !important;
  189. }
  190. .header-bread {
  191. height: 3rem;
  192. }
  193. .el-breadcrumb {
  194. line-height: 3rem;
  195. }
  196. .bread {
  197. }
  198. .el-main-inner {
  199. overflow: hidden;
  200. box-sizing: border-box;
  201. }
  202. </style>