index.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <el-container class="admin-home">
  3. <el-aside width="auto">
  4. <Asider :isCollapse="asideStatus"></Asider>
  5. </el-aside>
  6. <el-container>
  7. <el-header>
  8. <Header
  9. :asideStatus="asideStatus"
  10. @asider-status="asiderStatusChange"
  11. ></Header>
  12. </el-header>
  13. <el-main>
  14. <el-scrollbar style="height: 100%">
  15. <transition
  16. name="fade"
  17. mode="out-in"
  18. appear
  19. enter-class="enter"
  20. enter-active-class="enterActive"
  21. enter-to-class="enterTo"
  22. leave-class="leave"
  23. leave-active-class="leaveActive"
  24. leave-to-class="leaveTo"
  25. >
  26. <router-view></router-view>
  27. </transition>
  28. </el-scrollbar>
  29. </el-main>
  30. <el-footer>
  31. <Footer></Footer>
  32. </el-footer>
  33. </el-container>
  34. </el-container>
  35. </template>
  36. <script>
  37. import Asider from './components/Asider';
  38. import Footer from './components/Footer';
  39. import Header from './components/Header';
  40. import { getCache } from '@/utils/admin/tools';
  41. import { USER_AUTH } from '@/utils/admin/ConstantConfig';
  42. export default {
  43. name: 'Home',
  44. components: {
  45. Footer,
  46. Asider,
  47. Header,
  48. },
  49. data() {
  50. return {
  51. asideStatus: false,
  52. };
  53. },
  54. beforeRouteEnter(to, from, next) {
  55. const data = getCache(USER_AUTH);
  56. // 未查询到用户权限 回归登录
  57. if (!data) {
  58. next({ name: 'Login' });
  59. return;
  60. }
  61. next();
  62. },
  63. methods: {
  64. asiderStatusChange() {
  65. this.asideStatus = !this.asideStatus;
  66. },
  67. },
  68. };
  69. </script>
  70. <style lang="scss" scoped>
  71. .admin-home {
  72. flex: 1;
  73. height: 100vh;
  74. .el-header, .el-footer {
  75. background-color: #B3C0D1;
  76. color: #333;
  77. text-align: center;
  78. line-height: 60px;
  79. height: 60px;
  80. overflow: hidden;
  81. }
  82. .el-aside {
  83. background-color: #D3DCE6;
  84. color: #333;
  85. text-align: center;
  86. }
  87. .el-main {
  88. background-color: #E9EEF3;
  89. color: #333;
  90. /*padding: 30px 0 30px 30px;*/
  91. padding: 0;
  92. ::v-deep .el-scrollbar__wrap {
  93. overflow-x: hidden;
  94. }
  95. ::v-deep .el-scrollbar__bar.is-horizontal {
  96. visibility: hidden;
  97. }
  98. }
  99. .admin-home-transition {
  100. overflow-x: hidden;
  101. }
  102. /**
  103. * transform
  104. */
  105. ::v-deep .enterActive, ::v-deep .leaveActive {
  106. transition: all .3s ease;
  107. }
  108. ::v-deep .enterTo, ::v-deep .leave {
  109. opacity: 1;
  110. left: 0;
  111. transform: translate(0);
  112. }
  113. ::v-deep .enter, ::v-deep .leaveTo {
  114. opacity: 0;
  115. transform: translate(100px);
  116. }
  117. }
  118. </style>