index.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { mapState } from 'vuex'
  2. import menuMixin from '../mixin/menu'
  3. import { createMenu } from '../libs/util.menu'
  4. import BScroll from 'better-scroll'
  5. export default {
  6. name: 'ibps-layout-header-aside-menu-side',
  7. mixins: [
  8. menuMixin
  9. ],
  10. render(h) {
  11. return <div class='ibps-layout-header-aside-menu-side'>
  12. <el-menu
  13. collapse={ this.asideCollapse }
  14. collapseTransition={ this.asideTransition }
  15. uniqueOpened={ true }
  16. defaultActive={ this.$route.fullPath }
  17. ref='menu'
  18. onSelect={ this.handleMenuSelect }>
  19. { this.aside.map(menu => createMenu.call(this, h, menu)) }
  20. </el-menu>
  21. {
  22. this.aside.length === 0 && !this.asideCollapse
  23. ? <div class='ibps-layout-header-aside-menu-empty' flex='dir:top main:center cross:center'>
  24. <ibps-icon name='inbox'></ibps-icon>
  25. <span>{this.$t('layout.header-aside.menu-side.empty')}</span>
  26. </div>
  27. : null
  28. }
  29. </div>
  30. },
  31. data() {
  32. return {
  33. asideHeight: 300,
  34. BS: null
  35. }
  36. },
  37. computed: {
  38. ...mapState('ibps/menu', [
  39. 'aside',
  40. 'asideCollapse',
  41. 'asideTransition'
  42. ])
  43. },
  44. watch: {
  45. // 折叠和展开菜单的时候销毁 better scroll
  46. asideCollapse(val) {
  47. this.scrollDestroy()
  48. setTimeout(() => {
  49. this.scrollInit()
  50. }, 500)
  51. },
  52. },
  53. mounted() {
  54. // 这个插件会影响到滚动效果 修复菜单栏无法滚动的bug 先注释掉
  55. // this.scrollInit()
  56. },
  57. beforeDestroy() {
  58. this.scrollDestroy()
  59. },
  60. methods: {
  61. scrollInit() {
  62. this.BS = new BScroll(this.$el, {
  63. mouseWheel: true,
  64. click: true
  65. // 如果你愿意可以打开显示滚动条
  66. // scrollbar: {
  67. // fade: true,
  68. // interactive: false
  69. // }
  70. })
  71. },
  72. scrollDestroy() {
  73. try {
  74. this.BS.destroy()
  75. } catch (e) {
  76. delete this.BS
  77. this.BS = null
  78. }
  79. }
  80. }
  81. }