globalMixins.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. import { getDict } from '@/api/toConsult.js'
  2. import dayjs from 'dayjs'
  3. import Dicts from '../utils/dicts'
  4. import { mapActions } from 'vuex'
  5. import { imgUrl } from '@/utils/index'
  6. export default {
  7. data() {
  8. return {
  9. fromPages:null,
  10. toPages:null,
  11. globalLoading:false,
  12. }
  13. },
  14. created() {
  15. /** 组件中设置dicts数组,会将字典存储在vuex中*/
  16. if (this.dicts && this.dicts.length > 0) {
  17. this.setDicts()
  18. }
  19. },
  20. methods: {
  21. ...mapActions(['setDict']),
  22. getRouter(){
  23. let router = JSON.parse(sessionStorage.getItem('ROUTER'));
  24. this.fromPages = router.from;
  25. this.toPages = router.to;
  26. },
  27. setDicts() {
  28. this.dicts.forEach(item => {
  29. this.setDict(item)
  30. })
  31. },
  32. /** 获取字典值
  33. * key: String 字典类型
  34. * 组件页面中需要设置:mapGetters(['dictionary']']),
  35. * */
  36. getDictItem(key) {
  37. let item = this.dictionary.find(v => {
  38. return v.key === key
  39. })
  40. console.log(item, 'item')
  41. return item?.value
  42. },
  43. /** 获取字典值
  44. * key: String 查询具体值
  45. * dictType: String 字典类型
  46. * 组件页面中需要设置:mapGetters(['dictionary']']),
  47. * */
  48. getDictLabel(key, dictType) {
  49. let item = this.dictionary?.find(v => {
  50. return v.key === dictType
  51. })
  52. let dictLabel = item?.value?.find(v => {
  53. if (v.dictValue == key) {
  54. return v?.dictLabel
  55. }
  56. })
  57. return dictLabel?.dictLabel
  58. },
  59. //时间范围模板:2020-01-01~2020-01-02
  60. rangDate(start, end, a) {
  61. if (!start || !end) return '暂无'
  62. !a && (a = '~')
  63. return `${start}${a}${end}`
  64. },
  65. //根据字典类型获取字典值
  66. getDictHandler(dictType, callBack) {
  67. getDict(dictType).then(res => {
  68. let { data } = res
  69. callBack(data)
  70. })
  71. },
  72. //调用预览和pdf(内网银行)
  73. openFilePreview(file) {
  74. const parms = {
  75. url: file.url.indexOf('http') > -1 ? file.url : imgUrl(file.url),
  76. name: file.name
  77. }
  78. console.log(parms.url,'parms')
  79. let system = this.isAndroidOrIos();
  80. if(system === 3) {
  81. this.$toast('请在app内打开');
  82. return
  83. }
  84. if (system === 1) {
  85. //android
  86. // 判断当前环境是是否存在 js桥 'sap'
  87. const hasSap = window.hasOwnProperty('sap')
  88. if (hasSap) {
  89. // 判断是否存在方法 ?preview
  90. const fun = sap.hasOwnProperty('preview')
  91. if (fun) {
  92. sap.preview(JSON.stringify(parms))
  93. }
  94. }
  95. }
  96. if (system === 2) {
  97. //ios
  98. // 判断 ios是否存在方法 preview
  99. const fun = window.webkit.messageHandlers.hasOwnProperty('preview')
  100. if (fun) {
  101. window.webkit.messageHandlers.preview.postMessage(JSON.stringify(parms))
  102. }
  103. }
  104. },
  105. //调用NFC
  106. useNFC() {
  107. let system = this.isAndroidOrIos()
  108. const parms = {
  109. "iOS_SessionType": "0"
  110. }
  111. if (system === 1) {
  112. //android
  113. // 判断当前环境是是否存在 js桥 'sap'
  114. const hasSap = window.hasOwnProperty('sap');
  115. if (hasSap) {
  116. // 判断是否存在方法 ?preview
  117. const fun = sap.hasOwnProperty('openNFCScan');
  118. if (fun) {
  119. sap.openNFCScan(JSON.stringify(parms));
  120. }
  121. }
  122. }
  123. if (system === 2) {
  124. //ios
  125. // 判断 ios是否存在方法 preview
  126. const fun = window.webkit.messageHandlers.hasOwnProperty('openNFCScan')
  127. if (fun) {
  128. window.webkit.messageHandlers.openNFCScan.postMessage(JSON.stringify(parms))
  129. }
  130. }
  131. },
  132. //调用相机和相册
  133. useCamera(actionType) {
  134. window.openCameraCallBack = null
  135. window.openCameraCallBack = this.openCameraCallBack
  136. let parms = {}
  137. if (actionType) {
  138. parms.actionType = actionType
  139. parms.compressKb = '1024'
  140. }
  141. let system = this.isAndroidOrIos()
  142. if (system === 1) {
  143. //android
  144. // 判断当前环境是是否存在 js桥 'sap'
  145. const hasSap = window.hasOwnProperty('sap')
  146. if (hasSap) {
  147. // 判断是否存在方法 ?preview
  148. const fun = sap.hasOwnProperty('openCamera')
  149. if (fun) {
  150. sap.openCamera(JSON.stringify(parms))
  151. }
  152. }
  153. }
  154. if (system === 2) {
  155. //ios
  156. // 判断 ios是否存在方法 preview
  157. const preview = window.webkit.messageHandlers.hasOwnProperty('openCamera')
  158. if (preview) {
  159. window.webkit.messageHandlers.openCamera.postMessage(JSON.stringify(parms))
  160. }
  161. }
  162. },
  163. isAndroidOrIos() {
  164. const urls = navigator.userAgent
  165. console.log(urls, 'urls')
  166. let isAndroid = urls.indexOf('Android') > -1 || urls.indexOf('Linux') > -1
  167. let isIos = !!urls.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/)
  168. if (isAndroid) {
  169. return 1
  170. }
  171. if (isIos) {
  172. return 2
  173. }
  174. return 3
  175. },
  176. }
  177. }