|                                                                                                         |  | import config from "@/config";
export default function request({  url = '',  method = 'GET',  data = {},  showLoading = false,  header = {},  needToken = false, // 需要token
  showToast = true // 默认显示失败的提示
}) {  if (showLoading) uni.showLoading({ title: '加载中' })  if (needToken) {    const token = uni.getStorageSync('token')    if (token) {      header['X-Access-Token'] = token    } else {      if (showLoading) {        uni.hideLoading()      }      uni.showToast({        title: '请先登录',        icon: 'none'      })      uni.reLaunch({ url: '/subPages/login/login' })      return Promise.reject({        code: 401,        message: '请先登录'      })    }  }  return new Promise((resolve, reject) => {    uni.request({      url: config.baseURL + url,      method,      data,      header: {        'Content-Type': 'application/x-www-form-urlencoded',        ...header      },      success: (res) => {        console.log(`Success ${method} ${url}`, res);
        // 优先处理业务逻辑响应
        if (res.statusCode === 200 && res.data) {          // 业务成功
          if (res.data.code === 200) {            if (showLoading) {              uni.hideLoading()            }            resolve(res.data)            return          }
          // 业务失败但有具体错误信息
          const errorMsg = res.data.message || '请求失败'
          if (showToast) {            if (showLoading) {              uni.hideLoading()            }            uni.showToast({              title: errorMsg,              icon: 'none',              duration: 3000            })          }          reject({            code: res.data.code,            message: errorMsg,            data: res.data          })          return        }
        // 处理HTTP状态码错误(无有效响应体的情况)
        const error = {          code: res.statusCode,          message: '网络请求错误'        }
        switch (res.statusCode) {          case 401:            uni.reLaunch({ url: '/subPages/login/login' })            error.message = '请先登录'            break;          case 403:            uni.removeStorageSync('token')            uni.reLaunch({ url: '/subPages/login/login' })            error.message = '登录已过期,请重新登录'            break;          case 404:            error.message = '资源不存在'            break;          case 500:            error.message = '服务器错误'            break;        }        if (showToast) {          if (showLoading) {            uni.hideLoading()          }          uni.showToast({            title: error.message,            icon: 'none'          })        }        reject(error)      },      fail: (err) => {        console.log(`Fail ${method} ${url}`, err);        const errorMsg = err.errMsg || '请求失败'        if (showToast) {          if (showLoading) {            uni.hideLoading()          }          uni.showToast({            title: errorMsg,            icon: 'none'          })        }
        reject({          code: -1,          message: errorMsg,          data: err        })      },
    })  })}
 |