util.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import simpleCache from './cache.js'
  2. import dateTime from './dateTime.js'
  3. //工具类
  4. let util = {}
  5. //预览图片
  6. // this.$util.preview('http://....png')
  7. // this.$util.preview('../../test.png')
  8. // this.$util.preview(['http://....png', '../../test.png'])
  9. util.preview=async (src)=> {
  10. const urls = typeof src === 'string' ? [src] : src
  11. const filePath = async src => src.match(/^http/) ? src : (await uni.compressImage({ src, quality: 100 }))[1].tempFilePath
  12. for (let i = 0; i < urls.length; i++) {
  13. urls[i] = await filePath(urls[i])
  14. }
  15. uni.previewImage({ urls })
  16. },
  17. //复制
  18. util.copy=content=>{
  19. uni.setClipboardData({ data: content });
  20. }
  21. util.calculateDistance=(lat1, lng1, lat2, lng2)=> {
  22. console.log(lat1, lng1, lat2, lng2)
  23. var radLat1 = lat1 * Math.PI / 180.0;
  24. var radLat2 = lat2 * Math.PI / 180.0;
  25. var a = radLat1 - radLat2;
  26. var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
  27. var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
  28. Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
  29. s = s * 6378.137;
  30. s = Math.round(s * 10000) / 10;//单位米
  31. return s
  32. },
  33. util.showModal=(content,title='提示')=>{
  34. return new Promise((resolve,reject)=>{
  35. uni.showModal({
  36. title: title,
  37. content: content,
  38. success: (res)=>{
  39. resolve(res)
  40. }
  41. });
  42. })
  43. }
  44. //拨打电话
  45. util.callPhone=(phone)=>{
  46. uni.showModal({
  47. title: '提示',
  48. content: `确定要拨打电话:${phone}吗?`,
  49. success: function (res) {
  50. if (res.confirm) {
  51. uni.makePhoneCall({
  52. phoneNumber: phone //仅为示例
  53. });
  54. }
  55. }
  56. });
  57. }
  58. /**
  59. * 数组去重
  60. * @param {Array} arr 源数组
  61. *
  62. * @return {Array} newArr 去重后的数组
  63. */
  64. util.uniqueArray = (arr)=>{
  65. return [...new Set(arr)]
  66. }
  67. util.objectCoppy =(target,source)=>{
  68. Object.keys(target).forEach(key=>{target[key]=source[key]})
  69. }
  70. //获取某一个页面上下文 context
  71. util.getPageCtx = (idx = 0) => {
  72. let pages = getCurrentPages()
  73. if (pages.length > 0) {
  74. return pages[pages.length - 1 - idx] || {}
  75. }
  76. return {}
  77. }
  78. //获取当前页面路由
  79. util.getCurrentRoute = () => {
  80. let page = util.getPageCtx()
  81. if (page.route) {
  82. return page.route
  83. }
  84. return ''
  85. }
  86. //回到上一页刷新页面
  87. util.isReloadAndBack = () => {
  88. let prePage=util.getPageCtx(1)
  89. prePage.setData({
  90. "reload":true
  91. })
  92. uni.navigateBack({
  93. delta:1
  94. })
  95. }
  96. //onshow方法通过刷新mescroll数据
  97. util.reload = (mescroll) => {
  98. let page= util.getPageCtx()
  99. if (page.data.reload) {
  100. mescroll.resetUpScroll();
  101. page.data.reload=false
  102. }
  103. }
  104. /**
  105. * 携带参数
  106. * data:{}
  107. */
  108. util.backWithParams=(data)=>{
  109. let prePage=util.getPageCtx(1)
  110. prePage.setData(data)
  111. uni.navigateBack({
  112. delta:1
  113. })
  114. }
  115. /**
  116. * 获取参数
  117. * paramsName:参数名
  118. */
  119. util.getBackParams = (paramsName) => {
  120. let page= util.getPageCtx()
  121. if (page.data[paramsName]) {
  122. return page.data[paramsName]
  123. }
  124. return null
  125. }
  126. export default util