// utils/request.js /** * 封装请求函数 * @param {Object} options - 请求选项 * @param {string} options.url - 请求URL * @param {string} options.method - 请求方法: GET, POST, PUT, DELETE * @param {Object} options.data - 请求参数 * @param {Object} options.header - 请求头 * @returns {Promise} - 返回Promise对象 */ export const request = (options = {}) => { const DOMAIN = 'https://m.dayunyuanjian.com'; return new Promise((resolve, reject) => { options.url = options.url.startsWith('/') ? `${DOMAIN}${options.url}` : options.url; // 默认配置 const defaultOptions = { url: '', method: 'GET', data: {}, header: { 'content-type': 'application/json' }, timeout: 10000 // 10秒超时 }; // 合并配置 const mergedOptions = { ...defaultOptions, ...options }; // 处理URL if (!mergedOptions.url) { reject(new Error('URL不能为空')); return; } // 调用uni.request uni.request({ url: mergedOptions.url, method: mergedOptions.method, data: mergedOptions.data, header: mergedOptions.header, timeout: mergedOptions.timeout, success: (res) => { // 请求成功 if (res.statusCode >= 200 && res.statusCode < 300) { resolve(res.data); } else { // 服务器返回错误 reject({ statusCode: res.statusCode, errMsg: `请求失败,状态码: ${res.statusCode}`, data: res.data }); } }, fail: (err) => { // 请求失败 reject(err); } }); }); }; /** * GET请求快捷方法 * @param {string} url - 请求URL * @param {Object} data - 请求参数 * @param {Object} options - 其他选项 */ export const get = (url, data = {}, options = {}) => { return request({ url, method: 'GET', data, ...options }); }; /** * POST请求快捷方法 * @param {string} url - 请求URL * @param {Object} data - 请求参数 * @param {Object} options - 其他选项 */ export const post = (url, data = {}, options = {}) => { return request({ url, method: 'POST', data, ...options }); }; /** * 上传文件快捷方法 * @param {string} url - 上传URL * @param {string} filePath - 文件路径 * @param {string} name - 文件对应的key * @param {Object} formData - 附加的表单数据 */ export const uploadFile = (url, filePath, name = 'file', formData = {}) => { return new Promise((resolve, reject) => { uni.uploadFile({ url, filePath, name, formData, success: (res) => { try { // 尝试解析JSON const data = JSON.parse(res.data); resolve(data); } catch (e) { resolve(res.data); } }, fail: reject }); }); };