const BASE_URL = 'https://your-api-domain.com'; let isRedirectingToLogin = false; function getToken() { return uni.getStorageSync('token') || ''; } function redirectToLogin() { if (isRedirectingToLogin) return; isRedirectingToLogin = true; uni.showToast({ title: '登录已失效,请重新登录', icon: 'none', duration: 1500 }); setTimeout(() => { isRedirectingToLogin = false; uni.reLaunch({ url: '/pages/login/login' }); }, 1500); } function request(options = {}) { const { url, method = 'GET', data = {}, header = {} } = options; const token = getToken(); const headers = { 'Content-Type': 'application/json', ...(token ? { Authorization: 'Bearer ' + token } : {}), ...header }; return new Promise((resolve, reject) => { uni.request({ url: BASE_URL + url, method, data, header: headers, success(res) { const { code, msg, data, total, rows } = res.data; if (code === 200) { const result = {}; if (data !== undefined) result.data = data; if (total !== undefined) result.total = total; if (rows !== undefined) result.rows = rows; resolve(result); } else if (code === 401) { redirectToLogin(); reject(new Error('登录已失效')); } else if (code === 500) { reject(new Error(msg)); } else { reject(new Error(msg || '请求失败')); } }, fail(err) { const message = err.errMsg || '网络请求失败'; uni.showToast({ title: message, icon: 'none' }); reject(new Error(message)); } }); }); } export default request;