143 lines
4.2 KiB
JavaScript
143 lines
4.2 KiB
JavaScript
export default async (params) => {
|
||
let url = params.url;
|
||
let method = params.method || "get";
|
||
let data = params.data || {};
|
||
let type = params.type || 1;
|
||
let toast = params.toast || true;
|
||
let token = uni.cache.get("token") || "";
|
||
const shopId = uni.cache.get("shopId") * 1;
|
||
const userInfo = uni.cache.get("userInfo") || {};
|
||
|
||
let header = {
|
||
version: uni.conf.version,
|
||
type: uni.getSystemInfoSync().platform,
|
||
// #ifdef APP-PLUS
|
||
platformType: "APP",
|
||
// #endif
|
||
// #ifdef H5
|
||
platformType: "H5",
|
||
// #endif
|
||
// #ifdef MP-WEIXIN
|
||
platformType: "WX",
|
||
// #endif
|
||
// #ifdef MP-ALIPAY
|
||
platformType: "ALI",
|
||
// #endif
|
||
token,
|
||
id: userInfo.id || "",
|
||
shopId: shopId || "",
|
||
userId: userInfo.id || "",
|
||
};
|
||
if (toast) {
|
||
uni.showLoading({
|
||
title: "加载中",
|
||
mask: true,
|
||
});
|
||
}
|
||
// #ifdef H5
|
||
uni.cache.set('token', 'b61c8b0f1c9d47ad924e33c48b496ce6')
|
||
uni.cache.set('userInfo',{"acQrcodeValidTime":"2025-11-17 17:57:16","alipayOpenId":"","birthDay":"2025-10-17","createTime":"2024-07-06 11:30:16","distributionAmount":0,"headImg":"https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132","id":"36434","idCard":"612401199810058031","isAc":0,"lastLoginTime":"2025-12-25 11:41:15","nickName":"微信用户","password":"","payPwd":"e10adc3949ba59abbe56e057f20f883e","phone":"18049104914","realName":"叶明飞","sex":1,"status":1,"updateTime":"2025-12-25 09:41:58","usePayPwd":0,"wechatAcOpenId":"1111","wechatAcQrcode":"","wechatOpenId":"or1l86yipGvwyfPhrKIAcQuSfAV8"})
|
||
// #endif
|
||
return new Promise((resolve, reject) => {
|
||
const timeoutDuration = params.timeout || 10000; // 可以通过 params 传入超时时间,默认 10 秒
|
||
uni.request({
|
||
url: uni.conf.baseUrl + url,
|
||
method: method,
|
||
header: header,
|
||
data: data,
|
||
timeout: timeoutDuration,
|
||
success(response) {
|
||
const res = response.data;
|
||
// 根据返回的状态码做出对应的操作
|
||
//获取成功
|
||
if (res.code == 200) {
|
||
uni.hideLoading();
|
||
uni.hideToast();
|
||
resolve(res.data ? res.data : true);
|
||
} else {
|
||
switch (res.code) {
|
||
case "501":
|
||
uni.cache.remove("shopId");
|
||
// uni.showToast({
|
||
// title: '',
|
||
// icon: "none",
|
||
// success: () => {
|
||
|
||
// }
|
||
// })
|
||
setTimeout(() => {
|
||
uni.reLaunch({
|
||
url: "/pages/index/index",
|
||
});
|
||
}, 1000);
|
||
break;
|
||
case 404:
|
||
uni.showToast({
|
||
title: "请求地址不存在...",
|
||
duration: 2000,
|
||
});
|
||
break;
|
||
default:
|
||
// 是否提示
|
||
if (toast) {
|
||
uni.showToast({
|
||
title: (() => {
|
||
// 1. 获取原始提示文本(兜底空字符串避免报错)
|
||
const originMsg = res.message || res.msg ||
|
||
res
|
||
.error || "";
|
||
// 2. 定义要匹配的前缀
|
||
const exceptionPrefix = "Exception:";
|
||
// 3. 判断是否包含目标前缀
|
||
if (originMsg.includes(exceptionPrefix)) {
|
||
// 截取前缀后的内容 → 去除首尾空格 → 限制最大20个字符
|
||
return originMsg
|
||
.slice(
|
||
originMsg.indexOf(
|
||
exceptionPrefix) +
|
||
exceptionPrefix.length
|
||
)
|
||
.trim()
|
||
.slice(0, 20);
|
||
} else {
|
||
// 不包含则按原逻辑截取前20个字符
|
||
return originMsg.slice(0, 20);
|
||
}
|
||
})(),
|
||
icon: "none",
|
||
success: () => {
|
||
// 修复:去掉多余的 res 参数(避免覆盖外层 res)
|
||
setTimeout(() => {
|
||
reject(false);
|
||
}, 1000);
|
||
},
|
||
});
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
},
|
||
fail(err) {
|
||
if (err.errMsg.indexOf("request:fail") !== -1) {
|
||
if (err.errMsg.indexOf("timeout") !== -1) {
|
||
if (toast) {
|
||
uni.showToast({
|
||
title: `请求超时,请稍后重试`,
|
||
icon: "error",
|
||
duration: 2000,
|
||
});
|
||
}
|
||
}
|
||
}
|
||
reject(err);
|
||
},
|
||
complete() {
|
||
// 不管成功还是失败都会执行
|
||
setTimeout((res) => {
|
||
uni.hideLoading();
|
||
uni.hideToast();
|
||
}, 10000);
|
||
},
|
||
});
|
||
}).catch((e) => {});
|
||
}; |