433 lines
11 KiB
JavaScript
433 lines
11 KiB
JavaScript
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;
|
||
}
|
||
}
|