2018-07-17 22:49:13 +08:00
|
|
|
import { mapState } from 'vuex'
|
2018-07-16 22:22:55 +08:00
|
|
|
import menuMixin from '../mixin/menu'
|
2020-06-08 14:55:14 +08:00
|
|
|
import { createMenu } from '../libs/util.menu'
|
2018-07-16 22:22:55 +08:00
|
|
|
import BScroll from 'better-scroll'
|
2019-08-04 15:36:25 +08:00
|
|
|
|
2018-07-16 22:22:55 +08:00
|
|
|
export default {
|
2018-07-17 21:54:38 +08:00
|
|
|
name: 'd2-layout-header-aside-menu-side',
|
2018-07-16 22:22:55 +08:00
|
|
|
mixins: [
|
|
|
|
|
menuMixin
|
|
|
|
|
],
|
2020-04-21 15:52:37 +08:00
|
|
|
render (h) {
|
2020-06-08 14:55:14 +08:00
|
|
|
return <div class="d2-layout-header-aside-menu-side">
|
|
|
|
|
<el-menu
|
|
|
|
|
collapse={ this.asideCollapse }
|
|
|
|
|
collapseTransition={ this.asideTransition }
|
|
|
|
|
uniqueOpened={ true }
|
|
|
|
|
defaultActive={ this.$route.fullPath }
|
|
|
|
|
ref="menu"
|
|
|
|
|
onSelect={ this.handleMenuSelect }>
|
|
|
|
|
{ this.aside.map(menu => createMenu.call(this, h, menu)) }
|
|
|
|
|
</el-menu>
|
|
|
|
|
{
|
|
|
|
|
this.aside.length === 0 && !this.asideCollapse
|
|
|
|
|
? <div class="d2-layout-header-aside-menu-empty" flex="dir:top main:center cross:center">
|
2020-09-28 09:34:08 +08:00
|
|
|
<d2-icon name="inbox"/>
|
2020-06-08 14:55:14 +08:00
|
|
|
<span>没有侧栏菜单</span>
|
|
|
|
|
</div>
|
|
|
|
|
: null
|
|
|
|
|
}
|
|
|
|
|
</div>
|
2018-07-16 22:22:55 +08:00
|
|
|
},
|
|
|
|
|
data () {
|
|
|
|
|
return {
|
|
|
|
|
asideHeight: 300,
|
|
|
|
|
BS: null
|
|
|
|
|
}
|
|
|
|
|
},
|
2018-07-17 22:49:13 +08:00
|
|
|
computed: {
|
2018-08-08 16:04:10 +08:00
|
|
|
...mapState('d2admin/menu', [
|
|
|
|
|
'aside',
|
2020-04-23 11:00:49 +08:00
|
|
|
'asideCollapse',
|
|
|
|
|
'asideTransition'
|
2018-08-08 09:19:11 +08:00
|
|
|
])
|
2018-07-17 22:49:13 +08:00
|
|
|
},
|
2018-07-16 22:22:55 +08:00
|
|
|
watch: {
|
|
|
|
|
// 折叠和展开菜单的时候销毁 better scroll
|
2018-08-08 16:04:10 +08:00
|
|
|
asideCollapse (val) {
|
2018-07-16 22:22:55 +08:00
|
|
|
this.scrollDestroy()
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.scrollInit()
|
|
|
|
|
}, 500)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
mounted () {
|
|
|
|
|
this.scrollInit()
|
|
|
|
|
},
|
|
|
|
|
beforeDestroy () {
|
|
|
|
|
this.scrollDestroy()
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
scrollInit () {
|
|
|
|
|
this.BS = new BScroll(this.$el, {
|
2019-01-15 20:15:41 +08:00
|
|
|
mouseWheel: true,
|
|
|
|
|
click: true
|
2018-07-24 09:07:02 +08:00
|
|
|
// 如果你愿意可以打开显示滚动条
|
|
|
|
|
// scrollbar: {
|
|
|
|
|
// fade: true,
|
|
|
|
|
// interactive: false
|
|
|
|
|
// }
|
2018-07-16 22:22:55 +08:00
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
scrollDestroy () {
|
2018-08-12 23:27:41 +08:00
|
|
|
// https://github.com/d2-projects/d2-admin/issues/75
|
|
|
|
|
try {
|
2018-07-16 22:22:55 +08:00
|
|
|
this.BS.destroy()
|
2018-08-12 23:27:41 +08:00
|
|
|
} catch (e) {
|
|
|
|
|
delete this.BS
|
|
|
|
|
this.BS = null
|
2018-07-16 22:22:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|