HomeView.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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 />
  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. <router-view />
  31. </a-layout-content>
  32. </a-layout>
  33. </a-layout>
  34. </div>
  35. </template>
  36. <script>
  37. import "@/style/common.css";
  38. import HomeHeader from "@/components/home/HomeHeader.vue";
  39. import HomeAside from "@/components/home/HomeAside.vue";
  40. import HomeLeft from "@/components/home/HomeLeft.vue";
  41. export default {
  42. name: "HomeView",
  43. components: {
  44. HomeHeader,
  45. HomeAside,
  46. HomeLeft,
  47. },
  48. data() {
  49. return {
  50. collapse: true, // 侧边栏是否收起
  51. leftVisible: false,
  52. asideWidth: 160,
  53. collapsedWidth: 60,
  54. contentWidth: "84%",
  55. contentHeight: 450,
  56. };
  57. },
  58. watch: {
  59. $route() {
  60. this.judgeHideAside();
  61. }
  62. },
  63. mounted() {
  64. this.judgeHideAside();
  65. if (this.$route.matched.length===1) {
  66. this.$router.push({path: '/dashboard'})
  67. }
  68. },
  69. methods: {
  70. closeLeft() {
  71. this.leftVisible = false
  72. },
  73. judgeHideAside() {
  74. let name = this.$route.name
  75. //if (['dashboard','notice'].indexOf(name)>-1) {
  76. if (['notice'].indexOf(name)>-1) {
  77. this.asideWidth = 0;
  78. this.collapsedWidth=0;
  79. }
  80. },
  81. },
  82. };
  83. </script>
  84. <style lang="less" scoped>
  85. .home {
  86. width: 100%;
  87. height: 100%;
  88. /deep/ .ant-drawer-body {
  89. padding: 0;
  90. height: 100%;
  91. }
  92. .header {
  93. height: 60px;
  94. padding: 0;
  95. line-height: 60px;
  96. }
  97. .main_body{
  98. height:calc(100vh - 60px);
  99. position: relative;
  100. }
  101. .home-page {
  102. display: inline-block;
  103. background: #fff;
  104. margin: 0;
  105. transition: all 1s;
  106. overflow: hidden;
  107. }
  108. }
  109. </style>