2025-03-14 16:27:50 +08:00
|
|
|
|
/**
|
|
|
|
|
* 解析url参数
|
|
|
|
|
* @example ?id=12345&a=b
|
|
|
|
|
* @return Object {id:12345,a:b}
|
|
|
|
|
*/
|
|
|
|
|
function urlParse(url) {
|
|
|
|
|
let obj = {};
|
|
|
|
|
let reg = /[?&][^?&]+=[^?&]+/g;
|
|
|
|
|
let arr = url.match(reg);
|
|
|
|
|
if (arr) {
|
|
|
|
|
arr.forEach((item) => {
|
|
|
|
|
let tempArr = item.substring(1).split("=");
|
|
|
|
|
let key = decodeURIComponent(tempArr[0]);
|
|
|
|
|
let val = decodeURIComponent(tempArr.splice(1).join("="));
|
|
|
|
|
obj[key] = val;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
return obj;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const getNetworkType = () => {
|
|
|
|
|
uni.getNetworkType({
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.networkType === "none") {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "网络好像有点问题,请检查后重试!",
|
|
|
|
|
duration: 2000,
|
|
|
|
|
icon: "none",
|
|
|
|
|
});
|
|
|
|
|
let pages = getCurrentPages();
|
|
|
|
|
if (pages.length) {
|
|
|
|
|
let route = pages[pages.length - 1].route;
|
|
|
|
|
if (route !== "pages/empty/empty") {
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: `/pages/empty/empty?type=wifi`,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: `/pages/empty/empty?type=wifi`,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const throttle = (fn, that, gapTime) => {
|
|
|
|
|
// export function throttle(fn, gapTime) {
|
|
|
|
|
if (gapTime == null || gapTime == undefined) {
|
|
|
|
|
gapTime = 1800;
|
|
|
|
|
}
|
|
|
|
|
let _lastTime = that.lastTime;
|
|
|
|
|
let _nowTime = +new Date();
|
|
|
|
|
if (_nowTime - _lastTime > gapTime || !_lastTime) {
|
|
|
|
|
fn.apply(that, arguments); //将this和参数传给原函数
|
|
|
|
|
that.lastTime = _nowTime;
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 计算传秒数的倒计时【天、时、分、秒】
|
|
|
|
|
* @param seconds
|
|
|
|
|
* @returns {{day : *, hours : *, minutes : *, seconds : *}}
|
|
|
|
|
*/
|
|
|
|
|
const countTimeDown = (seconds) => {
|
|
|
|
|
const leftTime = (time) => {
|
|
|
|
|
if (time < 10) time = "0" + time;
|
|
|
|
|
return time + "";
|
|
|
|
|
};
|
|
|
|
|
return {
|
|
|
|
|
day: leftTime(parseInt(seconds / 60 / 60 / 24, 10)),
|
|
|
|
|
hours: leftTime(parseInt((seconds / 60 / 60) % 24, 10)),
|
|
|
|
|
minutes: leftTime(parseInt((seconds / 60) % 60, 10)),
|
|
|
|
|
seconds: leftTime(parseInt(seconds % 60, 10)),
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 计算当前时间到第二天0点的倒计时[秒]
|
|
|
|
|
* @returns {number}
|
|
|
|
|
*/
|
|
|
|
|
const theNextDayTime = () => {
|
|
|
|
|
const nowDate = new Date();
|
|
|
|
|
const time =
|
|
|
|
|
new Date(
|
|
|
|
|
nowDate.getFullYear(),
|
|
|
|
|
nowDate.getMonth(),
|
|
|
|
|
nowDate.getDate() + 1,
|
|
|
|
|
0,
|
|
|
|
|
0,
|
|
|
|
|
0
|
|
|
|
|
).getTime() - nowDate.getTime();
|
|
|
|
|
return parseInt(time / 1000);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const graceNumber = (number) => {
|
2025-04-21 17:35:54 +08:00
|
|
|
|
// if (number == 0) {
|
|
|
|
|
// return "0";
|
|
|
|
|
// } else if (number > 999 && number <= 9999) {
|
|
|
|
|
// return (number / 1000).toFixed(1) + "k";
|
|
|
|
|
// } else if (number > 9999 && number <= 99999) {
|
|
|
|
|
// return (number / 10000).toFixed(1) + "w";
|
|
|
|
|
// } else if (number > 99999) {
|
|
|
|
|
// return "10w+";
|
|
|
|
|
// }
|
|
|
|
|
// return number;
|
2025-03-14 16:27:50 +08:00
|
|
|
|
if (number == 0) {
|
|
|
|
|
return "0";
|
|
|
|
|
}
|
2025-04-21 17:35:54 +08:00
|
|
|
|
if (number < 1000) {
|
|
|
|
|
return number.toString();
|
|
|
|
|
} else if (number < 10000) {
|
|
|
|
|
return (number / 1000).toFixed(1).replace(/\.0$/, '') + "k";
|
|
|
|
|
} else if (number < 100000000) {
|
|
|
|
|
return (number / 10000).toFixed(1).replace(/\.0$/, '') + "w";
|
|
|
|
|
} else {
|
|
|
|
|
return (number / 100000000).toFixed(1).replace(/\.0$/, '') + "亿+";
|
|
|
|
|
}
|
2025-03-14 16:27:50 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 时间格式化时间为: 多少分钟前、多少天前
|
|
|
|
|
// time 2020-09-10 20:20:20
|
2025-05-04 03:37:34 +08:00
|
|
|
|
const getDateBeforeNow = (stringTime = '') => {
|
|
|
|
|
const minute = 1000 * 60;
|
|
|
|
|
const hour = minute * 60;
|
|
|
|
|
const day = hour * 24;
|
|
|
|
|
const week = day * 7;
|
|
|
|
|
const month = day * 30;
|
|
|
|
|
|
|
|
|
|
// 获取当前时间戳
|
|
|
|
|
const currentTime = new Date().getTime();
|
|
|
|
|
|
|
|
|
|
// 如果没有传入时间参数,使用当前时间
|
|
|
|
|
const time = stringTime ? new Date(stringTime.replace(/-/g, "/")).getTime() : currentTime;
|
|
|
|
|
|
|
|
|
|
const difference = currentTime - time; // 计算时间差
|
|
|
|
|
|
2025-03-14 16:27:50 +08:00
|
|
|
|
let result = null;
|
2025-05-04 03:37:34 +08:00
|
|
|
|
|
|
|
|
|
// 如果时间差小于0(未来的时间),返回原始时间
|
|
|
|
|
if (difference < 0) {
|
2025-03-14 16:27:50 +08:00
|
|
|
|
result = stringTime;
|
2025-05-04 03:37:34 +08:00
|
|
|
|
} else if (difference >= month) {
|
|
|
|
|
result = Math.floor(difference / month) + "月前";
|
|
|
|
|
} else if (difference >= week) {
|
|
|
|
|
result = Math.floor(difference / week) + "周前";
|
|
|
|
|
} else if (difference >= day) {
|
|
|
|
|
result = Math.floor(difference / day) + "天前";
|
|
|
|
|
} else if (difference >= hour) {
|
|
|
|
|
result = Math.floor(difference / hour) + "小时前";
|
|
|
|
|
} else if (difference >= minute) {
|
|
|
|
|
result = Math.floor(difference / minute) + "分钟前";
|
2025-03-14 16:27:50 +08:00
|
|
|
|
} else {
|
|
|
|
|
result = "刚刚";
|
|
|
|
|
}
|
2025-05-04 03:37:34 +08:00
|
|
|
|
|
2025-03-14 16:27:50 +08:00
|
|
|
|
return result;
|
2025-05-04 03:37:34 +08:00
|
|
|
|
// let minute = 1000 * 60;
|
|
|
|
|
// let hour = minute * 60;
|
|
|
|
|
// let day = hour * 24;
|
|
|
|
|
// let week = day * 7;
|
|
|
|
|
// let month = day * 30;
|
|
|
|
|
// let time1 = new Date().getTime(); //当前的时间戳
|
|
|
|
|
// if (stringTime == '') {
|
|
|
|
|
// stringTime = time1
|
|
|
|
|
// } else {
|
|
|
|
|
// stringTime = new Date(stringTime.replace(/-/g, "/"));
|
|
|
|
|
// }
|
|
|
|
|
// let time2 = Date.parse(new Date(stringTime)); //指定时间的时间戳
|
|
|
|
|
// let time = time1 - time2;
|
|
|
|
|
// let result = null;
|
|
|
|
|
// if (time < 0) {
|
|
|
|
|
// result = stringTime;
|
|
|
|
|
// } else if (time / month >= 1) {
|
|
|
|
|
// result = parseInt(time / month) + "月前";
|
|
|
|
|
// } else if (time / week >= 1) {
|
|
|
|
|
// result = parseInt(time / week) + "周前";
|
|
|
|
|
// } else if (time / day >= 1) {
|
|
|
|
|
// result = parseInt(time / day) + "天前";
|
|
|
|
|
// } else if (time / hour >= 1) {
|
|
|
|
|
// result = parseInt(time / hour) + "小时前";
|
|
|
|
|
// } else if (time / minute >= 1) {
|
|
|
|
|
// result = parseInt(time / minute) + "分钟前";
|
|
|
|
|
// } else {
|
|
|
|
|
// result = "刚刚";
|
|
|
|
|
// }
|
|
|
|
|
// return result;
|
2025-03-14 16:27:50 +08:00
|
|
|
|
}
|
|
|
|
|
// 判断是否为空
|
|
|
|
|
const isStrEmpty = (str) => {
|
|
|
|
|
if (
|
|
|
|
|
str == null ||
|
|
|
|
|
str == undefined ||
|
|
|
|
|
(typeof str == "object" && str == {}) ||
|
|
|
|
|
(typeof str == "string" && str.trim() == "")
|
|
|
|
|
) {
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-28 15:46:11 +08:00
|
|
|
|
// 获得星座
|
|
|
|
|
const getAstro = (m, d) => {
|
|
|
|
|
return "魔羯水瓶双鱼白羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯".substr(
|
|
|
|
|
m * 2 - (d < "102223444433".charAt(m - 1) - -19) * 2,
|
|
|
|
|
2
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获得生肖
|
|
|
|
|
const getAnimal = (year) => {
|
|
|
|
|
year = year % 12;
|
|
|
|
|
let animal = "";
|
|
|
|
|
switch (year) {
|
|
|
|
|
case 1:
|
|
|
|
|
animal = "鸡";
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
animal = "狗";
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
animal = "猪";
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
animal = "鼠";
|
|
|
|
|
break;
|
|
|
|
|
case 5:
|
|
|
|
|
animal = "牛";
|
|
|
|
|
break;
|
|
|
|
|
case 6:
|
|
|
|
|
animal = "虎";
|
|
|
|
|
break;
|
|
|
|
|
case 7:
|
|
|
|
|
animal = "兔";
|
|
|
|
|
break;
|
|
|
|
|
case 8:
|
|
|
|
|
animal = "龙";
|
|
|
|
|
break;
|
|
|
|
|
case 9:
|
|
|
|
|
animal = "蛇";
|
|
|
|
|
break;
|
|
|
|
|
case 10:
|
|
|
|
|
animal = "马";
|
|
|
|
|
break;
|
|
|
|
|
case 11:
|
|
|
|
|
animal = "羊";
|
|
|
|
|
break;
|
|
|
|
|
case 0:
|
|
|
|
|
animal = "猴";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
return animal;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 日期格式化
|
|
|
|
|
const dateFormat = (fmt, date) => {
|
|
|
|
|
let ret;
|
|
|
|
|
const opt = {
|
|
|
|
|
"Y+": date.getFullYear().toString(), // 年
|
2025-04-25 18:10:54 +08:00
|
|
|
|
"M+": (date.getMonth() + 1).toString(), // 月
|
|
|
|
|
"D+": date.getDate().toString(), // 日
|
2025-03-28 15:46:11 +08:00
|
|
|
|
"H+": date.getHours().toString(), // 时
|
2025-04-25 18:10:54 +08:00
|
|
|
|
"m+": date.getMinutes().toString(), // 分
|
|
|
|
|
"s+": date.getSeconds().toString(), // 秒
|
2025-03-28 15:46:11 +08:00
|
|
|
|
};
|
|
|
|
|
for (let k in opt) {
|
|
|
|
|
ret = new RegExp("(" + k + ")").exec(fmt);
|
|
|
|
|
if (ret) {
|
|
|
|
|
fmt = fmt.replace(
|
|
|
|
|
ret[1],
|
|
|
|
|
ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return fmt;
|
|
|
|
|
}
|
|
|
|
|
|
2025-05-07 17:45:16 +08:00
|
|
|
|
const clickFeedBack = (fn) => {
|
|
|
|
|
// #ifdef APP-PLUS
|
|
|
|
|
if (uni.getSystemInfoSync().platform == 'ios') {
|
|
|
|
|
let UIImpactFeedbackGenerator = plus.ios.importClass('UIImpactFeedbackGenerator');
|
|
|
|
|
let impact = new UIImpactFeedbackGenerator();
|
|
|
|
|
impact.prepare();
|
|
|
|
|
impact.init(2);
|
|
|
|
|
impact.impactOccurred();
|
|
|
|
|
}
|
|
|
|
|
if (uni.getSystemInfoSync().platform == 'android') {
|
|
|
|
|
// vibrateShort
|
2025-05-12 14:51:35 +08:00
|
|
|
|
// uni.vibrateLong({
|
|
|
|
|
uni.vibrateShort({
|
2025-05-07 17:45:16 +08:00
|
|
|
|
success: () => {
|
|
|
|
|
console.log('点击震动');
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
}
|
|
|
|
|
|
2025-03-14 16:27:50 +08:00
|
|
|
|
|
|
|
|
|
export {
|
|
|
|
|
getNetworkType,
|
|
|
|
|
throttle,
|
|
|
|
|
countTimeDown,
|
|
|
|
|
theNextDayTime,
|
|
|
|
|
graceNumber,
|
2025-03-28 15:46:11 +08:00
|
|
|
|
getDateBeforeNow,
|
|
|
|
|
isStrEmpty,
|
|
|
|
|
getAstro,
|
2025-04-21 17:35:54 +08:00
|
|
|
|
getAnimal,
|
2025-05-07 17:45:16 +08:00
|
|
|
|
dateFormat,
|
|
|
|
|
clickFeedBack
|
2025-03-14 16:27:50 +08:00
|
|
|
|
};
|