/* * 公共方法 * */ import moment from 'moment'; import { lang } from 'moment'; const base64ToFile = (dataurl, filename = 'file') => { let arr = dataurl.split(',') let mime = arr[0].match(/:(.*?);/)[1] let suffix = mime.split('/')[1] let bstr = atob(arr[1]) let n = bstr.length let u8arr = new Uint8Array(n) while (n--) { u8arr[n] = bstr.charCodeAt(n) } return new File([u8arr], `${filename}.${suffix}`, { type: mime }) } const toast = (msg, time, callback) => { uni.showToast({ icon: "none", title: msg, duration: time || 1500, success: function(res) { if (callback && typeof(callback) == 'function') { console.log(callback) callback() } } }) } // 转换日期为日月 const formatDateToMonthDay = (dateString) => { const month = moment(dateString).format('MM') const day = moment(dateString).format('DD') return `${month}月${day}日`; } // 比较当前时间是否在活动期间 在true 不在false const isCurrentTimeBetween = (startTime, endTime) => { let that = this const now = moment().valueOf() const start = moment(startTime).valueOf(); const end = moment(endTime).valueOf(); return now < start || now > end; } // 验证是否填写的是中文 const isOnlyChinese = (str) => { const chineseRegex = /^[\u4e00-\u9fa5]+$/; return chineseRegex.test(str); } // 验证是否为空 const isNull = (p) => { return p == '' || p == undefined || p == null || p == 'undefined' || p == 'null'; } // 验证手机号 const isMobile = (phoneNumber) => { const regex = /^1[3-9]\d{9}$/; return regex.test(phoneNumber); } // 分享 const shareInfo = { title:"行走红色苏州", imageUrl:"/static/share.jpg" } // 计算距离 const getDistance = (la1, lo1, la2, lo2) => { // 当前的纬度,当前的经度,接口拿到的纬度,接口拿到的经度 console.log(la1, lo1, la2, lo2) la1 = parseFloat(la1) lo1 = parseFloat(lo1) la2 = parseFloat(la2) lo2 = parseFloat(lo2) console.log(la1, lo1, la2, lo2) let La1 = la1 * Math.PI / 180.0; let La2 = la2 * Math.PI / 180.0; let La3 = La1 - La2; let Lb3 = lo1 * Math.PI / 180.0 - lo2 * Math.PI / 180.0; let distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(La3 / 2), 2) + Math.cos(La1) * Math.cos(La2) * Math .pow(Math.sin(Lb3 / 2), 2))); distance = distance * 6378.137; distance = Math.round(distance * 10000) / 10000; if (distance < 0) { return distance * 1000 + '米' } else { return distance.toFixed(2) + '公里' } } // 打开导航 const toMapAPP = (lat,lng,name) => { let that = this const lat1 = parseFloat(lat) const lng1 = parseFloat(lng) // 获取用户是否开启 授权获取当前的地理位置、速度的权限。 uni.getSetting({ success(res) { console.log(res, '----1') // 如果没有授权 if (!res.authSetting['scope.userLocation']) { // 则拉起授权窗口 uni.authorize({ scope: 'scope.userLocation', success() { //如果授权了 uni.openLocation({ latitude: lat1, //到达的纬度 longitude: lng1, //到达的经度 name: name, //到达的名字 scale: 12, success() { console.log('success') } }) }, fail(error) { //点击了拒绝授权后--就一直会进入失败回调函数--此时就可以在这里重新拉起授权窗口 console.log('拒绝授权', error) uni.showModal({ title: '提示', content: '若点击不授权,将无法使用位置功能', cancelText: '不授权', cancelColor: '#999', confirmText: '授权', confirmColor: '#f94218', success(res) { console.log(res) if (res.confirm) { // 选择弹框内授权 uni.openSetting({ success(res) { console.log(res.authSetting) } }) } else if (res.cancel) { // 选择弹框内 不授权 console.log('用户点击不授权') } } }) } }) } else { console.log('有授权'); // 有权限则直接获取 uni.openLocation({ latitude: lat1, //到达的纬度 longitude: lng1, //到达的经度 name: name, //到达的名字 scale: 12, success() { console.log('success') } }) } } }) } export { base64ToFile, toast, formatDateToMonthDay, isCurrentTimeBetween, isOnlyChinese, isNull, isMobile, getDistance, toMapAPP, shareInfo }