| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /**
- * uni-app 网络请求封装
- * @author steelwei
- */
- import { BASE_URL, CLIENT_ID, PLATFORM_CODE, TENANT_ID } from './config'
- import { getToken, clearAuth } from './auth'
- /**
- * 通用请求方法
- * @param {Object} options - 请求配置
- * @param {string} options.url - 请求路径(不含 BASE_URL)
- * @param {string} [options.method='GET'] - 请求方法
- * @param {Object} [options.data] - 请求数据
- * @param {Object} [options.header] - 额外请求头
- * @param {boolean} [options.needToken=true] - 是否需要携带 Token
- * @returns {Promise}
- */
- export default function request(options = {}) {
- const {
- url,
- method = 'GET',
- data,
- header = {},
- needToken = true
- } = options
- // 构建请求头
- const headers = {
- 'Content-Type': 'application/json;charset=utf-8',
- 'clientid': CLIENT_ID,
- 'X-Platform-Code': PLATFORM_CODE,
- ...header
- }
- // 携带 Token
- if (needToken) {
- const token = getToken()
- if (token) {
- headers['Authorization'] = 'Bearer ' + token
- }
- }
- return new Promise((resolve, reject) => {
- uni.request({
- url: BASE_URL + url,
- method: method.toUpperCase(),
- data,
- header: headers,
- timeout: 600000,
- success: (res) => {
- console.log(res)
- const statusCode = res.statusCode
- const code = res.data.code
- const msg = res.data.msg
- const result = res.data.data
- // HTTP 状态码错误
- // if (statusCode === 401) {
- // // Token 过期或未登录
- // clearAuth()
- // uni.showToast({ title: '登录已过期,请重新登录', icon: 'none' })
- // setTimeout(() => {
- // uni.reLaunch({ url: '/pages/login/index' })
- // }, 1500)
- // return reject(new Error('未授权'))
- // }
- if (statusCode !== 200) {
- const errorMsg = msg || `请求失败(${statusCode})`
- uni.showToast({ title: errorMsg, icon: 'none' })
- return reject(new Error(errorMsg))
- }
- if (code === 401) {
- // Token 过期或未登录
- clearAuth()
- uni.showToast({ title: '登录已过期,请重新登录', icon: 'none' })
- setTimeout(() => {
- uni.reLaunch({ url: '/pages/login/index' })
- }, 1500)
- return reject(new Error('未授权'))
- }
- // 业务状态码
- if (code !== undefined && code !== 200) {
- const errorMsg = msg || '操作失败'
- uni.showToast({ title: errorMsg, icon: 'none' })
- return reject(new Error(errorMsg))
- }
- resolve(res.data)
- },
- fail: (err) => {
- uni.showToast({ title: '网络异常,请检查网络状态', icon: 'none' })
- reject(err)
- }
- })
- })
- }
|