2019-02-25 15:58:05 +08:00
|
|
|
<template>
|
|
|
|
<a-layout-sider
|
|
|
|
:class="['sider', isDesktop() ? null : 'shadow', theme, fixSiderbar ? 'ant-fixed-sidemenu' : null ]"
|
2019-04-14 16:20:04 +08:00
|
|
|
width="200px"
|
2019-02-25 15:58:05 +08:00
|
|
|
:collapsible="collapsible"
|
|
|
|
v-model="collapsed"
|
|
|
|
:trigger="null">
|
|
|
|
<logo />
|
|
|
|
<s-menu
|
|
|
|
:collapsed="collapsed"
|
|
|
|
:menu="menus"
|
|
|
|
:theme="theme"
|
|
|
|
@select="onSelect"
|
|
|
|
:mode="mode"
|
2019-04-14 16:20:04 +08:00
|
|
|
style="padding: 0;"></s-menu>
|
2019-02-25 15:58:05 +08:00
|
|
|
</a-layout-sider>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import ALayoutSider from "ant-design-vue/es/layout/Sider"
|
|
|
|
import Logo from '../tools/Logo'
|
|
|
|
import SMenu from './index'
|
|
|
|
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
|
|
|
|
|
|
|
export default {
|
|
|
|
name: "SideMenu",
|
|
|
|
components: { ALayoutSider, Logo, SMenu },
|
|
|
|
mixins: [mixin, mixinDevice],
|
|
|
|
props: {
|
|
|
|
mode: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: 'inline'
|
|
|
|
},
|
|
|
|
theme: {
|
|
|
|
type: String,
|
|
|
|
required: false,
|
|
|
|
default: 'dark'
|
|
|
|
},
|
|
|
|
collapsible: {
|
|
|
|
type: Boolean,
|
|
|
|
required: false,
|
|
|
|
default: false
|
|
|
|
},
|
|
|
|
collapsed: {
|
|
|
|
type: Boolean,
|
|
|
|
required: false,
|
|
|
|
default: false
|
|
|
|
},
|
|
|
|
menus: {
|
|
|
|
type: Array,
|
|
|
|
required: true
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
onSelect (obj) {
|
|
|
|
this.$emit('menuSelect', obj)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|