// src/utils/request.js import config from '@/config' const baseUrl = config.baseUrl // 使用直接导出的函数,避免 this 上下文问题 export function get(url, params = {}, options = {}) { return request('GET', url, params, options) } export function post(url, data = {}, options = {}) { return request('POST', url, data, options) } function request(method, url, data = {}, options = {}) { return new Promise((resolve, reject) => { // 处理路径 let finalUrl = url; // 特殊处理 Java API if (url.startsWith('/java-api')) { finalUrl = url } // 普通 API 处理 else if (!url.startsWith('http')) { // 确保只有一个 /api 前缀 if (!url.startsWith('/api')) { finalUrl = '/api' + (url.startsWith('/') ? url : `/${url}`); } } const baseUrl = process.env.VUE_APP_BASE_API || '/'; const fullUrl = baseUrl + finalUrl; console.log('请求URL:', fullUrl, '方法:', method); uni.request({ url: fullUrl, method, data, header: { 'Content-Type': 'application/json', ...(options.headers || {}) }, success: (res) => { console.log('API响应:', res); // 处理未授权情况 if (res.statusCode === 401) { uni.showToast({ title: '请先登录', icon: 'none' }); uni.navigateTo({ url: '/pages/login' }); reject(new Error('未授权访问')); return; } // 统一处理成功响应 if (res.statusCode >= 200 && res.statusCode < 300) { resolve(res.data) } else { // 尝试提取错误消息 const errorMsg = res.data?.msg || res.data?.message || '请求失败'; reject(new Error(errorMsg)) } }, fail: (err) => { console.error('请求失败:', err); reject(err) } }) }) } // 导出对象以兼容旧代码 export default { get, post, request }