This commit is contained in:
我是个攻城狮
2026-05-27 16:01:15 +08:00
parent dc43370953
commit c3f5f13bb3
953 changed files with 107635 additions and 11 deletions
+432
View File
@@ -0,0 +1,432 @@
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;
}
}