| | |
| | | <template> |
| | | <div class="side-menu-wrapper"> |
| | | <logo :collapse="isCollapse" /> |
| | | <div class="side-menu-content"> |
| | | <el-menu |
| | | :default-active="activeMenu" |
| | | :collapse="isCollapse" |
| | | :background-color="menuStyle.bg" |
| | | :text-color="menuStyle.text" |
| | | :unique-opened="false" |
| | | :active-text-color="menuStyle.activeText" |
| | | :collapse-transition="false" |
| | | mode="vertical"> |
| | | <sidebar-item v-for="route in menus" :key="route.path" :item="route" :base-path="route.path" /> |
| | | </el-menu> |
| | | </div> |
| | | <div class="side-menu-content"> |
| | | <el-menu |
| | | :default-active="activeMenu" |
| | | :collapse="isCollapse" |
| | | :background-color="menuStyle.bg" |
| | | :text-color="menuStyle.text" |
| | | :unique-opened="false" |
| | | :active-text-color="menuStyle.activeText" |
| | | :collapse-transition="false" |
| | | mode="vertical" |
| | | > |
| | | <sidebar-item |
| | | v-for="route in menus" |
| | | :key="route.path" |
| | | :item="route" |
| | | :base-path="route.path" |
| | | /> |
| | | </el-menu> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapGetters } from 'vuex' |
| | | import Logo from './Logo' |
| | | import { mapGetters } from "vuex"; |
| | | import Logo from "./Logo"; |
| | | import sidebarItem from "./SidebarItem.vue"; |
| | | import routes from "@/router/routes"; |
| | | export default { |
| | | components: { Logo, sidebarItem}, |
| | | data() { |
| | | return { |
| | | menuStyle: { |
| | | bg: "#304156", |
| | | text: "#bfcbd9", |
| | | activeText: "#409EFF" |
| | | }, |
| | | menus: routes |
| | | } |
| | | }, |
| | | components: { Logo, sidebarItem }, |
| | | data() { |
| | | return { |
| | | menuStyle: { |
| | | bg: "#304156", |
| | | text: "#bfcbd9", |
| | | activeText: "#409EFF", |
| | | }, |
| | | menus: routes, |
| | | }; |
| | | }, |
| | | computed: { |
| | | ...mapGetters([ |
| | | 'sidebar' |
| | | ]), |
| | | ...mapGetters(["sidebar", "uid"]), |
| | | activeMenu() { |
| | | const route = this.$route; |
| | | const { meta, path } = route; |
| | |
| | | return path; |
| | | }, |
| | | isCollapse() { |
| | | return !this.sidebar.opened |
| | | return !this.sidebar.opened; |
| | | }, |
| | | }, |
| | | mounted() { |
| | | if (this.uid > 1000) { |
| | | this.menus = this.menus.filter( |
| | | (v) => !["/user"].some((vv) => vv == v.path) |
| | | ); |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="less" scoped> |
| | | .side-menu-wrapper { |
| | | display: flex; |
| | | flex-direction: column; |
| | | .side-menu-content { |
| | | flex: 1; |
| | | overflow-y: auto; |
| | | } |
| | | display: flex; |
| | | flex-direction: column; |
| | | .side-menu-content { |
| | | flex: 1; |
| | | overflow-y: auto; |
| | | } |
| | | } |
| | | </style> |