lph преди 1 година
родител
ревизия
a3ab08f585
променени са 2 файла, в които са добавени 73 реда и са изтрити 40 реда
  1. 58 34
      zkqy-ui/src/layout/components/Sidebar/SidebarItem.vue
  2. 15 6
      zkqy-ui/src/layout/components/Sidebar/index.vue

+ 58 - 34
zkqy-ui/src/layout/components/Sidebar/SidebarItem.vue

@@ -1,16 +1,40 @@
 <template>
   <div v-if="!item.hidden">
-    <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
-      <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
-        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
-          <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
+    <template
+      v-if="
+        hasOneShowingChild(item.children, item) &&
+        (!onlyOneChild.children || onlyOneChild.noShowingChildren) &&
+        !item.alwaysShow
+      "
+    >
+      <app-link
+        v-if="onlyOneChild.meta"
+        :to="resolvePath(onlyOneChild.path, onlyOneChild.query)"
+      >
+        <el-menu-item
+          :index="resolvePath(onlyOneChild.path)"
+          :class="{ 'submenu-title-noDropdown': !isNest }"
+        >
+          <item
+            :icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"
+            :title="onlyOneChild.meta.title"
+          />
         </el-menu-item>
       </app-link>
     </template>
 
-    <el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
+    <el-submenu
+      v-else
+      ref="subMenu"
+      :index="resolvePath(item.path)"
+      popper-append-to-body
+    >
       <template slot="title">
-        <item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
+        <item
+          v-if="item.meta"
+          :icon="item.meta && item.meta.icon"
+          :title="item.meta.title"
+        />
       </template>
       <sidebar-item
         v-for="child in item.children"
@@ -25,76 +49,76 @@
 </template>
 
 <script>
-import path from 'path'
-import { isExternal } from '@/utils/validate'
-import Item from './Item'
-import AppLink from './Link'
-import FixiOSBug from './FixiOSBug'
+import path from "path";
+import { isExternal } from "@/utils/validate";
+import Item from "./Item";
+import AppLink from "./Link";
+import FixiOSBug from "./FixiOSBug";
 
 export default {
-  name: 'SidebarItem',
+  name: "SidebarItem",
   components: { Item, AppLink },
   mixins: [FixiOSBug],
   props: {
     // route object
     item: {
       type: Object,
-      required: true
+      required: true,
     },
     isNest: {
       type: Boolean,
-      default: false
+      default: false,
     },
     basePath: {
       type: String,
-      default: ''
-    }
+      default: "",
+    },
   },
   data() {
-    this.onlyOneChild = null
-    return {}
+    this.onlyOneChild = null;
+    return {};
   },
   methods: {
     hasOneShowingChild(children = [], parent) {
       if (!children) {
         children = [];
       }
-      const showingChildren = children.filter(item => {
+      const showingChildren = children.filter((item) => {
         if (item.hidden) {
-          return false
+          return false;
         } else {
           // Temp set(will be used if only has one showing child)
-          this.onlyOneChild = item
-          return true
+          this.onlyOneChild = item;
+          return true;
         }
-      })
+      });
 
       // When there is only one child router, the child router is displayed by default
       if (showingChildren.length === 1) {
-        return true
+        return true;
       }
 
       // Show parent if there are no child router to display
       if (showingChildren.length === 0) {
-        this.onlyOneChild = { ... parent, path: '', noShowingChildren: true }
-        return true
+        this.onlyOneChild = { ...parent, path: "", noShowingChildren: true };
+        return true;
       }
 
-      return false
+      return false;
     },
     resolvePath(routePath, routeQuery) {
       if (isExternal(routePath)) {
-        return routePath
+        return routePath;
       }
       if (isExternal(this.basePath)) {
-        return this.basePath
+        return this.basePath;
       }
       if (routeQuery) {
         let query = JSON.parse(routeQuery);
-        return { path: path.resolve(this.basePath, routePath), query: query }
+        return { path: path.resolve(this.basePath, routePath), query: query };
       }
-      return path.resolve(this.basePath, routePath)
-    }
-  }
-}
+      return path.resolve(this.basePath, routePath);
+    },
+  },
+};
 </script>

+ 15 - 6
zkqy-ui/src/layout/components/Sidebar/index.vue

@@ -9,11 +9,9 @@
     }"
   >
     <logo v-if="showLogo" :collapse="isCollapse" />
-    <el-scrollbar 
-    :class="settings.sideTheme" 
-    wrap-class="scrollbar-wrapper"
-    >
+    <el-scrollbar :class="settings.sideTheme" wrap-class="scrollbar-wrapper">
       <el-menu
+        :default-openeds="openList"
         :default-active="activeMenu"
         :collapse="isCollapse"
         :background-color="
@@ -26,7 +24,7 @@
             ? variables.menuColor
             : variables.menuLightColor
         "
-        :unique-opened="true"
+        :unique-opened="false"
         :active-text-color="settings.theme"
         :collapse-transition="false"
         class="el-menu-vertical-demo"
@@ -68,6 +66,7 @@ export default {
       if (meta.activeMenu) {
         return meta.activeMenu;
       }
+      console.log(path);
       return path;
     },
     showLogo() {
@@ -81,6 +80,16 @@ export default {
       // return true
       // return false;
     },
+    openList() {
+      console.log(this.sidebarRouters);
+      let len = this.sidebarRouters.length;
+      let res = this.sidebarRouters.map((item) => item.path);
+      // for (let i = 0; i < len; i++) {
+      //   res.push(i);
+      // }
+      console.log(res);
+      return res;
+    },
   },
   methods: {
     onLayoutResize() {
@@ -94,7 +103,7 @@ export default {
         this.isCollapse = false;
       }
       console.log(this.isCollapse);
-    }
+    },
   },
   mounted() {
     // window.addEventListener("resize", this.onLayoutResize);