Files
vue-antd-admin-skeleton/src/components/menu/SiderMenu.vue

109 lines
2.2 KiB
Vue
Raw Normal View History

2018-08-14 22:11:56 +08:00
<template>
2018-08-29 15:02:46 +08:00
<a-layout-sider :class="[theme, 'sider', isMobile ? null : 'shadow']" width="256px" :collapsible="collapsible" v-model="collapsed" :trigger="null">
<div :class="['logo', theme]">
2018-08-15 12:09:54 +08:00
<router-link to="/dashboard/workplace">
2018-08-14 22:11:56 +08:00
<img src="static/img/vue-antd-logo.png">
2018-09-03 10:39:39 +08:00
<h1>{{systemName}}</h1>
2018-08-15 12:09:54 +08:00
</router-link>
2018-08-14 22:11:56 +08:00
</div>
<i-menu :theme="theme" :collapsed="collapsed" :menuData="menuData" @select="onSelect" class="menu"/>
2018-08-14 22:11:56 +08:00
</a-layout-sider>
</template>
<script>
import IMenu from './menu'
export default {
name: 'SiderMenu',
components: {IMenu},
2018-08-14 22:11:56 +08:00
props: {
collapsible: {
type: Boolean,
required: false,
default: false
},
collapsed: {
type: Boolean,
required: false,
default: false
},
menuData: {
type: Array,
required: true
2018-08-29 15:02:46 +08:00
},
theme: {
type: String,
required: false,
default: 'dark'
2018-08-14 22:11:56 +08:00
}
},
2018-08-20 22:46:14 +08:00
computed: {
isMobile () {
return this.$store.state.setting.isMobile
2018-09-03 10:39:39 +08:00
},
systemName () {
return this.$store.state.setting.systemName
2018-08-20 22:46:14 +08:00
}
},
2018-08-14 22:11:56 +08:00
methods: {
onSelect (obj) {
this.$emit('menuSelect', obj)
}
}
}
</script>
<style lang="less" scoped>
2018-08-20 22:46:14 +08:00
.shadow{
box-shadow: 2px 0 6px rgba(0,21,41,.35);
}
2018-08-14 22:11:56 +08:00
.sider{
z-index: 10;
2018-08-29 15:02:46 +08:00
&.light{
background-color: #fff;
}
&.dark{
background-color: #001529;
}
2018-08-14 22:11:56 +08:00
.logo{
height: 64px;
position: relative;
line-height: 64px;
padding-left: 24px;
-webkit-transition: all .3s;
transition: all .3s;
overflow: hidden;
2018-08-29 15:02:46 +08:00
&.light{
background-color: #fff;
h1{
color: #1890ff;
}
}
&.dark{
background-color: #002140;
h1{
color: #fff;
}
}
2018-08-14 22:11:56 +08:00
h1{
color: #fff;
font-size: 20px;
margin: 0 0 0 12px;
font-family: "Myriad Pro","Helvetica Neue",Arial,Helvetica,sans-serif;
font-weight: 600;
display: inline-block;
2018-08-15 12:09:54 +08:00
height: 32px;
line-height: 32px;
vertical-align: middle;
2018-08-14 22:11:56 +08:00
}
img{
width: 32px;
display: inline-block;
vertical-align: middle;
}
}
}
.menu{
padding: 16px 0;
}
2018-08-14 22:11:56 +08:00
</style>