mirror of
https://github.com/iczer/vue-antd-admin.git
synced 2025-04-27 03:56:44 +08:00
refactor: sider menu
This commit is contained in:
parent
2e82bdd162
commit
268c72d9a9
@ -1,25 +1,9 @@
|
|||||||
<template>
|
<template>
|
||||||
<a-layout>
|
<a-layout>
|
||||||
<drawer v-if="isMobile" :openDrawer="collapsed" @change="onDrawerChange">
|
<drawer v-if="isMobile" :openDrawer="collapsed" @change="onDrawerChange">
|
||||||
<a-layout-sider class="sider" width="256px" :trigger="null">
|
<sider-menu :menuData="menuData" :collapsed="false" :collapsible="false" @menuSelect="onMenuSelect"/>
|
||||||
<div class="logo">
|
|
||||||
<a href="/">
|
|
||||||
<img src="static/img/vue-antd-logo.png">
|
|
||||||
<h1>Vue Ant Pro</h1>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<i-menu :collapsed="true" :menuData="menuData" @select="onMenuSelect"/>
|
|
||||||
</a-layout-sider>
|
|
||||||
</drawer>
|
</drawer>
|
||||||
<a-layout-sider v-else class="sider" width="256px" collapsible v-model="collapsed" :trigger="null">
|
<sider-menu v-else :menuData="menuData" :collapsed="collapsed" :collapsible="true" />
|
||||||
<div class="logo">
|
|
||||||
<a href="/">
|
|
||||||
<img src="static/img/vue-antd-logo.png">
|
|
||||||
<h1>Vue Ant Pro</h1>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<i-menu :collapsed="collapsed" :menuData="menuData" />
|
|
||||||
</a-layout-sider>
|
|
||||||
<a-layout>
|
<a-layout>
|
||||||
<global-header :collapsed="collapsed" @toggleCollapse="toggleCollapse"/>
|
<global-header :collapsed="collapsed" @toggleCollapse="toggleCollapse"/>
|
||||||
<a-layout-content :style="{minHeight: minHeight, margin: '24px 24px 0'}">
|
<a-layout-content :style="{minHeight: minHeight, margin: '24px 24px 0'}">
|
||||||
@ -39,6 +23,7 @@ import AIcon from 'ant-design-vue/es/icon/icon'
|
|||||||
import IMenu from '../menu/menu'
|
import IMenu from '../menu/menu'
|
||||||
import GlobalFooter from './GlobalFooter'
|
import GlobalFooter from './GlobalFooter'
|
||||||
import Drawer from '../tool/Drawer'
|
import Drawer from '../tool/Drawer'
|
||||||
|
import SiderMenu from '../menu/SiderMenu'
|
||||||
|
|
||||||
const ALayoutSider = ALayout.Sider
|
const ALayoutSider = ALayout.Sider
|
||||||
const ALayoutHeader = ALayout.Header
|
const ALayoutHeader = ALayout.Header
|
||||||
@ -51,6 +36,7 @@ let menuData = []
|
|||||||
export default {
|
export default {
|
||||||
name: 'GlobalLayout',
|
name: 'GlobalLayout',
|
||||||
components: {
|
components: {
|
||||||
|
SiderMenu,
|
||||||
Drawer,
|
Drawer,
|
||||||
GlobalFooter,
|
GlobalFooter,
|
||||||
AIcon,
|
AIcon,
|
||||||
@ -78,10 +64,9 @@ export default {
|
|||||||
this.collapsed = !this.collapsed
|
this.collapsed = !this.collapsed
|
||||||
},
|
},
|
||||||
onDrawerChange (show) {
|
onDrawerChange (show) {
|
||||||
console.log(show)
|
|
||||||
this.collapsed = show
|
this.collapsed = show
|
||||||
},
|
},
|
||||||
onMenuSelect (obj) {
|
onMenuSelect () {
|
||||||
this.toggleCollapse()
|
this.toggleCollapse()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -92,31 +77,4 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.sider{
|
|
||||||
z-index: 10;
|
|
||||||
box-shadow: 2px 0 6px rgba(0,21,41,.35);
|
|
||||||
.logo{
|
|
||||||
height: 64px;
|
|
||||||
position: relative;
|
|
||||||
line-height: 64px;
|
|
||||||
padding-left: 24px;
|
|
||||||
-webkit-transition: all .3s;
|
|
||||||
transition: all .3s;
|
|
||||||
background: #002140;
|
|
||||||
overflow: hidden;
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
img{
|
|
||||||
width: 32px;
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
71
src/components/menu/SiderMenu.vue
Normal file
71
src/components/menu/SiderMenu.vue
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<template>
|
||||||
|
<a-layout-sider class="sider" width="256px" :collapsible="collapsible" v-model="collapsed" :trigger="null">
|
||||||
|
<div class="logo">
|
||||||
|
<a href="/">
|
||||||
|
<img src="static/img/vue-antd-logo.png">
|
||||||
|
<h1>Vue Ant Pro</h1>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<i-menu :collapsed="collapsed" :menuData="menuData" @select="onSelect"/>
|
||||||
|
</a-layout-sider>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import ALayoutSider from 'ant-design-vue/es/layout/Sider'
|
||||||
|
import IMenu from './menu'
|
||||||
|
export default {
|
||||||
|
name: 'SiderMenu',
|
||||||
|
components: {IMenu, ALayoutSider},
|
||||||
|
props: {
|
||||||
|
collapsible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
collapsed: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
menuData: {
|
||||||
|
type: Array,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSelect (obj) {
|
||||||
|
this.$emit('menuSelect', obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped>
|
||||||
|
.sider{
|
||||||
|
z-index: 10;
|
||||||
|
box-shadow: 2px 0 6px rgba(0,21,41,.35);
|
||||||
|
.logo{
|
||||||
|
height: 64px;
|
||||||
|
position: relative;
|
||||||
|
line-height: 64px;
|
||||||
|
padding-left: 24px;
|
||||||
|
-webkit-transition: all .3s;
|
||||||
|
transition: all .3s;
|
||||||
|
background: #002140;
|
||||||
|
overflow: hidden;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
img{
|
||||||
|
width: 32px;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
x
Reference in New Issue
Block a user