import $reQuest from '@/common/http/' //请求函数 import $constant from '@/utils/constant' //常量 /* 计算星期几*/ function format(format, date) { var Week = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; var o = { "M+": date.getMonth() + 1, //month "d+": date.getDate(), //day "h+": date.getHours(), //hour "m+": date.getMinutes(), //minute "s+": date.getSeconds(), //second "q+": Math.floor((date.getMonth() + 3) / 3), //week 'w': Week[date.getDay()], //quarter "S": date.getMilliseconds() //millisecond }; if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } } return format; } /* 计算两日期相差的日期年月日等 */ function dateDiff(interval, objDate2, date) { var d = date, i = {}, t = d.getTime(), t2 = objDate2.getTime(); i['y'] = objDate2.getFullYear() - d.getFullYear(); i['q'] = i['y'] * 4 + Math.floor(objDate2.getMonth() / 4) - Math.floor(d.getMonth() / 4); i['m'] = i['y'] * 12 + objDate2.getMonth() - d.getMonth(); i['ms'] = objDate2.getTime() - d.getTime(); i['w'] = Math.floor((t2 + 345600000) / (604800000)) - Math.floor((t + 345600000) / (604800000)); i['d'] = Math.floor(t2 / 86400000) - Math.floor(t / 86400000); i['h'] = Math.floor(t2 / 3600000) - Math.floor(t / 3600000); i['n'] = Math.floor(t2 / 60000) - Math.floor(t / 60000); i['s'] = Math.floor(t2 / 1000) - Math.floor(t / 1000); return i[interval]; } /* 得到日期年月日等加数字后的日期 */ function dateAdd(interval, number, date) { number = parseInt(number); var dtTmp = date; switch (interval) { case 's': return new Date(Date.parse(dtTmp) + (1000 * number)); case 'n': return new Date(Date.parse(dtTmp) + (60000 * number)); case 'h': return new Date(Date.parse(dtTmp) + (3600000 * number)); case 'd': return new Date(Date.parse(dtTmp) + (86400000 * number)); case 'w': return new Date(Date.parse(dtTmp) + ((86400000 * 7) * number)); case 'q': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); case 'm': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); case 'y': return new Date((dtTmp.getFullYear() + number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds()); } } //字符串转换成日期 function strToDate(str, formatStr) { if (!str) { return false; } var date = new Date(str.replace(/-/g, "/").replace(".0", "")); if (formatStr) { return format(formatStr, date); } return date; } /*特殊string时间格式化*/ function strDateFormat(str, formatStr) { if (!str) return ""; var date = new Date(parseInt(str.substring(6, str.toString().length - 2))); if (formatStr) { return format(formatStr, date); } return date; } function showToast(text, time) { let duration = 2500; let title = "请填写提法语"; if (time) { duration = time; } if (text) { title = text; } uni.showToast({ title: title, icon: 'none', duration: duration, mask: true }) } /** 手机号码验证*/ function isPhone(mobile) { if (/^[0-9]{11}$/.test(mobile) || /^[0-9]{10}$/.test(mobile)) { return true; } return false; } /** 退出登录*/ function loginOut() { uni.clearStorageSync(); uni.switchTab({ url: "/pages/tab/index/index", success() { showToast("退登成功"); } }) } /** 保留两位数*/ function toFixedFun(num) { if (!num) { return ""; } return num.toFixed(2); } function isJson(obj) { let isjson = typeof(obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && ! obj.length; return isjson; } function contains(str, arr) { for (var i = 0; i < arr; i++) { if (str.indexOf(arr[i]) > -1) { return true; } } return false; } function isEmail(email) { var reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/; if (reg.test(email)) { return true; } else { return false; } } function callPhone(num) { if(!num){ return; } uni.makePhoneCall({ phoneNumber: num }); } function isLogin() { let loginInfo = uni.getStorageSync($constant.LOGIN_INFO); if (loginInfo && loginInfo.hasPhone) { return true; } return false; } function getLoginInfo() { let loginInfo = uni.getStorageSync($constant.LOGIN_INFO); return loginInfo; } function setUserInfo(data, callback) { let loginInfo = uni.getStorageSync($constant.LOGIN_INFO); if (loginInfo && loginInfo.openid) { callback && callback(loginInfo); return; } if (data.detail.errMsg == "getUserInfo:ok") { let userInfo = data.detail.userInfo; uni.login({ success(res) { if (res.code) { var obj = { js_code: res.code, mod: "getLogin", nickName: userInfo.nickName, imgurl: userInfo.avatarUrl, gender: userInfo.gender, province: userInfo.province, city: userInfo.city, country: userInfo.country } $reQuest.doPost("Wx.aspx", obj).then(res => { if (res.data.success) { let body = res.data.data; body.userinfo.hasPhone = body.hasphone == 1 ? true : false; uni.setStorageSync($constant.LOGIN_INFO, body.userinfo); callback && callback(body.userinfo); } else { showToast(res.data.message); } }) .catch(err => { console.log('request fail', err); }); } else { console.log('登录失败!' + res.errMsg) } } }) } } function filterGroup(arrays, subGroupLength) { let index = 0; let newArrays = []; while (index < arrays.length) { newArrays.push(arrays.slice(index, index += subGroupLength)); } return newArrays; } function isCardNo(num) { num = num.toUpperCase(); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { return false; } //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 //下面分别分析出生日期和校验位 var len, re; len = num.length; if (len == 15) { re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrSplit = num.match(re); //检查生日日期是否正确 var dtmBirth = new Date('19' + arrSplit[2] + '/' + arrSplit[3] + '/' + arrSplit[4]); var bCorrectDay; bCorrectDay = (dtmBirth.getYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && ( dtmBirth.getDate() == Number(arrSplit[4])); if (!bCorrectDay) { return false; } else { //将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; num = num.substr(0, 6) + '19' + num.substr(6, num.length - 6); for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } num += arrCh[nTemp % 11]; return true; } } if (len == 18) { re = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/); var arrSplit = num.match(re); //检查生日日期是否正确 var dtmBirth = new Date(arrSplit[2] + "/" + arrSplit[3] + "/" + arrSplit[4]); var bCorrectDay; bCorrectDay = (dtmBirth.getFullYear() == Number(arrSplit[2])) && ((dtmBirth.getMonth() + 1) == Number(arrSplit[3])) && (dtmBirth.getDate() == Number(arrSplit[4])); if (!bCorrectDay) { return false; } else { //检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 var valnum; var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'); var nTemp = 0, i; for (i = 0; i < 17; i++) { nTemp += num.substr(i, 1) * arrInt[i]; } valnum = arrCh[nTemp % 11]; if (valnum != num.substr(17, 1)) { return false; } return true; } } return false; } module.exports = { showToast, format, dateDiff, dateAdd, strToDate, strDateFormat, isPhone, loginOut, toFixedFun, isJson, contains, isEmail, callPhone, isLogin, getLoginInfo, setUserInfo, filterGroup, isCardNo }