// 防抖
// fn 需要做防抖的函数, delay 延迟时间
function debounce(fn, delay = 500) {
let timer = null;
//addEventListener 第二个参数是个函数,所以返回函数
return function () {
if (timer) clearTimeout(timer)
timer = setTimeout(() => {
fn()
}, delay);
}
}
// 节流
function throttle(fn, delay = 500) {
// 初始化timer
let timer = null
//addEventListener 第二个参数是个函数,所以返回函数
return function () {
// 如果timer有值返回,跳转当前函数
if (timer) return
timer = setTimeout(() => {
fn()
timer = null
}, delay);
}
}
// 随机数UUID
function makeUUID() {
var S4 = function () {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
};
//return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
return (S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4());
}
// 得到文件的扩展名
function getFileExt(filename) {
var d = /\.[^\.]+$/.exec(filename);
var ext = new String(d);
var s = ext.toLowerCase();
return s;
}
//获取今天日期,星期几
function getTodayDate() {
var now = new Date();
var yy = now.getFullYear();
var mm = now.getMonth() + 1;
var dd = now.getDate();
var day = new Array();
day[0] = "星期日";
day[1] = "星期一";
day[2] = "星期二";
day[3] = "星期三";
day[4] = "星期四";
day[5] = "星期五";
day[6] = "星期六";
return (yy + '年' + mm + '月' + dd + '日 ' + day[now.getDay()]);
}
// 时间戳转成时间
function timeStamp2String(time) {
var datetime = new Date();
datetime.setTime(time);
var year = datetime.getFullYear();
var month = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
var hour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
var minute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
var second = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
}
// 判断是否为空
function isNull(val) {
if (val == undefined || val == null || val == "" || val == ''
|| val == "undefined" || val == "null" || val == "NULL") {
return true;
}
return false;
}
// 变量是否为数字
function isNumber(str) {
var regExp = /^\d+$/g;
// var regex = /^(\-|\+)?\d+(\.\d+)?$/;
return regExp.test(str);
}
// 验证是否为电子邮箱
function isEmail(source) {
var regex = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/;
if (source.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) {
return true;
} else {
return false;
}
}
// 生成指定位数的随机整数
function getRandomNum(count) {
var arr = new Array;
var reNum = "";
for (var i = 0; i < count; i++) {
arr[i] = parseInt(Math.random() * 10);
reNum += String(arr[i]);
}
return reNum;
}
// 最大最小随机数
function random(min, max) {
return Math.floor(min + Math.random() * (max - min));
}
// 手机号码验证
function phoneTest(cellPhone) {
var myreg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
if (!myreg.test(cellPhone)) {
return false;
} else {
return true;
}
}
// 金额数值验证是否纯数字
function amountTest(num) {
var myreg = /(^[1-9]{1}[0-9]*$)|(^[0-9]*\.[0-9]{1,2}$)/;
if (!myreg.test(num)) {
return false;
} else {
return true;
}
}
// 身份证验证
function validateIdentityCode(code) {
var city = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江 ",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北 ",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏 ",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外 "
};
var pass = true;
var msg = "验证成功";
//验证身份证格式(6个地区编码,8位出生日期,3位顺序号,1位校验位)
if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/.test(code)) {
pass = false;
msg = "身份证号格式错误";
} else if (!city[code.substr(0, 2)]) {
pass = false;
msg = "身份证号地址编码错误";
} else {
//18位身份证需要验证最后一位校验位
if (code.length == 18) {
code = code.split('');
//加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
//校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++) {
ai = code[i];
wi = factor[i];
sum += ai * wi;
}
if (parity[sum % 11] != code[17].toUpperCase()) {
pass = false;
msg = "身份证号校验位错误";
}
}
}
return {
flag: pass,
msg: msg
};
// return pass + ' ' + msg
}
//长数字省略显示
function numTimes(browse) {
if (browse < 1000) {
return browse;
}
var temp = browse;
if (browse >= 1000 && browse < 10000) {
var temp = parseInt(browse) / 1000
temp = temp.toFixed(2) + 'k'
} else if (browse >= 10000 && browse < 100000000) {
var temp = parseInt(browse) / 10000
temp = temp.toFixed(0) + 'w+'
} else if (browse >= 100000000) {
var temp = parseInt(browse) / 100000000
temp = temp.toFixed(0) + '亿+'
}
return temp;
}
//限制字数并加...(如果内容小于限制的个数也显示...)
function clampTxt(str, len) {
var strVal = str + "";
return strVal.slice(0, len) + "...";
}
//限制字数并加...(如果内容小于限制的个数不显示...)
function subTxt(str, len) {
var strVal = str + "";
if (str.length > len) {
return strVal.slice(0, len) + "...";
} else {
return strVal;
}
}
//获取取年月日 "2022年03月29日12:12:12"
function splitDate(dateStr) {
return dateStr.substring(0, 10)
}
//加法函数,用来得到精确的加法结果
function floatAdd(arg1, arg2) {
var r1, r2, m;
try {
r1 = arg1.toString().split(".")[1].length
} catch (e) {
r1 = 0
}
try {
r2 = arg2.toString().split(".")[1].length
} catch (e) {
r2 = 0
}
m = Math.pow(10, Math.max(r1, r2));
return (arg1 * m + arg2 * m) / m;
}
//减法函数,用来得到精确的加法结果
function floatSub(arg1, arg2) {
var r1, r2, m, n;
// try {
// r1 = arg1.toString().split(".")[1].length
// } catch (e) {
// r1 = 0
// }
// try {
// r2 = arg2.toString().split(".")[1].length
// } catch (e) {
// r2 = 0
// }
r1 = (arg1 + '').split(".")[1] ? (arg1 + '').split(".")[1].length : 0;
r2 = (arg2 + '').split(".")[1] ? (arg2 + '').split(".")[1].length : 0;
m = Math.pow(10, Math.max(r1, r2));
//动态控制精度长度
n = (r1 >= r2) ? r1 : r2;
var a = ((arg1 * m - arg2 * m) / m).toFixed(n);
return a
}
//乘法函数,用来得到精确的乘法结果
function accMul(arg1, arg2) {
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) { }
var a = Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
return a
}
//除法函数,用来得到精确的除法结果
function accDiv(arg1, arg2) {
var t1 = 0,
t2 = 0,
r1, r2;
try {
t1 = arg1.toString().split(".")[1].length
} catch (e) { }
try {
t2 = arg2.toString().split(".")[1].length
} catch (e) { }
r1 = Number(arg1.toString().replace(".", ""));
r2 = Number(arg2.toString().replace(".", ""));
return (r1 / r2) * Math.pow(10, t2 - t1);
}
// 判断元素是否在数组中
function arrContains(arr, obj) {
var i = arr.length;
while (i--) {
if (arr[i] == obj) {
return true;
}
}
return false;
}
// 计算两个日期相差
function dateDiff(date1, date2) {
let startTime = new Date(date1).getTime();
let endTime = new Date(date2).getTime();
let duration = (Math.abs(endTime - startTime) / 1000 / 60 / 60 / 24).toFixed(1);
console.log('duration', duration)
let data = duration.split('.');
let num1 = data[0];
let num2 = data[1];
if (num2 > 0 && num2 <= 5) {
num2 = 5;
duration = num1 + '.' + num2;
} else if (num2 == 0) {
duration = num1
} else {
num1++
duration = num1
}
duration = parseFloat(duration)
return duration
}
// export default {
// debounce,
// throttle,
// makeUUID,
// getFileExt,
// getTodayDate,
// timeStamp2String,
// isNull,
// isNumber,
// isEmail,
// getRandomNum,
// random,
// phoneTest,
// amountTest,
// validateIdentityCode,
// numTimes,
// clampTxt,
// subTxt,
// splitDate,
// floatAdd,
// floatSub,
// accMul,
// accDiv,
// arrContains,
// dateDiff,
// }
网友评论