Browse Source

tagview & sidebar 主题颜色与element ui(全局)同步

tags/v2.0
RuoYi 5 years ago
parent
commit
bb565f87cf
  1. 95
      ruoyi-ui/src/layout/components/Sidebar/index.vue
  2. 16
      ruoyi-ui/src/layout/components/TagsView/index.vue

95
ruoyi-ui/src/layout/components/Sidebar/index.vue

@ -1,54 +1,57 @@
<template> <template>
<div :class="{'has-logo':showLogo}"> <div :class="{'has-logo':showLogo}">
<logo v-if="showLogo" :collapse="isCollapse" /> <logo v-if="showLogo" :collapse="isCollapse" />
<el-scrollbar wrap-class="scrollbar-wrapper"> <el-scrollbar wrap-class="scrollbar-wrapper">
<el-menu <el-menu
:default-active="activeMenu" :default-active="activeMenu"
:collapse="isCollapse" :collapse="isCollapse"
:background-color="variables.menuBg" :background-color="variables.menuBg"
:text-color="variables.menuText" :text-color="variables.menuText"
:unique-opened="true" :unique-opened="true"
:active-text-color="variables.menuActiveText" :active-text-color="settings.theme"
:collapse-transition="false" :collapse-transition="false"
mode="vertical" mode="vertical"
> >
<sidebar-item v-for="route in permission_routes" :key="route.path" :item="route" :base-path="route.path" /> <sidebar-item
</el-menu> v-for="(route, index) in permission_routes"
</el-scrollbar> :key="route.path + index"
</div> :item="route"
:base-path="route.path"
/>
</el-menu>
</el-scrollbar>
</div>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex' import { mapGetters, mapState } from "vuex";
import Logo from './Logo' import Logo from "./Logo";
import SidebarItem from './SidebarItem' import SidebarItem from "./SidebarItem";
import variables from '@/assets/styles/variables.scss' import variables from "@/assets/styles/variables.scss";
export default { export default {
components: { SidebarItem, Logo }, components: { SidebarItem, Logo },
computed: { computed: {
...mapGetters([ ...mapState(["settings"]),
'permission_routes', ...mapGetters(["permission_routes", "sidebar"]),
'sidebar' activeMenu() {
]), const route = this.$route;
activeMenu() { const { meta, path } = route;
const route = this.$route // if set path, the sidebar will highlight the path you set
const { meta, path } = route if (meta.activeMenu) {
// if set path, the sidebar will highlight the path you set return meta.activeMenu;
if (meta.activeMenu) { }
return meta.activeMenu return path;
} },
return path showLogo() {
}, return this.$store.state.settings.sidebarLogo;
showLogo() { },
return this.$store.state.settings.sidebarLogo variables() {
}, return variables;
variables() { },
return variables isCollapse() {
}, return !this.sidebar.opened;
isCollapse() { }
return !this.sidebar.opened
} }
} };
}
</script> </script>

16
ruoyi-ui/src/layout/components/TagsView/index.vue

@ -1,6 +1,6 @@
<template> <template>
<div id="tags-view-container" class="tags-view-container"> <div id="tags-view-container" class="tags-view-container">
<scroll-pane ref="scrollPane" class="tags-view-wrapper"> <scroll-pane ref="scrollPane" class="tags-view-wrapper" @scroll="handleScroll">
<router-link <router-link
v-for="tag in visitedViews" v-for="tag in visitedViews"
ref="tag" ref="tag"
@ -9,6 +9,7 @@
:to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }" :to="{ path: tag.path, query: tag.query, fullPath: tag.fullPath }"
tag="span" tag="span"
class="tags-view-item" class="tags-view-item"
:style="activeStyle(tag)"
@click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''" @click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
@contextmenu.prevent.native="openMenu(tag,$event)" @contextmenu.prevent.native="openMenu(tag,$event)"
> >
@ -46,6 +47,9 @@ export default {
}, },
routes() { routes() {
return this.$store.state.permission.routes return this.$store.state.permission.routes
},
theme() {
return this.$store.state.settings.theme;
} }
}, },
watch: { watch: {
@ -69,6 +73,13 @@ export default {
isActive(route) { isActive(route) {
return route.path === this.$route.path return route.path === this.$route.path
}, },
activeStyle(tag) {
if (!this.isActive(tag)) return {};
return {
"background-color": this.theme,
"border-color": this.theme
};
},
isAffix(tag) { isAffix(tag) {
return tag.meta && tag.meta.affix return tag.meta && tag.meta.affix
}, },
@ -189,6 +200,9 @@ export default {
}, },
closeMenu() { closeMenu() {
this.visible = false this.visible = false
},
handleScroll() {
this.closeMenu()
} }
} }
} }

Loading…
Cancel
Save