import axios from 'axios'
import router from '@/router/index'
import { ElMessage } from 'element-plus'
// ElMessage
import { userInfoModules } from "@/store/modules/userInfo";
// import stores from '@/store/index'
import { store } from '@/store/index';   // 因为不是在setup环境而是js中,必须重新初始化加载store
const userInfoPinia = userInfoModules(store); //pinia
// 开发环境需以 "/api" 拼接，其他环境需以 "/C" 拼接 
const env = process.env.NODE_ENV == 'development' ? "/api" : "/C"
// console.log(process.env.NODE_ENV, 'env')


/**
* @description:发送Axios请求
*/
const request = axios.create({
  baseURL: env,
  timeout: 15000
})

// 请求拦截器
request.interceptors.request.use(
  function (config) {
    // 给所有授权的请求提供token
    const AccessToken = localStorage.getItem("AccessToken")
    if (AccessToken) {
      config.headers.token = AccessToken
    }
    return config
  },
  function (error) {
    // 操作
    return Promise.reject(error)
  }
)

// 响应拦截器
request.interceptors.response.use(
  function (response) {
    let code = response.data.code
    // 当token无效(过期或损坏)时  1053为未登录
    if (code == 1052 || code == 1053) {
      localStorage.removeItem("AccessToken");
      router.push("/login");
      ElMessage.error("登录过期，请重新登录！");
      return
      // 弹出错误
    } else if (code != 200) {
      if (code == 500) {
        ElMessage.error("系统异常，请稍后再试");

        // 其他错误
      } else {
        return Promise.reject(response.data)
      }
    } else {
      // 正常返回
      return response.data
    }

  },
  function (error) {
  }
)

export default request