var tools = { // 秒数转换成时分秒 convertSecondsToHMS(seconds) { var hours = Math.floor(seconds / 3600); var minutes = Math.floor((seconds % 3600) / 60); var remainingSeconds = seconds % 60; // return hours + ":" + minutes + ":" + remainingSeconds; return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; }, // 计算(中英文混合)字符串长度 calStrLen(str) { var length = 0; for (var i = 0; i < str.length; i++) { // 将字符转换为 Unicode 编码 var charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) { length++; } else { length += 2; } } return length; }, // 集合对象去重 unique(arr, field) { var map = {}; var res = []; for (var i = 0; i < arr.length; i++) { if (!map[arr[i][field]]) { map[arr[i][field]] = 1; res.push(arr[i]); } } return res; }, // 正则取出html标签 repalceHtml(str) { var dd = str.replace(/<\/?.+?>/g, ""); var dds = dd.replace(/ /g, ""); //dds为得到后的内容 return dds; }, // 判断身份证号 isSfz(idcard) { var id = /^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|31)|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}([0-9]|x|X)$/ if (idcard === '') { uni.showToast({ title: '请输入身份证号', icon: 'none' }) } else if (!id.test(idcard)) { uni.showToast({ title: '身份证号格式不正确!', icon: 'none' }) return false } else { return false } }, // 判断是否是手机号 isPhone(val) { var patrn = /^(((1[3456789][0-9]{1})|(15[0-9]{1}))+\d{8})$/ if (!patrn.test(val) || val === '') { uni.showToast({ title: '手机号格式不正确', icon: 'none' }) return false } else { return true } }, // 判断邮箱 isEmail(email) { if (email.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) return true; else return false; }, //获取随机数 getSuiji() { var Range = Max - Min; var Rand = Math.random(); return (Min + Math.round(Rand * Range)); }, //计算多长时间前 getDateDiff(dateTimeStamp) { var minute = 1000 * 60; var hour = minute * 60; var day = hour * 24; var halfamonth = day * 15; var month = day * 30; var year = day * 365; var now = new Date().getTime(); var diffValue = now - dateTimeStamp; if (diffValue < 0) { return; } var yearC = diffValue / year; var monthC = diffValue / month; var weekC = diffValue / (7 * day); var dayC = diffValue / day; var hourC = diffValue / hour; var minC = diffValue / minute; if (yearC >= 1) { result = "" + parseInt(yearC) + "年前"; } if (monthC >= 1) { result = "" + parseInt(monthC) + "月前"; } else if (weekC >= 1) { result = "" + parseInt(weekC) + "周前"; } else if (dayC >= 1) { result = "" + parseInt(dayC) + "天前"; } else if (hourC >= 1) { result = "" + parseInt(hourC) + "小时前"; } else if (minC >= 1) { result = "" + parseInt(minC) + "分钟前"; } else result = "刚刚"; return result; }, // 时间戳转时间 timestampToTime(timestamp, i) { var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000 // console.log(date, timestamp) var Y = date.getFullYear() + '-'; var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' '; var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); if (i == 1) { return Y + M + D; } return Y + M + D + h + m + s; }, // 是否是汉字 isHanzi(str) { let reg = /\p{Unified_Ideograph}/ug; return reg.test(str); }, // 是否是字母数字 isStringAndNumber(str) { let regNumber = new RegExp(/^[0-9A-Za-z]+$/); return regNumber.test(str) }, // var arr3 = [30,10,111,35,1899,50,45]; // 集合排序 元素数字 listSort(list) { arr3.sort(function(a, b) { return a - b; }) }, // var arr5 = [{id:10},{id:5},{id:6},{id:9},{id:2},{id:3}]; // 元素 对象 listObjectSort(arr) { arr.sort(function(a, b) { return a.id - b.id }) return arr; }, /* * 忽略大小写判断字符串是否相同 * @param str1 * @param str2 * @returns {Boolean} */ isEqualsIgnorecase: function(str1, str2) { if (str1.toUpperCase() == str2.toUpperCase()) { return true; } else { return false; } }, /** * 判断是否是数字 * @param value * @returns {Boolean} */ isNum: function(value) { if (value != null && value.length > 0 && isNaN(value) == false) { return true; } else { return false; } }, /** * 判断是否是中文 * @param str * @returns {Boolean} */ isChine: function(str) { var reg = /^([u4E00-u9FA5]|[uFE30-uFFA0])*$/; if (reg.test(str)) { return false; } return true; }, /*验证是否为图片*/ tmCheckImage: function(fileName) { return /(gif|jpg|jpeg|png|GIF|JPG|PNG)$/ig.test(fileName); }, /*验证是否为视频*/ tmCheckVideo: function(fileName) { return /(mp4|mp3|flv|wav)$/ig.test(fileName); }, /** * 去除字符串两边的空格 * @param str * @returns {number|Number} * 调用方法:var str = utils.trim("abcd") */ trim: function(str) { String.prototype.trim = function() { return str.replace(/(^\s*)|(\s*$)/g, ""); } }, // 判断密码是否符合 至少6位,包括大小写字母、数字、特殊字符 isPassword(val) { var reg = /^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{8,16}$/; if (val === '') { uni.showToast({ title: '请输入密码', icon: 'none' }) } else if (!reg.test(val)) { uni.showToast({ title: '至少6位,包括大小写字母、数字、特殊字符', icon: 'none' }) return false } else { return true } }, // 电话匿名 noPassByMobile(str) { if (null != str && str != undefined) { var pat = /(\d{3})\d*(\d{4})/; return str.replace(pat, '$1****$2'); } else { return ""; } }, // 获取两点间的距离 //进行经纬度转换为距离的计算 Rad(d) { return d * Math.PI / 180.0; //经纬度转换成三角函数中度分表形式。 }, /* 计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度 默认单位km */ getMapDistance(lat1, lat2, lng1, 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))); console.log(lat1, lng1, lat2, lng2); console.log(distance); return Math.round(distance) / 1000; }, // 预览图片 yulanImg(item) { let arr = [item] uni.previewImage({ urls: arr, }); }, } export default tools;