// 二次封装 axios 的文件 request.js
import axios from "axios";
import Vue from 'vue'
import { message } from 'iview'

const service = axios.create({
  baseURL: 'http://39.104.75.126:8063/wxyzt-java',
});

const err = (error) => {
  if (error.response) {
    let data = error.response.data
    const token = Vue.ls.get('ACCESS_TOKEN')
    
    switch (error.response.status) {
      case 403:
        message.error('拒绝访问')
        break
      case 500:
        let type=error.response.request.responseType;
        if(type === 'blob'){
          blobToJson(data);
          break;
        }
        if(token && data.message.includes("Token失效")){
          message.loading('很抱歉，登录已过期，请重新登录')
        }
        break
      case 404:
          message.error('很抱歉，资源未找到!')
        break
      case 504:
        message.error('网络超时')
        break
      case 401:
        message.error('很抱歉，登录已过期，请重新登录')
        break
      default:
        // message.error(data.message)
        break
    }
  } else if (error.message) {
    if (error.message.includes('timeout')) {
      message.error( '网络超时')
    } else {
      message.error(error.message)
    }
  }
  return Promise.reject(error)
};
// 请求拦截器
service.interceptors.request.use(
  config => {
    const token = Vue.ls.get('ACCESS_TOKEN')
    if (token) {
      config.headers[ 'X-Access-Token' ] = token // 让每个请求携带自定义 token 请根据实际情况自行修改
    } else {
      // config.headers[ 'X-Access-Token' ] = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2NjI3MzgxODgsInVzZXJuYW1lIjoid3h5enQifQ.5_ivsw1fEzLGQmBlI4kbKrz_4w9vZNDWhOIh7be3FE0"
    }

    return config
  },
  error => {
    return Promise.reject(error)
  }
);
// 响应拦截器
service.interceptors.response.use(
  response => {
    return response.data
  },err);

export default service;
