// src/utils/request.js import config from '@/config' import { getToken } from '@/utils/auth' import { toast, showConfirm, tansParams } from '@/utils/common' const baseUrl = config.baseUrl let timeout = 10000 const request = (configObj) => { // 重命名参数为 configObj // 确保传入的配置对象有效 configObj = configObj || {} configObj.header = configObj.header || {} // 处理 token const token = getToken() // 只有存在token且未明确禁止携带token时才添加 if (token && configObj.header.isToken !== false) { configObj.header['Authorization'] = 'Bearer ' + token } else if (!token) { console.warn('请求未携带Token:', configObj.url) } // GET 请求参数处理 if (configObj.params) { let url = configObj.url + '?' + tansParams(configObj.params) url = url.slice(0, -1) configObj.url = url } return new Promise((resolve, reject) => { uni.request({ method: configObj.method || 'get', timeout: configObj.timeout || timeout, url: (configObj.baseUrl || baseUrl) + configObj.url, data: configObj.data, header: configObj.header, dataType: 'json', success: (res) => { // 处理401认证失败 if (res.statusCode === 401) { // 更友好的错误处理 const errorMsg = res.data?.msg || '认证失败,请重新登录'; console.warn('认证失败:', configObj.url, errorMsg); // 显示提示但不强制跳转 toast(errorMsg); // 清除无效token if (token) { uni.removeStorageSync('token'); localStorage.removeItem('token'); } reject(new Error(errorMsg)); } else if (res.statusCode === 200) { resolve(res.data); } else { reject(res.data); } }, fail: (err) => { let message = '后端接口连接异常' if (err.errMsg.includes('timeout')) { message = '请求超时' } toast(message) reject(err) } }) }) } // 添加便捷方法 request.get = (url, params, config = {}) => { return request({ url, params, method: 'get', ...config }) } request.post = (url, data, config = {}) => { return request({ url, data, method: 'post', ...config }) } export default request