main.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. import store from './store'
  5. import ElementUI from 'element-ui'
  6. import 'element-ui/lib/theme-chalk/index.css'
  7. import { formatPrice, formatPriceWithSymbol, formatRate, formatScore } from './utils/format'
  8. Vue.use(ElementUI)
  9. Vue.prototype.formatPrice = formatPrice
  10. Vue.prototype.formatPriceWithSymbol = formatPriceWithSymbol
  11. Vue.prototype.formatRate = formatRate
  12. Vue.prototype.formatScore = formatScore
  13. // Fix Element UI 2.15.x el-submenu removeTabindex null error
  14. // https://github.com/ElemeFE/element/issues/21965
  15. // Also fixes: v-if 切换菜单项后 el-submenu 残留 DOM 遮罩导致无法点击的问题
  16. const ElSubmenu = Vue.component('ElSubmenu')
  17. if (ElSubmenu && ElSubmenu.options && ElSubmenu.options.methods) {
  18. const origRemove = ElSubmenu.options.methods.removeTabindex
  19. if (origRemove) {
  20. ElSubmenu.options.methods.removeTabindex = function() {
  21. try {
  22. if (!this.$el || !this.$el.querySelector) return
  23. const tooltip = this.$el.querySelector('.el-tooltip')
  24. if (!tooltip) return
  25. return origRemove.call(this)
  26. } catch (e) {
  27. // v-if 切换导致 DOM 已销毁时的静默容错
  28. }
  29. }
  30. }
  31. // el-submenu 展开/收起时也可能操作已销毁的 DOM
  32. const origOpen = ElSubmenu.options.methods.open
  33. if (origOpen) {
  34. ElSubmenu.options.methods.open = function() {
  35. try {
  36. return origOpen.call(this)
  37. } catch (e) {
  38. // 静默容错
  39. }
  40. }
  41. }
  42. }
  43. Vue.config.productionTip = false
  44. new Vue({
  45. router,
  46. store,
  47. render: h => h(App)
  48. }).$mount('#app')