main.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import { createApp } from 'vue'
  2. import App from './App.vue'
  3. import router from './router'
  4. import store from './store'
  5. import "@/assets/style/reset.css"
  6. import "@/assets/style/my-reset.css"
  7. import UAParser from "@/libs/ua-parser.min.js"
  8. import clickOutside from "@/directives/v-click-outside.js"
  9. import mitt from "mitt"
  10. import ElementPlus from 'element-plus'
  11. import 'element-plus/dist/index.css'
  12. // import 'viewerjs/dist/viewer.css'
  13. // import VueViewer from 'v-viewer'
  14. console.log(`version: ${process.env.VUE_APP_VERSION}`)
  15. console.log(`Build time: ${process.env.VUE_APP_UPDATE_TIME}`)
  16. if (
  17. localStorage.getItem('useDarkTheme') === '1' ||
  18. (!localStorage.getItem('useDarkTheme') && gConfigInfo.defaultDarkTheme)
  19. ) {
  20. store.commit('setIsDarkTheme', true)
  21. } else {
  22. store.commit('setIsDarkTheme', false)
  23. }
  24. const app = createApp(App)
  25. // 挂载配置信息
  26. app.config.globalProperties.$config = config
  27. app.config.globalProperties.$gConfigInfo = gConfigInfo
  28. app.config.globalProperties.$gConfigDesc = gConfigDesc
  29. app.config.globalProperties.$env = process.env
  30. // 挂载消息发布订阅中心
  31. app.config.globalProperties.$mitt = mitt()
  32. // 解析、挂载浏览器信息
  33. const uaParser = new UAParser()
  34. const uaInfo = uaParser.getResult()
  35. console.log(uaInfo)
  36. app.config.globalProperties.$uaInfo = uaInfo
  37. if (uaInfo.browser && uaInfo.browser.name === 'WeChat') {
  38. app.config.globalProperties.$isWeChat = true
  39. }
  40. if (uaInfo.browser && uaInfo.browser.name === 'Safari') {
  41. app.config.globalProperties.$isSafari = true
  42. }
  43. if (uaInfo.device.type === 'mobile') {
  44. app.config.globalProperties.$isMobile = true
  45. document.body.classList.add('mobile')
  46. } else {
  47. app.config.globalProperties.$isMobile = false
  48. }
  49. // // 处理resize事件
  50. // let windowWidthLast = window.innerWidth
  51. // let windowHeightLast = window.innerHeight
  52. // function onResize() {
  53. // windowWidthLast = window.innerWidth
  54. // windowHeightLast = window.innerHeight
  55. // }
  56. // window.addEventListener('resize', () => {
  57. // onResize()
  58. // })
  59. // // 禁用上下文菜单
  60. // document.oncontextmenu = function(e) {
  61. // e.preventDefault()
  62. // }
  63. // // safari里只能在交互行为的回调中成功地首次调用audio的play方法,所以需要一个全局的audio元素来播放随时可能需要自发播放的音频。
  64. // const audioNode = document.createElement("audio")
  65. // audioNode.id = 'global-audio'
  66. // audioNode.style.display = 'none'
  67. // audioNode.loop = true
  68. // document.body.appendChild(audioNode)
  69. app.use(store)
  70. .use(router)
  71. .use(clickOutside)
  72. .use(ElementPlus)
  73. // .use(VueViewer)
  74. // .component('HotSpot', HotSpot)
  75. .mount('#app')
  76. // 必须在vue根组件挂载之后执行
  77. if (app.config.globalProperties.$isMobile) {
  78. document.getElementById('app').classList.add('mobile')
  79. }