// 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); // 请求失败 }, }); }); }