import API_BASE from '../util/api.js' /** * 请求封装 */ const request = (url = '', type = 'GET', param = {}, Loading, headertype) => { //是否启动加载 if (Loading) { uni.showLoading({ mask: true }); } //h5统一携带参数pf var params = Object.assign(param, { pf: 2 }); //请求es相关 if (url.indexOf("so12.ichunt.") != -1 || url.indexOf("/esapi/") != -1|| url.indexOf("/goods/detail") != -1) { params = Object.assign(param, { hkyefgyd: 1 }); } //请求类型判断 let header = { "Content-Type": "application/json; charset=utf-8" } if (headertype) { header = { 'Content-Type': 'application/x-www-form-urlencoded' } } return new Promise((resolve, reject) => { uni.request({ method: type, url: url, data: params, header: header, dataType: 'json', withCredentials: true, success: response => { if (Loading) uni.hideLoading(); if (response.statusCode === 200) { let result = response.data; resolve(result); } else { reject(response); } }, fail: (error) => { if (Loading) uni.hideLoading(); uni.showToast({ title: '网络出现问题', icon: 'error' }); reject(error); } }) }); } /** * 平台判断 */ const getPlatform = () => { let platform = uni.getSystemInfoSync().platform; if (platform == 'ios') { platform = 'ios'; } else if (platform == 'android') { platform = 'android'; } return platform; } /** * 设置cookit */ const setCookie = (name, value, expireDays) => { let date = new Date(); date.setTime(date.getTime() + (expireDays * 24 * 60 * 60 * 1000)); let expires = "expires=" + date.toGMTString(); document.cookie = name + "=" + value + "; " + expires; } /** *获取cookie */ const getCookie = (name) => { var strCookie = document.cookie; var arrCookie = strCookie.split("; "); for (var i = 0; i < arrCookie.length; i++) { var arr = arrCookie[i].split("="); if (name == arr[0]) { return arr[1]; } } return ''; } /** *删除cookie */ const delCookie = (name) => { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(name); if (cval != null) document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); } /** * 手机验证码倒计时函数 * @param {Object} options - 配置项 * @param {number} options.duration - 倒计时时间,单位为秒,默认为60s * @param {Function} options.onTick - 每秒执行的回调函数,参数为当前剩余时间 * @param {Function} options.onComplete - 完成倒计时后执行的回调函数 */ const startCountdown = (options) => { const duration = options.duration || 60; // 倒计时时间,默认为60秒 let remainingTime = duration; // 剩余时间 let timer = null; // 定时器 // 每秒执行一次的回调函数 const onTick = options.onTick || ((time) => {}); // 完成倒计时后执行的回调函数 const onComplete = options.onComplete || (() => {}); // 开始倒计时 function start() { timer = setInterval(() => { if (remainingTime <= 0) { clearInterval(timer); onComplete(); } else { remainingTime--; onTick(remainingTime); } }, 1000); } // 停止倒计时 function stop() { clearInterval(timer); onComplete(); } // 返回 start 和 stop 方法 return { start, stop, }; } module.exports = { request, getPlatform, setCookie, getCookie, delCookie, startCountdown }