import axios from "axios";
import { ElMessage } from 'element-plus'
import router from "../../router/index";
// 1. 创建axios实例
const instance = axios.create({
  // 接口
  baseURL: import.meta.env.VITE_BASE_URL,
  // 超时时间
  timeout: 50000,
  headers: {
    "Content-Type": "application/x-www-form-urlencoded",
   }
  
});
// 2.请求拦截
instance.interceptors.request.use(
  config => {
    let token = localStorage.getItem('token')
    if (token) {
      config.headers['Authorization'] ='Bearer '+token
    }
    return config;
  },
  error => {
    //  请求发生错误，抛出异常
    Promise.reject(error);
  }
);

// 3.响应拦截
instance.interceptors.response.use(
  res => {
    console.log(res);
    if (res.data && res.data.code === 200 ) {
      return res.data;
    }else{
      let status=res.data.code;
  
      switch (status) {
        case 201:
          router.push("/login");
          localStorage.clear()
          ElMessage.error("该账户已被禁用");

          break;
        case -1:
          ElMessage.error(res.data.message);
          return res.data;
          break;
        case 400:
          ElMessage.error("请求错误");
          break;
        case 401:
          ElMessage.error("未授权，请重新登录");
          router.push("/login");
          break;
        case 403:
          ElMessage.error("拒绝访问");
          break;
        case 404:
          ElMessage.error("请求错误，未找到相应的资源");
          break;
          case 405:
            ElMessage.error("未授权，请重新登录");
            router.push("/login");
            break;
        case 408:
          ElMessage.error("请求超时");
          break;
        case 500:
          ElMessage.error("服务器内部错误");
          break;
        case 501:
          ElMessage.error("网络未实现");
          break;
        case 502:
          ElMessage.error("网络错误");
          break;
        case 503:
          ElMessage.error("服务不可用");
          break;
        case 504:
          ElMessage.error("网络超时");
          break;
        case 505:
          ElMessage.error("HTTP版本不支持该请求");
          break;
        default:
          Promise.reject(res.data) ;
          //ElMessage.error("请求失败");
      }
      //return res;
    }
   
  },
  error => {
    if (error && error.response) {
      const status = error.response.status
      switch (status) {
        case 201:
          router.push("/login");
          localStorage.clear()
          ElMessage.error("该账户已被禁用");
          break;
        case 400:
          ElMessage.error("请求错误");
          break;
        case 401:
       
          router.push("/login");
          localStorage.clear()
          ElMessage.error("未授权，请重新登录");
         
          break;
        case 403:
          ElMessage.error("拒绝访问");
          break;
        case 404:
          ElMessage.error("请求错误，未找到相应的资源");
          break;
        case 408:
          ElMessage.error("请求超时");
          break;
        case 500:
          ElMessage.error("服务器内部错误");
          break;
        case 501:
          ElMessage.error("网络未实现");
          break;
        case 502:
          ElMessage.error("网络错误");
          break;
        case 503:
          ElMessage.error("服务不可用");
          break;
        case 504:
          ElMessage.error("网络超时");
          break;
        case 505:
          ElMessage.error("HTTP版本不支持该请求");
          break;
        default:
          ElMessage.error("请求失败");
      }
    } else {
      if (JSON.stringify(error).includes("timeout")) {
        ElMessage.error("服务器响应超时，请刷新页面");
      }
      ElMessage.error("连接服务器失败");
    }
    return Promise.reject(error);
  }
);
// 4.导出 axios 实例
export default instance;

