瀏覽代碼

fix some bugs

Pan 7 年之前
父節點
當前提交
5b7aafacc4
共有 2 個文件被更改,包括 10 次插入9 次删除
  1. 6 5
      src/components/ScrollBar/index.vue
  2. 4 4
      src/views/layout/components/Sidebar/SidebarItem.vue

+ 6 - 5
src/components/ScrollBar/index.vue

@@ -1,5 +1,5 @@
1
 <template>
1
 <template>
2
-  <div class="scroll-container" ref="scrollContainer" @mousewheel="handleScroll">
2
+  <div class="scroll-container" ref="scrollContainer" @wheel.prevent="handleScroll" >
3
     <div class="scroll-wrapper" ref="scrollWrapper" :style="{top: top + 'px'}">
3
     <div class="scroll-wrapper" ref="scrollWrapper" :style="{top: top + 'px'}">
4
       <slot></slot>
4
       <slot></slot>
5
     </div>
5
     </div>
@@ -8,6 +8,7 @@
8
 
8
 
9
 <script>
9
 <script>
10
 const delta = 15
10
 const delta = 15
11
+
11
 export default {
12
 export default {
12
   name: 'scrollBar',
13
   name: 'scrollBar',
13
   data() {
14
   data() {
@@ -17,19 +18,19 @@ export default {
17
   },
18
   },
18
   methods: {
19
   methods: {
19
     handleScroll(e) {
20
     handleScroll(e) {
20
-      e.preventDefault()
21
+      const eventDelta = e.wheelDelta || -e.deltaY * 3
21
       const $container = this.$refs.scrollContainer
22
       const $container = this.$refs.scrollContainer
22
       const $containerHeight = $container.offsetHeight
23
       const $containerHeight = $container.offsetHeight
23
       const $wrapper = this.$refs.scrollWrapper
24
       const $wrapper = this.$refs.scrollWrapper
24
       const $wrapperHeight = $wrapper.offsetHeight
25
       const $wrapperHeight = $wrapper.offsetHeight
25
-      if (e.wheelDelta > 0) {
26
-        this.top = Math.min(0, this.top + e.wheelDelta)
26
+      if (eventDelta > 0) {
27
+        this.top = Math.min(0, this.top + eventDelta)
27
       } else {
28
       } else {
28
         if ($containerHeight - delta < $wrapperHeight) {
29
         if ($containerHeight - delta < $wrapperHeight) {
29
           if (this.top < -($wrapperHeight - $containerHeight + delta)) {
30
           if (this.top < -($wrapperHeight - $containerHeight + delta)) {
30
             this.top = this.top
31
             this.top = this.top
31
           } else {
32
           } else {
32
-            this.top = Math.max(this.top + e.wheelDelta, $containerHeight - $wrapperHeight - delta)
33
+            this.top = Math.max(this.top + eventDelta, $containerHeight - $wrapperHeight - delta)
33
           }
34
           }
34
         } else {
35
         } else {
35
           this.top = 0
36
           this.top = 0

+ 4 - 4
src/views/layout/components/Sidebar/SidebarItem.vue

@@ -1,21 +1,21 @@
1
 <template>
1
 <template>
2
   <div class="menu-wrapper">
2
   <div class="menu-wrapper">
3
-    <template v-for="item in routes">
3
+    <template v-for="item in routes" v-if="!item.hidden&&item.children">
4
 
4
 
5
-      <router-link v-if="!item.hidden&&item.children&&item.children.length===1" :to="item.path+'/'+item.children[0].path" :key="item.children[0].name">
5
+      <router-link v-if="item.children.length===1 && !item.children[0].children" :to="item.path+'/'+item.children[0].path" :key="item.children[0].name">
6
         <el-menu-item :index="item.path+'/'+item.children[0].path" class='submenu-title-noDropdown'>
6
         <el-menu-item :index="item.path+'/'+item.children[0].path" class='submenu-title-noDropdown'>
7
           <svg-icon v-if="item.children[0].meta&&item.children[0].meta.icon" :icon-class="item.children[0].meta.icon"></svg-icon>
7
           <svg-icon v-if="item.children[0].meta&&item.children[0].meta.icon" :icon-class="item.children[0].meta.icon"></svg-icon>
8
           <span v-if="item.children[0].meta&&item.children[0].meta.title">{{item.children[0].meta.title}}</span>
8
           <span v-if="item.children[0].meta&&item.children[0].meta.title">{{item.children[0].meta.title}}</span>
9
         </el-menu-item>
9
         </el-menu-item>
10
       </router-link>
10
       </router-link>
11
 
11
 
12
-      <el-submenu v-if="!item.hidden&&item.children&&item.children.length>1" :index="item.name||item.path" :key="item.name">
12
+      <el-submenu v-else :index="item.name||item.path" :key="item.name">
13
         <template slot="title">
13
         <template slot="title">
14
           <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon>
14
           <svg-icon v-if="item.meta&&item.meta.icon" :icon-class="item.meta.icon"></svg-icon>
15
           <span v-if="item.meta&&item.meta.title">{{item.meta.title}}</span>
15
           <span v-if="item.meta&&item.meta.title">{{item.meta.title}}</span>
16
         </template>
16
         </template>
17
 
17
 
18
-        <template v-if="!child.hidden" v-for="child in item.children">
18
+        <template v-for="child in item.children" v-if="!child.hidden">
19
           <sidebar-item class="nest-menu" v-if="child.children&&child.children.length>0" :routes="[child]" :key="child.path"></sidebar-item>
19
           <sidebar-item class="nest-menu" v-if="child.children&&child.children.length>0" :routes="[child]" :key="child.path"></sidebar-item>
20
 
20
 
21
           <router-link v-else :to="item.path+'/'+child.path" :key="child.name">
21
           <router-link v-else :to="item.path+'/'+child.path" :key="child.name">