main.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. import Vue from 'vue'
  2. import App from './App'
  3. import store from 'store'
  4. import uView from 'uview-ui'
  5. Vue.use(uView)
  6. Vue.config.productionTip = false
  7. import { setStorage, getStorage, removeStorage } from '@/common/utils/storage.js'
  8. // #ifdef H5
  9. // 解析地址栏参数
  10. function getQueryVariable(variable) {
  11. // 从?开始获取后面的所有数据
  12. var query = window.location.search.substring(1)
  13. // 从字符串&开始分隔成数组split
  14. var vars = query.split('&')
  15. // 遍历该数组
  16. for (var i = 0; i < vars.length; i++) {
  17. // 从等号部分分割成字符
  18. var pair = vars[i].split('=')
  19. // 如果第一个元素等于 传进来的参的话 就输出第二个元素
  20. if (pair[0] == variable) {
  21. return pair[1]
  22. }
  23. }
  24. return undefined
  25. }
  26. if (getQueryVariable('x-token')) {
  27. setStorage('token', getQueryVariable('x-token') || '')
  28. }
  29. if (getQueryVariable('openId')) {
  30. setStorage('openId', getQueryVariable('openId') || '')
  31. }
  32. if (getQueryVariable('username')) {
  33. setStorage('name', getQueryVariable('username') || '')
  34. }
  35. if (getQueryVariable('useravatar')) {
  36. setStorage('avatar', getQueryVariable('useravatar') || '')
  37. }
  38. if (getQueryVariable('userId')) {
  39. setStorage('userId', getQueryVariable('userId') || '')
  40. }
  41. if (getQueryVariable('mobile')) {
  42. setStorage('mobile', getQueryVariable('mobile') || '')
  43. }
  44. if (getQueryVariable('miniProgram')) {
  45. setStorage('miniProgram', getQueryVariable('miniProgram') || '')
  46. }
  47. if (getQueryVariable('appId')) {
  48. setStorage('appId', getQueryVariable('appId') || '')
  49. }
  50. if (getQueryVariable('miniOpenId')) {
  51. setStorage('miniOpenId', getQueryVariable('miniOpenId') || '')
  52. }
  53. if (getQueryVariable('sharerOpenId')) {
  54. setStorage('sharerOpenId', getQueryVariable('sharerOpenId') || '')
  55. }
  56. // #endif
  57. import { Base64 } from 'js-base64'
  58. Vue.prototype.$Base64 = Base64
  59. import {
  60. toast,
  61. successToast,
  62. showLoading,
  63. tipLoading,
  64. hideLoading,
  65. modal,
  66. tips,
  67. navPage,
  68. redPage,
  69. backPage,
  70. callPhone,
  71. copy,
  72. openLocation,
  73. getLocation,
  74. getAddress,
  75. getNowDate,
  76. getNowDatetime
  77. } from 'common/utils/common'
  78. import { navToPage } from 'common/utils/navPag'
  79. Vue.prototype.$navToPage = navToPage
  80. Vue.prototype.$H5Href = process.env.VUE_APP_HREF
  81. Vue.prototype.$toast = toast
  82. Vue.prototype.$successToast = successToast
  83. Vue.prototype.$showLoading = showLoading
  84. Vue.prototype.$tipLoading = tipLoading
  85. Vue.prototype.$hideLoading = hideLoading
  86. Vue.prototype.$modal = modal
  87. Vue.prototype.$tips = tips
  88. Vue.prototype.$navPage = navPage
  89. Vue.prototype.$redPage = redPage
  90. Vue.prototype.$backPage = backPage
  91. Vue.prototype.$callPhone = callPhone
  92. Vue.prototype.$copy = copy
  93. Vue.prototype.$openLocation = openLocation
  94. Vue.prototype.$getLocation = getLocation
  95. Vue.prototype.$getAddress = getAddress
  96. Vue.prototype.$getNowDate = getNowDate
  97. Vue.prototype.$getNowDatetime = getNowDatetime
  98. Vue.prototype.$setStorage = setStorage
  99. Vue.prototype.$getStorage = getStorage
  100. Vue.prototype.$removeStorage = removeStorage
  101. // 注入全局
  102. import pages from 'mixins'
  103. Vue.mixin(pages)
  104. App.mpType = 'app'
  105. import api from '@/common/http/'
  106. Vue.prototype.$api = api
  107. import * as filters from './filters/index.js' // global filters
  108. // register global utility filters
  109. Object.keys(filters).forEach(key => {
  110. Vue.filter(key, filters[key])
  111. })
  112. Vue.prototype.$onLaunched = new Promise((resolve, reject) => {
  113. Vue.prototype.$isResolve = resolve
  114. Vue.prototype.$isReject = reject
  115. })
  116. import custom from '@/components/custom.vue'
  117. import Loading from '@/components/Loading.vue'
  118. import zjPageLayout from '@/components/zj-container/zj-page-layout.vue'
  119. Vue.component('custom', custom)
  120. Vue.component('Loading', Loading)
  121. Vue.component('zjPageLayout', zjPageLayout)
  122. import floatButton from '@/components/floatButton.vue'
  123. Vue.component('floatButton', floatButton)
  124. import { getUserInfo, getConfigInfo, getTemplateInfo } from '@/common/utils/util.js'
  125. Vue.prototype.$getUserInfo = getUserInfo
  126. Vue.prototype.$getConfigInfo = getConfigInfo
  127. Vue.prototype.$getTemplateInfo = getTemplateInfo
  128. // #ifdef H5
  129. import { router, RouterMount } from 'router'
  130. Vue.use(router)
  131. import Mylink from 'uni-simple-router/dist/link.vue'
  132. // 组件式导航
  133. Vue.component('my-link', Mylink)
  134. // #endif
  135. // 渲染图片文件
  136. Vue.prototype.$imageUrl = process.env.VUE_APP_BASE_URL + process.env.VUE_APP_BASE_API + '/common/img/get?key='
  137. import { translaBeforeRegistration } from './global-text-processor' // 导入插件
  138. Vue.prototype.$setLanguage = function (type) {
  139. window.localStorage.setItem('Vue_Translation_Of_Text_Type', type)
  140. setTimeout(() => {
  141. location.reload(true)
  142. }, 200)
  143. }
  144. translaBeforeRegistration(function () {
  145. const app = new Vue({
  146. ...App,
  147. store
  148. })
  149. //v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式
  150. // #ifdef H5
  151. RouterMount(app, router, '#app')
  152. // #endif
  153. // #ifndef H5
  154. app.$mount() //为了兼容小程序及app端必须这样写才有效果
  155. // #endif
  156. })