2025-04-10 14:21:16 +08:00
|
|
|
|
import BASE_URL from "@/api/env.js"; //引入接口共用地址
|
|
|
|
|
import RequestManager from "@/utils/requestManager.js";
|
|
|
|
|
import {
|
|
|
|
|
toast,
|
|
|
|
|
clearStorageSync,
|
|
|
|
|
getStorageSync,
|
|
|
|
|
useRouter,
|
|
|
|
|
} from "@/utils/utils.js";
|
|
|
|
|
import systemConfig from "@/config/config.js";
|
|
|
|
|
const manager = new RequestManager();
|
2025-04-07 09:30:11 +08:00
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
// 先写死调接口
|
|
|
|
|
// uni.setStorageSync('token', 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9zaWQiOiI1YmJiYTBhMi04YmJmLTcxMmUtMjMxMy1kYTc0N2E1MGUxYzEiLCJ1bmlxdWVfbmFtZSI6Iua1i-ivlSIsInJvbGUiOiJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL21vYmlsZXBob25lIjoiMTgxNzQwMTA1NjEiLCJncm91cHNpZCI6IjRiMmQ5NjYyLWE3NjgtMDhmMi1hMGM4LTc2MmI4Yzc2ZGEyYSIsIm5iZiI6MTc0NDE3OTY2NiwiZXhwIjoxNzQ0MTgzMjY2LCJpYXQiOjE3NDQxNzk2NjZ9.TTLt3vwefdrd8rx3zNN4rr0OI4yp14m781N3PC3lIHw')
|
2025-04-07 09:30:11 +08:00
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
const baseRequest = async (url, method, data = {}, loading = true) => {
|
|
|
|
|
let requestId = manager.generateId(method, url, data);
|
|
|
|
|
if (!requestId) {
|
|
|
|
|
console.log("重复请求");
|
|
|
|
|
}
|
|
|
|
|
if (!requestId) return false;
|
2025-04-07 09:30:11 +08:00
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
const header = {};
|
|
|
|
|
header.Authorization = getStorageSync(systemConfig.token) || "";
|
|
|
|
|
return new Promise((reslove, reject) => {
|
|
|
|
|
loading && uni.showLoading({ title: "loading" });
|
|
|
|
|
uni.request({
|
|
|
|
|
url: BASE_URL + url,
|
|
|
|
|
method: method || "GET",
|
|
|
|
|
header: header,
|
|
|
|
|
timeout: 10000,
|
|
|
|
|
data: data || {},
|
|
|
|
|
complete: () => {
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
manager.deleteById(requestId);
|
|
|
|
|
},
|
|
|
|
|
success: (successData) => {
|
|
|
|
|
//console.log(successData)
|
|
|
|
|
const res = successData.data;
|
|
|
|
|
if (successData.statusCode == 200) {
|
|
|
|
|
// 业务逻辑,自行修改,401是服务器上返回该token过期,过期后跳转到登陆页面
|
|
|
|
|
if (res.code > 400) {
|
|
|
|
|
clearStorageSync("token");
|
|
|
|
|
useRouter(systemConfig.login_page, "reLaunch");
|
|
|
|
|
} else {
|
|
|
|
|
reslove(res);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
2025-04-10 16:49:39 +08:00
|
|
|
|
if(successData.statusCode === 401){
|
|
|
|
|
console.log(successData,'successData--')
|
|
|
|
|
console.log('%c%s', 'color:red', '登录过期')
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: "提示",
|
|
|
|
|
content: "登陆过期,请重新登陆",
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: function (res) {
|
|
|
|
|
let u = navigator.userAgent;
|
|
|
|
|
let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; //android
|
|
|
|
|
// let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios
|
|
|
|
|
try {
|
|
|
|
|
if (isAndroid && AndroidJs) {
|
|
|
|
|
console.log("%c%s", "color:red", "安卓--调用返回方法");
|
|
|
|
|
const reqRow = {
|
|
|
|
|
name: "back-android",
|
|
|
|
|
data: "",
|
|
|
|
|
};
|
|
|
|
|
AndroidJs.func(JSON.stringify(reqRow)); // 给安卓传参
|
|
|
|
|
} else {
|
|
|
|
|
console.log("%c%s", "color:red", "苹果--调用返回方法");
|
|
|
|
|
const reqRow = {
|
|
|
|
|
name: "back-iphone",
|
|
|
|
|
data: "",
|
|
|
|
|
};
|
|
|
|
|
window.webkit.messageHandlers.func.postMessage(JSON.stringify(reqRow)); // 给ios 传参
|
|
|
|
|
}
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.log(e, "e-----判断安卓苹果类型出错");
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
reject(res);
|
|
|
|
|
return
|
|
|
|
|
}
|
2025-04-10 14:21:16 +08:00
|
|
|
|
console.log("网络连接失败,请稍后重试", url);
|
|
|
|
|
toast("网络连接失败,请稍后重试");
|
|
|
|
|
reject(res);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail: (msg) => {
|
|
|
|
|
console.log("请求:" + BASE_URL + url + ",发生错误:", err);
|
|
|
|
|
toast("网络连接失败,请稍后重试");
|
|
|
|
|
reject(msg);
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
2025-04-09 13:44:35 +08:00
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
// 添加文件上传的基础方法
|
|
|
|
|
const baseUpload = async (api, filePath, formData = {}, loading = true) => {
|
|
|
|
|
if (loading) {
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: "上传中...",
|
|
|
|
|
mask: true,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const header = {};
|
|
|
|
|
header.Authorization = getStorageSync(systemConfig.token) || "";
|
2025-04-09 13:44:35 +08:00
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
uni.uploadFile({
|
|
|
|
|
url: BASE_URL + api,
|
|
|
|
|
filePath: filePath,
|
|
|
|
|
name: "Files", // 文件对应的 key
|
|
|
|
|
formData: formData,
|
|
|
|
|
header: header,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (loading) uni.hideLoading();
|
2025-04-09 13:44:35 +08:00
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
// 处理响应数据
|
|
|
|
|
if (res.statusCode === 200) {
|
|
|
|
|
const data = JSON.parse(res.data);
|
|
|
|
|
if (data.succeed) {
|
|
|
|
|
resolve(data);
|
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: data.msg || "上传失败",
|
|
|
|
|
icon: "none",
|
|
|
|
|
});
|
|
|
|
|
reject(data);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
reject(res);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail: (err) => {
|
|
|
|
|
if (loading) uni.hideLoading();
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "上传失败",
|
|
|
|
|
icon: "none",
|
|
|
|
|
});
|
|
|
|
|
reject(err);
|
|
|
|
|
},
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
};
|
2025-04-07 09:30:11 +08:00
|
|
|
|
|
|
|
|
|
const request = {};
|
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
// 将 upload 方法添加到 request 对象中
|
|
|
|
|
request.upload = (api, filePath, formData, loading) =>
|
|
|
|
|
baseUpload(api, filePath, formData, loading);
|
|
|
|
|
|
|
|
|
|
["options", "get", "post", "put", "head", "delete", "trace", "connect"].forEach(
|
|
|
|
|
(method) => {
|
|
|
|
|
request[method] = (api, data, loading) =>
|
|
|
|
|
baseRequest(api, method, data, loading);
|
|
|
|
|
}
|
|
|
|
|
);
|
2025-04-07 09:30:11 +08:00
|
|
|
|
|
2025-04-10 14:21:16 +08:00
|
|
|
|
export default request;
|