This commit is contained in:
2025-11-24 16:01:45 +08:00
parent aa160793e7
commit 46c975591b
45 changed files with 1311 additions and 559 deletions

View File

@@ -13,6 +13,8 @@ export function POST(url, data) {
}
export function POST_TOKEN(url, data) {
// 从本地存储获取token
var token = uni.getStorageSync("APP_TOKEN") || "";
return SIMPLE_TOKEN(url, data, token, 'POST');
}
@@ -27,21 +29,30 @@ export function PUT(url, data) {
let requestTime = 0;
export async function SIMPLE(url, data, method) {
// 防止首次访问没有token
if(requestTime == 0) {
token = await loginSystem();
if(token.data) {
// 如果有code表示没有拿到token
SIMPLE(url, data, method)
return;
// 声明token变量
let token = uni.getStorageSync("APP_TOKEN") || "";
// 在开发环境下跳过自动登录,避免网络请求失败
// 微信小程序无法访问localhost需要使用实际IP或域名
if(requestTime == 0 && process.env.NODE_ENV !== 'development') {
try {
token = await loginSystem();
if(typeof token === 'string') {
requestTime += 1;
}
} catch (error) {
console.log("登录系统失败:", error);
}
} else if(requestTime == 0) {
requestTime += 1;
} else {
var token = uni.getStorageSync("APP_TOKEN");
}
const fullUrl = `${BASE_URL}${url}`;
console.log(`[网络请求] ${method} ${fullUrl}`, data);
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_URL}${url}`,
url: fullUrl,
method: method,
header: {
"Content-Type": "application/json;charset=utf-8",
@@ -50,13 +61,39 @@ export async function SIMPLE(url, data, method) {
dataType: 'json',
data: data,
success: res => {
if(res.data.code == '200' || res.data.statusCode == '200') {
resolve(res.data)
console.log(`[网络响应] ${method} ${fullUrl}`, res.data);
// 首先检查HTTP状态码
if(res.statusCode === 200) {
// 无论返回内容是什么格式,都视为成功
resolve(res)
} else {
reject(res)
}
},
fail: err => {
console.error(`[网络错误] ${method} ${fullUrl}`, err);
// 提供更友好的错误信息
let errorMsg = "网络请求失败";
if(err.errMsg && err.errMsg.includes('url not in domain list')) {
errorMsg = "请求地址未在小程序管理后台配置,请联系管理员";
// 在开发环境下显示更详细的解决方案
if (process.env.NODE_ENV === 'development') {
console.error('\n=== 开发环境网络请求错误解决方案 ===');
console.error('错误原因请求的URL不在小程序合法域名列表中');
console.error('当前请求URL', fullUrl);
console.error('解决方案:');
console.error('1. 在微信开发者工具中,点击右上角的"详情"');
console.error('2. 选择"本地设置"');
console.error('3. 勾选"不校验合法域名、web-view业务域名、TLS 版本以及 HTTPS 证书"');
console.error('4. 重新编译小程序');
console.error('==================================\n');
}
} else if(err.errMsg && err.errMsg.includes('connect fail')) {
errorMsg = "网络连接失败,请检查网络设置";
} else if(err.errMsg && err.errMsg.includes('localhost')) {
errorMsg = "无法连接到本地服务器请检查BASE_URL配置";
}
err.userFriendlyMsg = errorMsg;
reject(err)
}
})
@@ -64,9 +101,12 @@ export async function SIMPLE(url, data, method) {
}
export function SIMPLE_TOKEN(url, data, token, method) {
const fullUrl = `${BASE_URL}${url}`;
console.log(`[网络请求] ${method} ${fullUrl}`, data);
return new Promise((resolve, reject) => {
uni.request({
url: `${BASE_URL}${url}`,
url: fullUrl,
method: method,
header: {
"Content-Type": "application/json;charset=utf-8",
@@ -75,13 +115,25 @@ export function SIMPLE_TOKEN(url, data, token, method) {
dataType: 'json',
data: data,
success: res => {
if(res.data.code == '200' || res.data.statusCode == '200') {
resolve(res.data)
console.log(`[网络响应] ${method} ${fullUrl}`, res.data);
// 首先检查HTTP状态码
if(res.statusCode === 200) {
// 无论返回内容是什么格式,都视为成功
resolve(res)
} else {
reject(res)
}
},
fail: err => {
console.error(`[网络错误] ${method} ${fullUrl}`, err);
// 提供更友好的错误信息
let errorMsg = "网络请求失败";
if(err.errMsg && err.errMsg.includes('url not in domain list')) {
errorMsg = "请求地址未在小程序管理后台配置,请联系管理员";
} else if(err.errMsg && err.errMsg.includes('connect fail')) {
errorMsg = "网络连接失败,请检查网络设置";
}
err.userFriendlyMsg = errorMsg;
reject(err)
}
})