scorpio 2 年之前
父節點
當前提交
0614ea63cb
共有 2 個文件被更改,包括 74 次插入10 次删除
  1. 55 2
      src/layout/index.vue
  2. 19 8
      src/layout/top.vue

+ 55 - 2
src/layout/index.vue

@@ -2,10 +2,10 @@
   <div class="full-screen flex flex-justify-start">
   <div class="full-screen flex flex-justify-start">
     <el-container>
     <el-container>
       <el-header class="header">
       <el-header class="header">
-        <top />
+        <top @openMenu="show = true" />
       </el-header>
       </el-header>
       <div class="flex" style="padding: 20px 20px; background-color: #f6f7f8">
       <div class="flex" style="padding: 20px 20px; background-color: #f6f7f8">
-        <el-aside style="width: 200px">
+        <el-aside style="width: 200px" v-if="!mini">
           <left />
           <left />
         </el-aside>
         </el-aside>
         <el-main class="wt-main" @scroll="scroll">
         <el-main class="wt-main" @scroll="scroll">
@@ -19,6 +19,14 @@
         </el-main>
         </el-main>
       </div>
       </div>
     </el-container>
     </el-container>
+    <el-drawer v-model="show" direction="ltr" :with-header="false" :size="280">
+      <div>
+        <div class="padding-left flex flex-justify-start">
+          <el-button icon="DArrowLeft" circle @click="show = false" />
+        </div>
+        <left />
+      </div>
+    </el-drawer>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -36,12 +44,26 @@ export default {
     const permission = permissionStore()
     const permission = permissionStore()
     return { keepAlive, permission }
     return { keepAlive, permission }
   },
   },
+  data() {
+    return {
+      show: false,
+      mini: false
+    }
+  },
   created() {
   created() {
     this.keepAlive.$subscribe(res => {
     this.keepAlive.$subscribe(res => {
       console.log(this.keepAlive.list)
       console.log(this.keepAlive.list)
     })
     })
     this.getPermission()
     this.getPermission()
   },
   },
+  mounted() {
+    this.setScale()
+    this.onresize = this.debounce(() => this.setScale(), 100)
+    window.addEventListener('resize', this.onresize)
+  },
+  beforeUnmount() {
+    window.removeEventListener('resize', this.onresize)
+  },
   methods: {
   methods: {
     getPermission() {
     getPermission() {
       this.$api.login.getPermission().then(res => {
       this.$api.login.getPermission().then(res => {
@@ -53,6 +75,33 @@ export default {
     },
     },
     scroll(event) {
     scroll(event) {
       this.$bus.emit('scorll', event)
       this.$bus.emit('scorll', event)
+    },
+    // 防抖
+    debounce(fn, t) {
+      const delay = t || 500
+      let timer
+      return function () {
+        const args = arguments
+        if (timer) {
+          clearTimeout(timer)
+        }
+        const that = this
+        timer = setTimeout(() => {
+          timer = null
+          fn.apply(that, args)
+        }, delay)
+      }
+    },
+
+    // 设置缩放比例
+    setScale() {
+      const width = document.documentElement.clientWidth
+      if (width < 1590) {
+        this.mini = true
+      } else {
+        this.mini = false
+      }
+      this.$bus.emit('sizeChange', width)
     }
     }
   }
   }
 }
 }
@@ -69,4 +118,8 @@ export default {
   background-color: #f6f7f8;
   background-color: #f6f7f8;
   padding: 0;
   padding: 0;
 }
 }
+
+:deep(.el-drawer) {
+  --el-drawer-bg-color: #f6f7f8;
+}
 </style>
 </style>

+ 19 - 8
src/layout/top.vue

@@ -6,6 +6,13 @@
     >
     >
       <el-col :span="12">
       <el-col :span="12">
         <div class="flex flex-justify-start flex-align-center padding">
         <div class="flex flex-justify-start flex-align-center padding">
+          <el-button
+            icon="Menu"
+            class="mr-20"
+            circle
+            @click="openMenu"
+            v-if="mini"
+          />
           <div class="flex flex-center">
           <div class="flex flex-center">
             <img src="@/assets/svg/logo.svg" />
             <img src="@/assets/svg/logo.svg" />
           </div>
           </div>
@@ -18,10 +25,7 @@
             :class="dataType === 'project' ? 'black' : 'white'"
             :class="dataType === 'project' ? 'black' : 'white'"
             @click="show = true"
             @click="show = true"
           >
           >
-            <el-icon class="mr-5">
-              <Search />
-            </el-icon>
-            <span>搜索</span>
+            <el-button icon="Search" circle />
           </div>
           </div>
           <div class="padding flex flex-align-center pointer">
           <div class="padding flex flex-align-center pointer">
             <el-avatar
             <el-avatar
@@ -107,7 +111,8 @@ export default {
       isAll: 1,
       isAll: 1,
       filterTypeName: '全部',
       filterTypeName: '全部',
       resultCount: 0,
       resultCount: 0,
-      title: ''
+      title: '',
+      mini: false
     }
     }
   },
   },
   created() {
   created() {
@@ -116,9 +121,12 @@ export default {
     if (tmp) {
     if (tmp) {
       this.dataType = tmp
       this.dataType = tmp
     }
     }
-    this.$bus.on('navChange', res => {
-      console.log(res)
-      this.dataType = res
+    this.$bus.on('sizeChange', res => {
+      if (res < 1590) {
+        this.mini = true
+      } else {
+        this.mini = false
+      }
     })
     })
   },
   },
   methods: {
   methods: {
@@ -247,6 +255,9 @@ export default {
     close() {
     close() {
       this.params.keyword = ''
       this.params.keyword = ''
       this.show = false
       this.show = false
+    },
+    openMenu() {
+      this.$emit('openMenu')
     }
     }
   }
   }
 }
 }