let baseUrl = '' if (process.env.NODE_ENV === 'development') { baseUrl = 'http://192.168.0.239:8080' // 开发环境 } else { baseUrl = 'http://192.168.0.239:8080' // 生产环境 } export default function request(url, data = {}, method = 'GET') { return new Promise((resolve, reject) => { uni.showLoading({ title: '请求中...', mask: true, }) uni.request({ url: baseUrl + url, data: data, method: method, header: { Authorization: 'Bearer ' + (uni.getStorageSync('token') || ''), clientid: 'butler', 'content-type': 'application/json', }, success: (res) => { uni.hideLoading() // HTTP 失败 if (res.statusCode !== 200) { reject({ msg: `请求异常 ${res.statusCode}`, code: res.statusCode, }) return } const resData = res.data || {} // token 过期 if (resData.code === 401) { uni.showToast({ title: '登录过期,请重新登录', icon: 'none', }) uni.clearStorageSync('token') setTimeout(() => { uni.reLaunch({ url: '/pageSubPack/loginSub/pwd-login', }) }, 1500) reject({ msg: '登录过期', code: 401, }) return } // 成功 if (resData.code === 200) { resolve(resData) } // 业务失败 else { reject({ msg: resData.msg || '请求失败', code: resData.code, data: resData, }) } }, fail: (err) => { uni.hideLoading() reject({ msg: '网络异常', code: -1, raw: err, }) }, }) }) } export const get = (url, data) => request(url, data, 'GET') export const post = (url, data) => request(url, data, 'POST') export const put = (url, data) => request(url, data, 'PUT') // export const deleteMethod = (url, data) => request(url, data, 'DELETE'); // export const putMethod = (url, data) => request(url, data, 'PUT'); // 上传 export const upload = (filePath, url) => { return new Promise((resolve, reject) => { uni.uploadFile({ url: baseUrl + url, filePath: filePath, name: 'file', header: { Authorization: 'Bearer ' + (uni.getStorageSync('token') || ''), clientid: 'resident', }, success: (res) => { try { const data = JSON.parse(res.data) resolve(data.data || '') // 直接返回图片地址 } catch (e) { resolve('') } }, fail: (err) => { reject(err) }, }) }) } /** * 过滤请求参数:移除值为 null / undefined / 空字符串 的字段 * 用于避免将空参数拼接到 URL 或请求体中 * @param {Object|null|undefined} params - 原始请求参数 * @returns {Object} 过滤后的干净参数对象,只保留有效值 */ export function filterParams(params) { if (!params) return {} return Object.keys(params).reduce((acc, key) => { const value = params[key] if (value !== null && value !== undefined && value !== '') { acc[key] = value } return acc }, {}) }