main.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import Vue from 'vue'
  2. import App from './App'
  3. import router from './router'
  4. import store from './store'
  5. import echarts from 'echarts'
  6. import moment from 'moment' // 时间库
  7. import '@/permission'
  8. import '@/utils/validator'
  9. import '@/assets/css/reset.css'
  10. import '@/attendanceSet' // 考勤相关
  11. import '@/performanceSet' // 绩效系统相关配置
  12. import icon from 'vue2-svg-icon/Icon'
  13. import VueScroller from '@/components/scroller/src'
  14. import noData from '@/components/noData'
  15. import userImage from '@/components/user_image'
  16. import * as socketApi from '@/api/websocket'
  17. import * as socketApiTow from '@/api/websocketTow'
  18. import axios from '@/utils/axios'
  19. import axiosKq from '@/utils/axiosKq'
  20. import axiosUser from '@/utils/axiosUser'
  21. import axiosKc from '@/utils/axiosKc'
  22. import 'shepherd.js/dist/css/shepherd.css';
  23. // import 'vant/lib/index.css';
  24. import {
  25. Tabbar,
  26. Empty,
  27. TabbarItem,
  28. ShareSheet,
  29. Loading,
  30. Divider,
  31. Overlay,
  32. Grid,
  33. GridItem,
  34. Form,
  35. Field,
  36. NavBar,
  37. Row,
  38. Col,
  39. List,
  40. Picker,
  41. Cell,
  42. CellGroup,
  43. Toast,
  44. Popup,
  45. Dialog,
  46. RadioGroup,
  47. Radio,
  48. Notify,
  49. Button,
  50. Icon,
  51. Tab,
  52. Tabs,
  53. Collapse,
  54. CollapseItem
  55. } from 'vant'
  56. /*element ui*/
  57. import {
  58. Tree as ELTree,
  59. Button as ELButton,
  60. Drawer as ELDrawer,
  61. } from 'element-ui'
  62. import 'element-ui/lib/theme-chalk/index.css';
  63. import {
  64. getWxToken,
  65. setWxToken,
  66. getIsIdentity,
  67. supremeAuthority,
  68. getIsWx,
  69. getTypes,
  70. getTypesName,
  71. getUserData,
  72. getEmployeeMap,
  73. getCache,
  74. setCache,
  75. removeCache,
  76. returnDeptName,
  77. getEmployeeMapItem,
  78. returnFh
  79. } from '@/utils/auth'
  80. Vue.prototype.$echarts = echarts
  81. Vue.prototype.$moment = moment
  82. Vue.prototype.$getTypesName = getTypesName
  83. Vue.prototype.$getTypes = getTypes()
  84. Vue.prototype.$userInfo = getUserData;
  85. Vue.prototype.$getEmployeeMap = getEmployeeMap
  86. Vue.prototype.$getEmployeeMapItem = getEmployeeMapItem
  87. Vue.prototype.$getCache = getCache
  88. Vue.prototype.$setCache = setCache
  89. Vue.prototype.$getIsIdentity = getIsIdentity
  90. Vue.prototype.$supremeAuthority = supremeAuthority
  91. Vue.prototype.$axios = axios
  92. Vue.prototype.$axiosUser = axiosUser
  93. Vue.prototype.$axiosKq = axiosKq
  94. Vue.prototype.$axiosKc = axiosKc
  95. Vue.prototype.$removeCache = removeCache
  96. Vue.prototype.$returnDeptName = returnDeptName
  97. Vue.prototype.$socketApi = socketApi //长连接
  98. Vue.prototype.$socketApiTow = socketApiTow //长连接
  99. Vue.prototype.$returnFh = returnFh
  100. Vue.prototype.$isWx = getIsWx()
  101. // 创建事件总线 就相当于创建了一个新的vue实例
  102. const bus = new Vue()
  103. // 把bus挂载到了Vue的原型上, 保证所有的组件都能通过 this.$bus访问到事件总线
  104. Vue.prototype.$bus = bus
  105. // localStorage.setItem('Wx-Token','eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjE3ODIzNDkxMTYyMzI4OTI0MTcsIm5iZiI6MTcxMzg0MzIzMjY2Niwicm9sZSI6Im1rdF91c2VyIiwicHJ2IjoiMGU1ZWM0NzM3NDk3NmFmY2NlZGJiY2Y1ZGVlNzVmMDE0Y2E1YjliNSIsImV4cCI6LTEsImlhdCI6MTcxMzg0MzIzMjY2NiwianRpIjoieGJ5N3ljbWxqNGduYXcybyJ9.Iv04__mjBDEV75QU8kbrJX2umQIKDZE87-kTD5LG4vg')
  106. // localStorage.setItem('wx_user_info',JSON.stringify({"id":"1782349116232892417","name":"雷阳","mobile":"15270803986","statistics":{"teamAmount":0,"saleAmount":0},"imgUrl":"","marketable":1,"utoken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjE3ODIzNDkxMTYyMzI4OTI0MTcsIm5iZiI6MTcxMzg0MzIzMjY2Niwicm9sZSI6Im1rdF91c2VyIiwicHJ2IjoiMGU1ZWM0NzM3NDk3NmFmY2NlZGJiY2Y1ZGVlNzVmMDE0Y2E1YjliNSIsImV4cCI6LTEsImlhdCI6MTcxMzg0MzIzMjY2NiwianRpIjoieGJ5N3ljbWxqNGduYXcybyJ9.Iv04__mjBDEV75QU8kbrJX2umQIKDZE87-kTD5LG4vg"}))
  107. // true为APP打包,false为M端打包
  108. Vue.prototype.$isApp = true
  109. Vue.use(VueScroller)
  110. Vue.component('icon', icon)
  111. Vue.component('noData', noData)
  112. Vue.component('userImage', userImage)
  113. /*element ui 按需引入*/
  114. Vue.use(ELTree).use(ELButton).use(ELDrawer)
  115. Vue.use(Button).use(Tabbar).use(TabbarItem).use(ShareSheet).use(Grid).use(Overlay).use(Loading).use(Divider).use(
  116. GridItem).use(Picker).use(Form).use(Field).use(List).use(Tabs).use(Tab).use(NavBar).use(Row).use(Col).use(Cell).use(
  117. CellGroup).use(Toast).use(Popup).use(Dialog).use(RadioGroup).use(Radio).use(Icon).use(Notify).use(Empty).use(Collapse).use(CollapseItem)
  118. Vue.prototype.$route_back = function(setp) {
  119. if (typeof(setp) == 'undefined') {
  120. setp = -1
  121. }
  122. if (window.history.length <= 1 && window.plus) {
  123. //先关掉键盘再
  124. document.activeElement.blur()
  125. setTimeout(() => {
  126. plus.webview.currentWebview().close()
  127. }, 100)
  128. } else {
  129. router.go(-1)
  130. }
  131. }
  132. Vue.directive('isKeyboard', function(el) {
  133. let isAndroid = true;
  134. if (navigator.userAgent.indexOf('Android') > 0) {
  135. isAndroid = true;
  136. } else {
  137. isAndroid = false;
  138. }
  139. if (isAndroid) {
  140. //获取原窗口的高度
  141. var originalHeight = document.documentElement.clientHeight || document.body.clientHeight;
  142. window.onresize = function() {
  143. //键盘弹起与隐藏都会引起窗口的高度发生变化
  144. var resizeHeight = document.documentElement.clientHeight || document.body.clientHeight;
  145. if (resizeHeight - 0 < originalHeight - 0) {
  146. // console.log("键盘收起")
  147. el.style['display'] = 'none'
  148. } else {
  149. // console.log("键盘放下")
  150. el.style['display'] = 'block'
  151. }
  152. };
  153. } else { // ios:focusin和focusout支持冒泡,对应focus和blur, 使用focusin和focusout的原因是focusin和focusout可以冒泡,focus和blur不会冒泡,这样就可以使用事件代理,处理多个输入框存在的情况。
  154. document.body.addEventListener("focusin", () => {
  155. //软键盘弹出的事件处理
  156. el.style['display'] = 'none'
  157. });
  158. document.body.addEventListener("focusout", () => {
  159. //软键盘收起的事件处理
  160. el.style['display'] = 'block'
  161. });
  162. }
  163. })
  164. Vue.config.productionTip = false
  165. window.VueObj = new Vue({
  166. el: '#app',
  167. router,
  168. store,
  169. components: {
  170. App
  171. },
  172. template: '<App/>'
  173. })