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)=> { 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) / 10000;//单位km return Math.floor(s * 100) / 100 }, 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 = (vm) => { const pages = getCurrentPages() const currentPage = pages[pages.length - 1] const path = '/' + currentPage.route + vm.$u.queryParams(currentPage.options) uni.reLaunch({ url: path, fail: (err) => { console.log(err) } }) } /** * 携带参数 * data:{} */ util.backWithParams=(data)=>{ let prePage=util.getPageCtx(1) prePage.setData(data) uni.navigateBack({ delta:1 }) } /** * 获取参数 * paramsName:参数名 */ util.getBackParams = (paramsName) => { let page= util.getPageCtx() if (page.data[paramsName]) { return page.data[paramsName] } return null } /** * 获取url参数 */ util.getUrlParams=(p)=>{ let url = decodeURIComponent(p); let param = {}; // 把参数按&拆分成数组 let index = url.indexOf("?"); let query = url.substring(index + 1, index.length); var param_arr = query.split("&"); for (var i = 0; i < param_arr.length; i++) { var pair = param_arr[i].split("="); param[pair[0]] = pair[1]; } return param } export default util