request.js 2.73 KB
import config from '@/config.js'
import {
  h5LoginAuto
} from './login'

const excludeUrls = ['pages/index/login', 'pages/index/register']

// 获取Token
function getToken() {
  try {
    const token = uni.getStorageSync('token')
    if (token) {
      return token
    } else {
      return ''
    }
  } catch (e) {
    console.log(e)
  }
}

// 获取请求头
function getHeaders() {
  const token = getToken()
  const header = {
    'Authorization': token,
    'Content-Type': 'application/json' // 根据自己的数据类型
    // "Content-Type":"application/x-www-form-urlencoded",
  }
  return header
}

const request = function(req) {
  req.method = req.method.toUpperCase()
  if (!['GET', 'POST', 'PUT', 'DELETE'].includes(req.method)) {
    uni.showToast({
      title: `暂不支持的请求方式: ${req.method}`,
      icon: 'none'
    })
    return
  }

  // if (req.method == 'POST' && !req.hideLoding) {
  // 	uni.showLoading({
  // 		title: '提交中...'
  // 	})
  // }

  return new Promise((resolve, reject) => {
    uni.request({
      url: config.baseUrl_api + req.url,
      method: req.method,
      data: req.params,
      header: getHeaders()
    }).then(res => {
      switch (res.statusCode) {
        case 200:
          const data = res.data || {}
          if (data.code === 200||data.pageData?.code === 200) {
            resolve(data)
          } else if (req.url.indexOf('getMemberCountInfo')>-1){
			resolve(data)
		  } else {
            if (!excludeUrls.includes(req.url)) {
              uni.showToast({
                title: data.msg,
                icon: 'none',
                duration: 3000
              })
            }

            // 登录超时
            if (data.code === 60002 || data.code === 60001) {
              uni.redirectTo({
                url: '/pages/index/login'
              })
            } else if (data.code === 401) {
              h5LoginAuto()
                .then(() => {
                  uni.hideLoading()
                  uni.redirectTo({
                    url: getCurrentPages()[getCurrentPages()
                      .length - 1].$page.fullPath
                  })
                })
                .catch(() => {
                  uni.showToast({
                    title: '服务异常,请稍后重试',
                    icon: 'none'
                  })
                })
            }
			
            reject(res)
          }
          break
        default:
          reject(res)
      }
    }).catch(res => {
      reject(res)
    }).finally(() => {
      // if (req.method == 'POST' && !req.hideLoding) {
      // 	uni.hideLoading()
      // }
    })
  })
}

export default request