import simpleCache from './cache.js' import dateTime from './dateTime.js' //工具类 let util = {} //预览图片 // this.$util.preview('http://....png') // this.$util.preview('../../test.png') // this.$util.preview(['http://....png', '../../test.png']) util.preview=async (src)=> { const urls = typeof src === 'string' ? [src] : src const filePath = async src => src.match(/^http/) ? src : (await uni.compressImage({ src, quality: 100 }))[1].tempFilePath for (let i = 0; i < urls.length; i++) { urls[i] = await filePath(urls[i]) } uni.previewImage({ urls }) }, //复制 util.copy=content=>{ uni.setClipboardData({ data: content }); } util.calculateDistance=(lat1, lng1, lat2, lng2)=> { console.log(lat1, lng1, lat2, lng2) var radLat1 = lat1 * Math.PI / 180.0; var radLat2 = lat2 * Math.PI / 180.0; var a = radLat1 - radLat2; var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0; var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * 6378.137; s = Math.round(s * 10000) / 10;//单位米 return s }, util.showModal=(content,title='提示')=>{ return new Promise((resolve,reject)=>{ uni.showModal({ title: title, content: content, success: (res)=>{ resolve(res) } }); }) } //拨打电话 util.callPhone=(phone)=>{ uni.showModal({ title: '提示', content: `确定要拨打电话:${phone}吗?`, success: function (res) { if (res.confirm) { uni.makePhoneCall({ phoneNumber: phone //仅为示例 }); } } }); } /** * 数组去重 * @param {Array} arr 源数组 * * @return {Array} newArr 去重后的数组 */ util.uniqueArray = (arr)=>{ return [...new Set(arr)] } //获取某一个页面上下文 context util.getPageCtx = (idx = 0) => { let pages = getCurrentPages() if (pages.length > 0) { return pages[pages.length - 1 - idx] || {} } return {} } //获取当前页面路由 util.getCurrentRoute = () => { let page = util.getPageCtx() if (page.route) { return page.route } return '' } //回到上一页刷新页面 util.isReloadAndBack = () => { let prePage=util.getPageCtx(1) prePage.setData({ "reload":true }) uni.navigateBack({ delta:1 }) } //onshow方法通过刷新mescroll数据 util.reload = (mescroll) => { let page= util.getPageCtx() if (page.data.reload) { mescroll.resetUpScroll(); page.data.reload=false } } // 刷新当前页面 util.refreshPage = () => { const pages = getCurrentPages() const currentPage = pages[pages.length - 1] const path = '/' + currentPage.route + vm.$u.queryParams(currentPage.options) if (vm.$u.test.contains(currentPage.route, 'tabbar')) { uni.reLaunch({ url: path, fail: (err) => { console.log(err) } }) } else { uni.redirectTo({ url: path, fail: (err) => { console.log(err) } }) } } export default util