lilishop-uniapp/utils/tools.js

144 lines
3.5 KiB
JavaScript

import Foundation from '@/utils/Foundation.js';
import {
md5
} from '@/utils/md5.js';
import storage from "@/utils/storage.js";
import store from "@/store/index.js";
// 重新整理一下config
const configHandle = (config) => {
// 'development', 'production'
if (process.env.NODE_ENV === 'development') {
const nonce = Foundation.randomString(6)
const timestamp = parseInt(new Date().getTime() / 1000)
const sign = md5( nonce + timestamp + storage.getAccessToken())
if (config.url.indexOf('?') === -1) {
config.url = `${config.url}?&nonce=${nonce}&timestamp=${timestamp}&sign=${sign}`
} else {
let params = urlParse(config.url);
console.info(params);
let url = config.url.split('?')[0];
params = { ...params,
nonce,
timestamp,
sign
};
let str = '';
for (var k in params) {
console.info(k, params[k])
str += '&' + k + '=' + params[k];
}
str = str.substr(1);
config.url = `${url}?${str}`;
}
config.header = {
...config.header,
uuid: storage.getUuid()
}
} else {
config.header = {
...config.header,
Authorization: storage.getAccessToken(),
uuid: storage.getUuid()
}
}
return config
}
/**
* 解析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)
}
export {
//configHandle,
getNetworkType,
throttle,
countTimeDown,
theNextDayTime
}