You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

133 lines
4.1 KiB

// api.js
// 导入qs库
import qs from "qs";
// 基础URL,可以根据环境来设置
// uEnvDev
const accountInfo = wx.getAccountInfoSync();
// env类型 develop:开发版、trial:体验版、release:正式版
export const env = accountInfo.miniProgram.envVersion;
if (!env) {
console.error("获取运行环境失败!");
}
const baseApi = {
// 开发版
develop: "http://110.40.156.216:30005/api",
// 体验版
trial: "http://110.40.156.216:30005/api",
// 正式版
release: "http://110.40.156.216:30005/api",
};
console.log(env, "env");
// request请求baseURL
const BASE_URL = baseApi[env] || "http://110.40.156.216:30005/api";
function request(url, method, data = {}) {
const loginRes = uni.getStorageSync("loginRes") || {};
const UTCOffset = new Date().getTimezoneOffset();
return new Promise((resolve, reject) => {
uni.request({
url: BASE_URL + url, // 完整的URL
method: method,
data: data,
header: {
AccessToken: loginRes.accessToken || "-1", // 请求头,可根据需要调整
UserId: loginRes.appUserId || "-1", // 请求头,可根据需要调整
LanguageType: 0,
},
success: (res) => {
if (res.statusCode === 200) {
console.log(res);
if ((res.data.code === 200) | (res.data.code === 0)) {
resolve(res.data);
} else {
reject(res.data);
}
} else {
reject(res);
}
},
fail: (err) => {
uni.showToast({
title: "请求错误", // 提示的文本内容
icon: "none", // 提示的图标,可选值:'success' | 'loading' | 'none'
duration: 2000, // 提示框的显示时间,单位为毫秒,默认1500ms
});
reject(err); // 请求失败
},
});
});
}
// 使用uni.addInterceptor拦截请求,处理GET请求中的数组参数
uni.addInterceptor("request", {
invoke(args) {
// request 触发前拼接 url
const { data, method } = args;
if (method === "GET") {
// 如果是get请求,且params是数组类型如arr=[1,2],则转换成arr=1&arr=2
const newData = qs.stringify(data, {
arrayFormat: "repeat",
});
delete args.data;
args.url = `${args.url}?${newData}`;
}
},
success(args) {},
fail(err) {},
complete(res) {},
});
// GET 请求
export function get(url, params = {}) {
return request(url, "GET", params);
}
// POST 请求
export function post(url, data = {}) {
return request(url, "POST", data);
}
export function uploadFile(url, filePath = "", data = {}) {
const loginRes = uni.getStorageSync("loginRes") || {};
return new Promise((resolve, reject) => {
uni.uploadFile({
url: BASE_URL + url, // 完整的URL
filePath: filePath,
name: "image",
header: {
AccessToken: loginRes.accessToken || "-1", // 请求头,可根据需要调整
UserId: loginRes.appUserId || "-1", // 请求头,可根据需要调整
LanguageType: 0,
// 其他需要的请求头信息(如Token)
},
formData: data,
success: (res) => {
if (res.statusCode === 200) {
if (res.data.code === 500) {
uni.showToast({
title: "系统错误", // 提示的文本内容
icon: "none", // 提示的图标,可选值:'success' | 'loading' | 'none'
duration: 2000, // 提示框的显示时间,单位为毫秒,默认1500ms
});
}
if (res.data.code === 20001) {
reject(res.data);
}
resolve(res.data); // 返回数据
} else {
reject(res.data); // 返回错误信息
}
},
fail: (err) => {
uni.showToast({
title: "请求错误", // 提示的文本内容
icon: "none", // 提示的图标,可选值:'success' | 'loading' | 'none'
duration: 2000, // 提示框的显示时间,单位为毫秒,默认1500ms
});
reject(err); // 请求失败
},
});
});
}