index.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import Vue from 'vue'
  2. import './globalDirectives'
  3. import './globalFilters'
  4. import WeiXinSDK from '@/utils/wx-js-sdk-register.ts'
  5. import { isWeiXinBrowser, androidOrIOS } from '@/utils/globalFunctions'
  6. import { getWxSdkSign } from '@/api/index.ts'
  7. declare module 'vue/types/vue' {
  8. interface Vue {
  9. $env: any;
  10. $registerWxSdk: any;
  11. $wxSdk: any;
  12. }
  13. }
  14. const inWeiXinBrowser = isWeiXinBrowser()
  15. const isAndroidOrIos = androidOrIOS()
  16. Vue.prototype.$env = {
  17. isWeiXinBrowser: inWeiXinBrowser,
  18. platform: inWeiXinBrowser ? 'wx' : 'app',
  19. isAndroid: isAndroidOrIos === 'android',
  20. isIOS: isAndroidOrIos === 'ios'
  21. }
  22. // 如果是微信浏览器, 注册一个微信SDK初始化函数
  23. if (inWeiXinBrowser) {
  24. Vue.prototype.$registerWxSdk = async () => {
  25. const sdkInfo = await getWxSdkSign({ url: location.href.split('#')[0] })
  26. if (!sdkInfo) return
  27. const info = sdkInfo.data
  28. if (info && info.wxsdk && Array.isArray(info.wxsdk)) {
  29. const sdk = info.wxsdk
  30. Vue.prototype.$wxSdk = new WeiXinSDK({
  31. appId: sdk[0],
  32. timestamp: sdk[1],
  33. nonceStr: sdk[2],
  34. signature: sdk[3]
  35. })
  36. }
  37. return info
  38. }
  39. Vue.prototype.$registerWxSdk()
  40. }
  41. // 正式环境下屏蔽console.log
  42. if (process.env.NODE_ENV === 'production') {
  43. const print = window.console.log
  44. if (window.localStorage.getItem('log') === '1') {
  45. window.console.log = print
  46. } else {
  47. window.console.log = () => null
  48. }
  49. }