HomeView.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. <template>
  2. <div class="home">
  3. <a-layout id="components-layout-demo-top-side-2">
  4. <a-layout-header class="header">
  5. <HomeHeader :leftVisible.sync="leftVisible" :is-login="true" />
  6. </a-layout-header>
  7. <a-layout class="main_body">
  8. <a-drawer v-if="leftVisible"
  9. placement="left"
  10. :visible="leftVisible"
  11. :get-container="false"
  12. :closable="false"
  13. @close="closeLeft"
  14. width="auto"
  15. :wrap-style="{ position: 'absolute' }">
  16. <HomeLeft :close="()=>{leftVisible=false}" />
  17. </a-drawer>
  18. <a-layout-sider
  19. v-model="collapse"
  20. :trigger="null"
  21. :width="asideWidth"
  22. style="background: #fff"
  23. :collapsible="true"
  24. :collapsed-width="collapsedWidth"
  25. >
  26. <HomeAside :collapse.sync="collapse" />
  27. </a-layout-sider>
  28. <!-- 内容 -->
  29. <a-layout-content class="home-page">
  30. <Transition name="fade-transform" mode="out-in">
  31. <router-view :key="$route.matched[1].name" />
  32. </transition>
  33. </a-layout-content>
  34. </a-layout>
  35. </a-layout>
  36. </div>
  37. </template>
  38. <script>
  39. import "@/style/common.css";
  40. import HomeHeader from "@/components/home/HomeHeader.vue";
  41. import HomeAside from "@/components/home/HomeAside.vue";
  42. import HomeLeft from "@/components/home/HomeLeft.vue";
  43. export default {
  44. name: "HomeView",
  45. components: {
  46. HomeHeader,
  47. HomeAside,
  48. HomeLeft,
  49. },
  50. data() {
  51. return {
  52. collapse: true, // 侧边栏是否收起
  53. leftVisible: false,
  54. asideWidth: 160,
  55. collapsedWidth: 60,
  56. contentWidth: "84%",
  57. contentHeight: 450,
  58. };
  59. },
  60. watch: {
  61. $route() {
  62. this.judgeHideAside();
  63. }
  64. },
  65. mounted() {
  66. this.judgeHideAside();
  67. if (this.$route.matched.length===1) {
  68. this.$router.push({path: '/dashboard'})
  69. }
  70. },
  71. methods: {
  72. closeLeft() {
  73. this.leftVisible = false
  74. },
  75. judgeHideAside() {
  76. let name = this.$route.name
  77. //if (['dashboard','notice'].indexOf(name)>-1) {
  78. if (['notice'].indexOf(name)>-1) {
  79. this.asideWidth = 0;
  80. this.collapsedWidth=0;
  81. }
  82. },
  83. },
  84. };
  85. </script>
  86. <style lang="less" scoped>
  87. .home {
  88. width: 100%;
  89. height: 100%;
  90. /deep/ .ant-drawer-body {
  91. padding: 0;
  92. height: 100%;
  93. }
  94. .header {
  95. height: 60px;
  96. padding: 0;
  97. line-height: 60px;
  98. }
  99. .main_body{
  100. height:calc(100vh - 60px);
  101. position: relative;
  102. }
  103. .home-page {
  104. display: inline-block;
  105. background: #fff;
  106. margin: 0;
  107. transition: all 1s;
  108. overflow: hidden;
  109. }
  110. }
  111. </style>