main.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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 'viewerjs/dist/viewer.css'
  11. import VueViewer from 'v-viewer'
  12. // import { showDialog } from 'vant';
  13. import { Loading } from 'vant'
  14. import 'vant/lib/index.css'
  15. console.log(`version: ${process.env.VUE_APP_VERSION}`)
  16. console.log(`Build time: ${process.env.VUE_APP_UPDATE_TIME}`)
  17. const app = createApp(App)
  18. // 挂载配置信息
  19. app.provide('$config', config)
  20. app.provide('$env', process.env)
  21. // 挂载消息发布订阅中心
  22. app.provide('$mitt', mitt())
  23. // 解析、挂载浏览器信息
  24. const uaParser = new UAParser()
  25. const uaInfo = uaParser.getResult()
  26. console.log('uaInfo: ', uaInfo)
  27. app.provide('$uaInfo', uaInfo)
  28. if (uaInfo.browser && uaInfo.browser.name === 'WeChat') {
  29. app.provide('$isWeChat', true)
  30. }
  31. if (uaInfo.browser && uaInfo.browser.name === 'Safari') {
  32. app.provide('$isSafari', true)
  33. }
  34. if (uaInfo.device.type === 'mobile') {
  35. app.provide('$isMobile', true)
  36. }
  37. // 处理resize事件
  38. let windowWidthLast = window.innerWidth
  39. let windowHeightLast = window.innerHeight
  40. function onResize() {
  41. if (window.innerWidth === windowWidthLast) {
  42. // 发生了高度变化,认为发生了软键盘显隐
  43. if (uaInfo.os.name === 'Android') {
  44. if (window.innerHeight < windowHeightLast) {
  45. // ...
  46. } else if (window.innerHeight > windowHeightLast) {
  47. // ...
  48. }
  49. }
  50. }
  51. windowWidthLast = window.innerWidth
  52. windowHeightLast = window.innerHeight
  53. }
  54. window.addEventListener('resize', () => {
  55. onResize()
  56. })
  57. // // 禁用上下文菜单
  58. // document.oncontextmenu = function(e) {
  59. // e.preventDefault()
  60. // }
  61. // // safari里只能在交互行为的回调中成功地首次调用audio的play方法,所以需要一个全局的audio元素来播放随时可能需要自发播放的音频。
  62. // const audioNode = document.createElement("audio")
  63. // audioNode.id = 'global-audio'
  64. // audioNode.style.display = 'none'
  65. // audioNode.loop = true
  66. // document.body.appendChild(audioNode)
  67. app.use(store)
  68. .use(router)
  69. .use(clickOutside)
  70. .use(VueViewer)
  71. .use(Loading)
  72. // .use(showDialog )
  73. // .component('HotSpot', HotSpot)
  74. .mount('#app')
  75. // you can reset the default options at any other time
  76. VueViewer.setDefaults({
  77. inline: false,
  78. button: true,
  79. navbar: false,
  80. title: false,
  81. toolbar: false,
  82. tooltip: false,
  83. movable: true,
  84. zoomable: true,
  85. rotatable: false,
  86. // "scalable": true,
  87. transition: true,
  88. fullscreen: true,
  89. keyboard: true,
  90. })
  91. // 必须在vue根组件挂载之后执行
  92. if (uaInfo.device.type === 'mobile') {
  93. document.getElementById('app').classList.add('mobile')
  94. }