export default { /** * 计算两地距离 * @param {起始纬度} lat1 * @param {起始经度} lng1 * @param {结束纬度} lat2 * @param {结束经度} lng2 */ distance(lat1, lng1, lat2, lng2) { console.log(lat1,lng1,lat2,lng2,'2345678'); 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; return s }, geTel(tel){ let reg = /^(\d{3})\d{4}(\d{4})$/; return tel.replace(reg, "$1****$2"); }, //得到日期显示 getFormatDate(ta='/') { let date = new Date(); let y = date.getFullYear(); let MM = date.getMonth() + 1; MM = MM < 10 ? ('0' + MM) : MM; let d = date.getDate(); d = d < 10 ? ('0' + d) : d; let h = date.getHours(); h = h < 10 ? ('0' + h) : h; let m = date.getMinutes(); m = m < 10 ? ('0' + m) : m; let s = date.getSeconds(); s = s < 10 ? ('0' + s) : s; return y + ta + MM + ta + d + ' ' + h + ':' + m + ':' + s; //+ ' ' + h + ':' + m + ':' + s }, getFormatDateNum(e) { let date = new Date(); let y = date.getFullYear(); let MM = date.getMonth() + 1; MM = MM < 10 ? ('0' + MM) : MM; let d = date.getDate(); d = d < 10 ? ('0' + d) : d; let h = date.getHours(); h = h < 10 ? ('0' + h) : h; let m = date.getMinutes(); m = m < 10 ? ('0' + m) : m; let s = date.getSeconds(); s = s < 10 ? ('0' + s) : s; return y + '/' + MM + '/' + d + ' ' + e + ':' + '00' + ':' + '00'; //+ ' ' + h + ':' + m + ':' + s }, //得到日期显示 getFormatMD() { let date = new Date(); let y = date.getFullYear(); let MM = date.getMonth() + 1; MM = MM < 10 ? ('0' + MM) : MM; let d = date.getDate(); d = d < 10 ? ('0' + d) : d; let h = date.getHours(); h = h < 10 ? ('0' + h) : h; let m = date.getMinutes(); m = m < 10 ? ('0' + m) : m; let s = date.getSeconds(); s = s < 10 ? ('0' + s) : s; return MM + '月' + d + '日'; }, //日期显示 formatDate(value) { let date = new Date(parseInt(value) * 1000); let y = date.getFullYear(); let MM = date.getMonth() + 1; MM = MM < 10 ? ('0' + MM) : MM; let d = date.getDate(); d = d < 10 ? ('0' + d) : d; let h = date.getHours(); h = h < 10 ? ('0' + h) : h; let m = date.getMinutes(); m = m < 10 ? ('0' + m) : m; let s = date.getSeconds(); s = s < 10 ? ('0' + s) : s; return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s; }, //年月日 formatDateYmd(value) { let date = new Date(parseInt(value) * 1000); let y = date.getFullYear(); let MM = date.getMonth() + 1; MM = MM < 10 ? ('0' + MM) : MM; let d = date.getDate(); d = d < 10 ? ('0' + d) : d; let h = date.getHours(); h = h < 10 ? ('0' + h) : h; let m = date.getMinutes(); m = m < 10 ? ('0' + m) : m; let s = date.getSeconds(); s = s < 10 ? ('0' + s) : s; return y + '-' + MM + '-' + d; }, //月日 formatDateYm(value) { let date = new Date(parseInt(value) * 1000); let y = date.getFullYear(); let MM = date.getMonth() + 1; MM = MM < 10 ? ('0' + MM) : MM; let d = date.getDate(); d = d < 10 ? ('0' + d) : d; let h = date.getHours(); h = h < 10 ? ('0' + h) : h; let m = date.getMinutes(); m = m < 10 ? ('0' + m) : m; let s = date.getSeconds(); s = s < 10 ? ('0' + s) : s; return MM + '.' + d + ' ' + h + ':' + m; }, toTime(value){ var timestamp = new Date(value).getTime(); return timestamp/1000; }, time2string(second){ var day = Math.floor(second/(3600*24)); second = second%(3600*24); //除去整天之后剩余的时间 var hour = Math.floor(second/3600); second = second%3600; //除去整小时之后剩余的时间 var minute = Math.floor(second/60); second = second%60; //除去整分钟之后剩余的时间 //返回字符串 //return day + '天' + hour + '小时' + minute + '分' + second + '秒'; return {hour,minute,second} }, /*日期工具*/ dateUtils: { UNITS: { '年': 31557600000, '月': 2629800000, '天': 86400000, '小时': 3600000, '分钟': 60000, '秒': 1000 }, humanize: function(milliseconds) { var humanize = ''; for (var key in this.UNITS) { if (milliseconds >= this.UNITS[key]) { humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前'; break; } } return humanize || '刚刚'; }, format: function(dateStr) { var date = this.parse(dateStr) var diff = Date.now() - date.getTime(); if (diff < this.UNITS['天']) { return this.humanize(diff); } var _format = function(number) { return (number < 10 ? ('0' + number) : number); }; return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDay()) + '-' + _format(date.getHours()) + ':' + _format(date.getMinutes()); }, parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串,转化为一个Date对象 var a = str.split(/[^0-9]/); return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]); } }, friendlyDate(timestamp) { var formats = { 'year': '%n% 年前', 'month': '%n% 月前', 'day': '%n% 天前', 'hour': '%n% 小时前', 'minute': '%n% 分钟前', 'second': '%n% 秒前', }; var now = Date.now(); var seconds = Math.floor((now - timestamp) / 1000); var minutes = Math.floor(seconds / 60); var hours = Math.floor(minutes / 60); var days = Math.floor(hours / 24); var months = Math.floor(days / 30); var years = Math.floor(months / 12); var diffType = ''; var diffValue = 0; if (years > 0) { diffType = 'year'; diffValue = years; } else { if (months > 0) { diffType = 'month'; diffValue = months; } else { if (days > 0) { diffType = 'day'; diffValue = days; } else { if (hours > 0) { diffType = 'hour'; diffValue = hours; } else { if (minutes > 0) { diffType = 'minute'; diffValue = minutes; } else { diffType = 'second'; diffValue = seconds === 0 ? (seconds = 1) : seconds; } } } } } return formats[diffType].replace('%n%', diffValue); }, //时间显示 formatTime(time) { if (typeof time !== 'number' || time < 0) { return time } var hour = parseInt(time / 3600) time = time % 3600 var minute = parseInt(time / 60) time = time % 60 var second = time return ([hour, minute, second]).map(function(n) { n = n.toString() return n[1] ? n : '0' + n }).join(':') }, //经纬度 formatLocation(longitude, latitude) { if (typeof longitude === 'string' && typeof latitude === 'string') { longitude = parseFloat(longitude) latitude = parseFloat(latitude) } longitude = longitude.toFixed(2) latitude = latitude.toFixed(2) return { longitude: longitude.toString().split('.'), latitude: latitude.toString().split('.') } }, /* * 将cityNo 转 cityName * cityData:原数据 * cityNo:二级地区编码 */ getCityName(cityData, cityNo) { if (!cityNo) return; if (!(cityData instanceof Array)) return; // 9112 cityNo += ""; for (let i = 0; i < cityData.length; i++) { let sheng = cityData[i]; for (let j = 0; j < sheng.children.length; j++) { let shi = sheng.children[j]; if (shi.value == cityNo) { // 使用return 终止循环 return `${sheng.label}-${shi.label}`; } } } }, removeTime(dateStr) { const date = new Date(dateStr); return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`; }, /* * obj 转 params字符串参数 * 例子:{a:1,b:2} => a=1&b=2 */ objParseParam(obj) { let paramsStr = ""; if (obj instanceof Array) return paramsStr; if (!(obj instanceof Object)) return paramsStr; for (let key in obj) { paramsStr += `${key}=${obj[key]}&`; } return paramsStr.substring(0, paramsStr.length - 1); }, /* * obj 转 路由地址带参数 * 例子:{a:1,b:2} => /pages/index/index?a=1&b=2 */ objParseUrlAndParam(path, obj) { let url = path || "/"; let paramsStr = ""; if (obj instanceof Array) return url; if (!(obj instanceof Object)) return url; paramsStr = this.objParseParam(obj); paramsStr && (url += "?"); url += paramsStr; return url; }, /* * 获取url字符串参数 */ getRequestParameters(locationhref) { let href = locationhref || ""; let theRequest = new Object(); let str = href.split("?")[1]; if (str != undefined) { let strs = str.split("&"); for (let i = 0; i < strs.length; i++) { theRequest[strs[i].split("=")[0]] = (strs[i].split("=")[1]); } } return theRequest; }, /* * 银行卡每四位空格 */ formatCardNo(cardNo) { cardNo += ""; return cardNo.replace(/\s/g, '').replace(/[^\d]/g, '').replace(/(\d{4})(?=\d)/g, '$1 '); }, /** * 乘法,解决js精度损失问题 * @param {*} arg1 * @param {*} arg2 */ accMul(arg1, arg2) { arg1 = arg1 || 0; var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); try { m += s1.split(".")[1].length } catch (e) {} try { m += s2.split(".")[1].length } catch (e) {} return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m) }, //数字补齐2位 forMatNum(num) { return num < 10 ? '0' + num : num + ''; }, //日期 initDays(year, month) { let totalDays = new Date(year, month, 0).getDate(); let dates = []; for (let d = 1; d <= totalDays; d++) { dates.push(forMatNum(d)); }; return dates; }, //日期 initPicker(start, end, mode = "date", step = 1) { let initstartDate = new Date(start); let endDate = new Date(end); let startYear = initstartDate.getFullYear(); let startMonth = initstartDate.getMonth(); let endYear = endDate.getFullYear(); let years = [], months = [], days = [], hours = [], minutes = []; let totalDays = new Date(startYear, startMonth, 0).getDate(); for (let s = startYear; s <= endYear; s++) { years.push(s + ''); }; for (let m = 1; m <= 12; m++) { months.push(forMatNum(m)); }; for (let d = 1; d <= totalDays; d++) { days.push(forMatNum(d)); } for (let h = 0; h < 24; h++) { hours.push(forMatNum(h)); } for (let m = 0; m < 60; m += step) { minutes.push(forMatNum(m)); } switch (mode) { case "date": return { years, months, days } break; case "yearMonth": return { years, months } break; case "dateTime": return { years, months, days, hours, minutes } break; case "time": return { hours, minutes } break; } }, // 深拷贝 deepClone(obj){   let objClone = Array.isArray(obj) ? [] : {};   if (obj && typeof obj === 'object') {     for(let key in obj){       if (obj[key] && typeof obj[key] === 'object'){         objClone[key] = this.deepClone(obj[key]);       }else{         objClone[key] = obj[key]       }     }   }   return objClone; } }