Files
frontend-app/utils/request.js
T
2026-01-31 12:03:26 +08:00

133 lines
3.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {
getStorageFun,
TOKEN_NAME
} from "./auth.js";
import {
BASE_URL,
Authorization
} from "@/utils/config.js";
// utils/http.js (修改后的版本)
// const baseUrl = 'http://192.168.0.108:8087';
function request(options) {
const {
url,
method = "GET",
data = {},
headers = {},
isShowLoading = true,
} = options;
// const token = uni.getStorageSync(tokenKey); // 获取token, 根据实际情况调整获取方式
const token = getStorageFun(TOKEN_NAME); // 获取token, 根据实际情况调整获取方式
let defaultHeaders = {
Authorization: Authorization,
"HSM-AUTH": token ? token : "", // 如果存在token, 则添加到请求头中
"content-type": ["post", "POST"].includes(method) ?
"application/x-www-form-urlencoded" :
"application/json",
};
if (options.cha) {
defaultHeaders["content-type"] = "application/json";
}
if (token) {
defaultHeaders["HSM-AUTH"] = token;
}
return new Promise((resolve, reject) => {
if (isShowLoading) {
// 请求之前做一些事
uni.showToast({
title: "加载中...",
image:"https://static.tbmall.xin/static/loading.gif",
// image: "/static/common/loading.gif", // 本地图片路径
position: "middle", // 可选:top/middle/bottom
});
}
uni.request({
url: BASE_URL + url,
method,
data,
header: {
...defaultHeaders,
...headers, // 使用展开运算符合并默认头和自定义头
},
success: (res) => {
if (isShowLoading) {
// 请求之前做一些事
uni.hideToast();
}
let data = res.data;
if (data && typeof data === "string") {
data = JSON.parse(data);
}
if (data.status === 500) {
uni.showToast({
title: "系统异常,请稍后再试",
icon: "none", // 可选 success/loading/none
duration: 2000, // 持续时长,单位ms
mask: false, // 是否显示透明蒙层,防止触摸穿透
});
return;
}
// 601 微信登录没注册
if (data.bizcode === 100) {
resolve(data); // 成功时返回数据
} else if (data.bizcode === 201) {
if ([201, 200].includes(data.errcode)) {
uni.showToast({
title: "登录失效,请重新登录",
icon: "none", // 可选 success/loading/none
duration: 2000, // 持续时长,单位ms
mask: false, // 是否显示透明蒙层,防止触摸穿透
position: "middle", // 位置,可选 top/middle/bottom
});
} else {
uni.showToast({
title: data.msg,
icon: "none", // 可选 success/loading/none
duration: 2000, // 持续时长,单位ms
mask: false, // 是否显示透明蒙层,防止触摸穿透
position: "middle", // 位置,可选 top/middle/bottom
});
}
/**
* 205:已经有账号,返回登录页面
* 200 or 201:token失效,返回登录页面
*/
if ([201, 200, 205].includes(data.errcode)) {
setTimeout(() => {
uni.navigateTo({
url: "/pages/login_package/login/login",
});
}, 2000);
}
} else {
console.log("错误-1",data, url)
uni.showToast({
title: data.msg || "系统错误,请稍后再试",
icon: "none", // 可选 success/loading/none
duration: 2000, // 持续时长,单位ms
});
reject(data); // 其他错误情况返回错误信息
}
},
fail: (error) => {
console.log("错误-2", url)
if (isShowLoading) {
// 请求之前做一些事
uni.hideToast();
}
uni.showToast({
title: "服务器异常,稍后再试",
icon: "none", // 可选 success/loading/none
duration: 2000, // 持续时长,单位ms
});
// reject(error); // 请求失败时返回错误信息
},
});
});
}
export default request;