globalMixins.js 4.6 KB

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