更新依赖和版本
Former-commit-id: 5072ec87feb8745621004a198310faee62e6281c [formerly 6881bd1e425d95d98ebb2b2ed44175fe9e98d5f2] [formerly 5072ec87feb8745621004a198310faee62e6281c [formerly 6881bd1e425d95d98ebb2b2ed44175fe9e98d5f2] [formerly 5072ec87feb8745621004a198310faee62e6281c [formerly 6881bd1e425d95d98ebb2b2ed44175fe9e98d5f2] [formerly 6881bd1e425d95d98ebb2b2ed44175fe9e98d5f2 [formerly c3846e5df93218e15f02a646518880e6fa6cb0f9 [formerly 3bd4f9d9418df3df44f368bb2ae32652c69c013f]]]]] Former-commit-id: bd93fcb5e4675bbf18fd417d5288245f6088b538 Former-commit-id: 12ad7aefef66bd20c5d0d6224cdfa283142cbefc Former-commit-id: 0f4dee0a6517e1f77af70100ba450ae8f988307a [formerly 4d96d09f6d76a67c4fc4386efe6f51c1707f9d99] Former-commit-id: edb1f8cd9ce546d41873b5601fbe390fc7f43521 Former-commit-id: af996ea474ed1ae6d51068dcccbdc3cc29cea56d Former-commit-id: efb029f9cf3e2c9dcff8d48e4c53334d8b353fc7 Former-commit-id: 6f5b77ea91dc0259a6610cc9d3aa77f8e9724fcd Former-commit-id: e83e0ac4a63e9c6f5e7c6ccd66909badea6ae8ef
This commit is contained in:
88
src/layout/header-aside/components/menu-side/index.js
Normal file
88
src/layout/header-aside/components/menu-side/index.js
Normal file
@@ -0,0 +1,88 @@
|
||||
import { mapState } from 'vuex'
|
||||
import menuMixin from '../mixin/menu'
|
||||
import { elMenuItem, elSubmenu } from '../libs/util.menu'
|
||||
import BScroll from 'better-scroll'
|
||||
|
||||
export default {
|
||||
name: 'd2-layout-header-aside-menu-side',
|
||||
mixins: [
|
||||
menuMixin
|
||||
],
|
||||
render (createElement) {
|
||||
return createElement('div', { attrs: { class: 'd2-layout-header-aside-menu-side' } }, [
|
||||
createElement('el-menu', {
|
||||
props: { collapse: this.asideCollapse, uniqueOpened: true, defaultActive: this.active },
|
||||
ref: 'menu',
|
||||
on: { select: this.handleMenuSelect }
|
||||
}, this.aside.map(menu => (menu.children === undefined ? elMenuItem : elSubmenu).call(this, createElement, menu))),
|
||||
...this.aside.length === 0 && !this.asideCollapse ? [
|
||||
createElement('div', { attrs: { class: 'd2-layout-header-aside-menu-empty', flex: 'dir:top main:center cross:center' } }, [
|
||||
createElement('d2-icon', { props: { name: 'inbox' } }),
|
||||
createElement('span', {}, this.$t('layout.header-aside.menu-side.empty'))
|
||||
])
|
||||
] : []
|
||||
])
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
active: '',
|
||||
asideHeight: 300,
|
||||
BS: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
...mapState('d2admin/menu', [
|
||||
'aside',
|
||||
'asideCollapse'
|
||||
])
|
||||
},
|
||||
watch: {
|
||||
// 折叠和展开菜单的时候销毁 better scroll
|
||||
asideCollapse (val) {
|
||||
this.scrollDestroy()
|
||||
setTimeout(() => {
|
||||
this.scrollInit()
|
||||
}, 500)
|
||||
},
|
||||
// 监听路由 控制侧边栏激活状态
|
||||
'$route': {
|
||||
handler ({ fullPath }) {
|
||||
this.active = fullPath
|
||||
this.$nextTick(() => {
|
||||
if (this.aside.length > 0 && this.$refs.menu) {
|
||||
this.$refs.menu.activeIndex = fullPath
|
||||
}
|
||||
})
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.scrollInit()
|
||||
},
|
||||
beforeDestroy () {
|
||||
this.scrollDestroy()
|
||||
},
|
||||
methods: {
|
||||
scrollInit () {
|
||||
this.BS = new BScroll(this.$el, {
|
||||
mouseWheel: true,
|
||||
click: true
|
||||
// 如果你愿意可以打开显示滚动条
|
||||
// scrollbar: {
|
||||
// fade: true,
|
||||
// interactive: false
|
||||
// }
|
||||
})
|
||||
},
|
||||
scrollDestroy () {
|
||||
// https://github.com/d2-projects/d2-admin/issues/75
|
||||
try {
|
||||
this.BS.destroy()
|
||||
} catch (e) {
|
||||
delete this.BS
|
||||
this.BS = null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user