You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

438 lines
10 KiB
JavaScript

9 months ago
const formatTime = date => {
const year = date.getFullYear()
const month = date.getMonth() + 1
const day = date.getDate()
const hour = date.getHours()
const minute = date.getMinutes()
const second = date.getSeconds()
return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
/**
* 获取今天星期
*/
function getWeeker() {
var a = ["日", "一", "二", "三", "四", "五", "六"];
var week = new Date().getDay();
return "星期" + a[week];
}
/**
* 比较两个日期的大小
*/
function compareDate(d1, d2) {
var date = new Date(d1);
var tempDate = new Date(d2);
return date.getTime() > tempDate.getTime();
}
/***
* data 时间
*
* sign 标识0,1,2
* 0yyyy/MM/dd HH:mm:ss:ms
* 1yyyy-MM-dd HH:mm:ss:ms(default)
* 2yyyyMMddHHmmss
* 3yyyy-MM-dd
*/
function getFormatTime(date, sign) {
if (undefined == sign || null == sign || sign == "" || sign > 5) {
sign = 0;
}
var year = date.getFullYear()
var month = date.getMonth() + 1
var day = date.getDate()
var hour = date.getHours()
var minute = date.getMinutes()
var second = date.getSeconds()
var milliseconds = date.getMilliseconds()
var value = "";
switch (sign) {
case 0:
value = [hour, minute].map(formatNumber).join(':');
break;
case 1:
value = [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':');
break;
case 2:
value = [year, month, day].map(formatNumber).join('') + [hour, minute, second].map(formatNumber).join('');
break;
case 3:
value = [year, month, day].map(formatNumber).join('-');
break;
case 4:
value = [year, month].map(formatNumber).join('-') + "-01";
break;
case 5:
value = [hour, minute, second].map(formatNumber).join(':');
break;
}
return value;
}
// 对象转string
const parseToString = function(options) {
var content = "";
var keys = Object.keys(options);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var value = "";
if (undefined != options[key]) {
value = options[key].toString();
}
if (content.length > 0) {
content += "&" + encodeURI(key, "utf-8") + "=" + encodeURI(value, "utf-8");
} else {
content += encodeURI(key, "utf-8") + "=" + encodeURI(value, "utf-8");
}
}
return content;
}
/**校验不为空 */
const isNotBlank = function(value) {
if (null != value && undefined != value && JSON.stringify(value) != "") {
return true;
} else {
return false;
}
};
/**校验为空 */
const isBlank = function(value) {
if (null == value || undefined == value || value == "" || JSON.stringify(value) == "") {
return true;
} else {
return false;
}
};
// 替换全部
function replaceAll(source, oldStr, newStr) {
while (source.indexOf(oldStr) >= 0) {
source = source.replace(oldStr, newStr);
}
return source;
}
/**
* 加法运算避免数据相加小数点后产生多位数和计算精度损失
*
* @param num1加数1 |
* num2加数2
*/
var numAdd = function(num1, num2, decimal) {
var baseNum, baseNum1, baseNum2;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
var value = (num1 * baseNum + num2 * baseNum) / baseNum
if (undefined == decimal || null == decimal || "" == decimal) {
return value;
} else {
if (isNaN(decimal)) {
decimal = 2
}
return value.toFixed(2);
}
};
/**
* 减法运算避免数据相减小数点后产生多位数和计算精度损失
*
* @param num1被减数 |
* num2减数
*/
var numSub = function(num1, num2, decimal) {
var baseNum, baseNum1, baseNum2;
var precision; /*** 精度***/
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
var value = Number(((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision));
if (undefined == decimal || null == decimal || "" == decimal) {
return value;
} else {
if (isNaN(decimal)) {
decimal = 2
}
return value.toFixed(2);
}
};
/**
* 乘法运算避免数据相乘小数点后产生多位数和计算精度损失
*
* @param num1被乘数 |
* num2乘数
*/
var numMulti = function(num1, num2, decimal) {
var baseNum = 0;
try {
baseNum += num1.toString().split(".")[1].length;
} catch (e) {}
try {
baseNum += num2.toString().split(".")[1].length;
} catch (e) {}
var value = Number(num1.toString().replace(".", "")) *
Number(num2.toString().replace(".", "")) / Math.pow(10, baseNum);
if (undefined == decimal || null == decimal || "" == decimal) {
return value;
} else {
if (isNaN(decimal)) {
decimal = 2
}
return value.toFixed(2);
}
};
/**
* 除法运算避免数据相除小数点后产生多位数和计算精度损失
*
* @param num1被除数 |
* num2除数
*/
var numDiv = function(num1, num2, decimal) {
var baseNum1 = 0,
baseNum2 = 0;
var baseNum3, baseNum4;
try {
baseNum1 = num1.toString().split(".")[1].length;
} catch (e) {
baseNum1 = 0;
}
try {
baseNum2 = num2.toString().split(".")[1].length;
} catch (e) {
baseNum2 = 0;
}
baseNum3 = Number(num1.toString().replace(".", ""));
baseNum4 = Number(num2.toString().replace(".", ""));
var value = (baseNum3 / baseNum4) * pow(10, baseNum2 - baseNum1);
if (undefined == decimal || null == decimal || "" == decimal) {
return value;
} else {
if (isNaN(decimal)) {
decimal = 2
}
return value.toFixed(2);
}
};
// 仿js each循环
var each = function(object, callback, args) {
var name, i = 0,
length = object.length,
isObj = length === undefined || typeof object == 'function';
if (args) {
if (isObj) {
for (name in object) {
if (callback.apply(object[name], args) === false) {
break;
}
}
} else {
for (; i < length;) {
if (callback.apply(object[i++], args) === false) {
break;
}
}
}
// A special, fast, case for the most common use of each
} else {
if (isObj) {
for (name in object) {
if (callback.call(object[name], name, object[name]) === false) {
break;
}
}
} else {
for (; i < length;) {
if (callback.call(object[i], i, object[i++]) === false) {
break;
}
}
}
}
return object;
};
// 显示繁忙提示
var showBusy = text => wx.showToast({
title: text,
icon: 'loading',
duration: 10000
})
// 显示成功提示
var showSuccess = text => wx.showToast({
title: text,
icon: 'success'
})
function alertErrorMsg(title, content) {
wx.showModal({
title: title,
content: content,
showCancel: false
});
}
// 显示失败提示
var showModel = (title, content) => {
wx.hideToast();
wx.showModal({
title,
content: JSON.stringify(content),
showCancel: false
})
}
// 根据下标删除对应的元素
Array.prototype.remove = function(dx) {
if (isNaN(dx) || dx > this.length) {
return false;
}
for (var i = 0, n = 0; i < this.length; i++) {
if (this[i] != this[dx]) {
this[n++] = this[i]
}
}
this.length -= 1
}
//
var deviceInfo = function() {
var model = "iPhone X";
var result = false;
wx.getSystemInfo({
success: function(res) {
console.log(res);
if (res.errMsg == "getSystemInfo:ok") {
console.log(model.indexOf(res.model));
if (res.model.indexOf(model) != -1) {
result = true;
}
wx.setStorageSync("model", result);
}
},
});
}
var getZero = function(num) {
return parseFloat(num).toFixed(0);
}
var getOne = function(num) {
return parseFloat(num).toFixed(1);
}
var getTwo = function(num) {
return parseFloat(num).toFixed(2);
}
var isOpen = function(dateTime, time) {
var result = false;
if (!time) {
return true;
}
var tempTimes = time.split(",");
for (var item of tempTimes) {
var temps = item.split("-");
var startTime = temps[0].split(":");
var time1 = startTime[0] * 3600 + startTime[1] * 60 + startTime[2];
var endTime = temps[1].split(":");
var time2 = endTime[0] * 3600 + endTime[1] * 60 + endTime[2];
var nowTime = dateTime.split(":");
var time3 = nowTime[0] * 3600 + nowTime[1] * 60 + nowTime[2];
if (time1 < time3 && time3 < time2) {
result = true;
break;
}
}
return result;
}
var getDistance = function(lat1, lng1, lat2, lng2) {
lat1 = lat1 || 0;
lng1 = lng1 || 0;
lat2 = lat2 || 0;
lng2 = lng2 || 0;
var rad1 = lat1 * Math.PI / 180.0;
var rad2 = lat2 * Math.PI / 180.0;
var a = rad1 - rad2;
var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
var r = 6378137;
var distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));
// if (distance > 1000){
distance = Math.round(distance / 1000);
// }
return distance;
}
module.exports = {
getWeeker: getWeeker,
compareDate: compareDate,
each: each,
numAdd: numAdd,
numSub: numSub,
numMulti: numMulti,
numDiv: numDiv,
formatTime: formatTime,
replaceAll: replaceAll,
parseToString: parseToString,
isBlank: isBlank,
isNotBlank: isNotBlank,
formatNumber: formatNumber,
showBusy: showBusy,
showSuccess: showSuccess,
showModel: showModel,
alertErrorMsg: alertErrorMsg,
deviceInfo: deviceInfo,
getFormatTime: getFormatTime,
getZero: getZero,
getOne: getOne,
getTwo: getTwo,
isOpen: isOpen,
getDistance: getDistance
}