123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- import axios from 'axios'
- import Qs from 'qs'
- import { MessageBox } from 'element-ui'
- import $store from '@/store'
- import { toLoginPage, getMeechatType } from '@/util/util.js'
- let host = ''
- if (window.location.port === '8080') {
- host = '//test.mee.chat//'
- }
- let ax = axios.create({
- baseURL: host,
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
- transformRequest: [function (data, headers) {
- data = Qs.stringify(data)
- return data
- }],
- transformResponse: [],
- withCredentials: true
- })
- ax.host = host
- ax.interceptors.request.use(
- async config => {
- // 添加登录态
- if (config.needLogin) {
- if (!localStorage.getItem('user_id') || !localStorage.getItem('token')) {
- if (getMeechatType().indexOf('h5')) {
- toLoginPage()
- } else {
- try {
- await $store.dispatch('doGameLogin')
- return handleConfig(config)
- } catch (error) {
- }
- }
- } else {
- return handleConfig(config)
- }
- } else {
- return handleConfig(config)
- }
- },
- error => {
- return Promise.reject(error)
- }
- )
- // 拦截器处理错误
- ax.interceptors.response.use(
- response => {
- if (response.data.result === 1 || response.data.code === -1001) { // result为1时请求成功 code == -1001针对红包已抢完的情况
- return Promise.resolve(response)
- } else {
- if (response.data.code === -5) { // code为-5是登录态失效
- $store.dispatch('resetGameLogin')
- // return Promise.reject(new Error(response.data.msg))
- } else {
- if (!response.config.noErrorMsg) {
- // 请求出错提示错误
- MessageBox.confirm(response.data.msg, 'Error', {
- center: true,
- showCancelButton: false,
- showConfirmButton: false,
- callback () {}
- })
- }
- return Promise.reject(new Error(response.data.msg))
- }
- }
- },
- error => {
- return Promise.reject(error)
- }
- )
- async function handleConfig (config) {
- try {
- let authData = {
- user_id: localStorage.getItem('user_id') || '',
- token: localStorage.getItem('token') || ''
- }
- if (config.method === 'post') {
- if (config.data) {
- config.data = Object.assign(authData, config.data)
- } else {
- config.data = authData
- }
- } else if (config.method === 'get') {
- if (config.params) {
- config.params = Object.assign(authData, config.params)
- } else {
- config.params = authData
- }
- }
- return config
- } catch {
- return config
- }
- }
- // let _request = ax.request
- ax.request2 = async function (config) {
- var objResult = null
- if (config.cache) {
- return new Promise(async (resolve, reject) => {
- var data = null
- config = await handleConfig(config)
- if (config.method === 'post') {
- data = config.data
- } else if (config.method === 'get') {
- data = config.params
- }
- var _cacheKey = ''
- if (config.cacheKeys) {
- for (let i in config.cacheKeys) {
- var key = config.cacheKeys[i]
- _cacheKey += key + '=' + data[key] + '&'
- }
- } else {
- _cacheKey = JSON.stringify(data)
- }
- var cacheKey = config.method + ':' + config.url + '?' + _cacheKey
- var cacheStr = localStorage.getItem(cacheKey)
- if (cacheStr) {
- objResult = JSON.parse(cacheStr)
- config.callback(objResult)
- }
- objResult = await ax.request(config)
- delete objResult['config'] // 这个config没必要缓存
- delete objResult['request'] // 这个request没必要缓存
- var str2 = JSON.stringify(objResult)
- if (cacheStr != str2) {
- if (objResult.data.result) {
- localStorage.setItem(cacheKey, str2)
- }
- config.callback(objResult)
- }
- })
- } else {
- objResult = await ax.request(config)
- config.callback(objResult)
- }
- }
- export default ax
|