You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
10 KiB
338 lines
10 KiB
7 months ago
|
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
|
||
|
}
|