import axios from "axios";
// import qs from 'qs'
// import router from "@/router/index";
// import useUserStore from "../store/modules/user";
import { Toast } from "tdesign-mobile-vue";
// 错误码枚举
enum responseCode {
  success = 200, // 成功
  noPermission = 401, // 未授权
  error = 500, // 服务器异常
}

const request = axios.create({
  // baseURL: window.sessionStorage.getItem("baseURL")!,
  baseURL: 'http://113.194.84.171:20009',
  // baseURL: import.meta.env.DEV && import.meta.env.VITE_OPEN_PROXY === 'true' ? '/proxy/' : import.meta.env.VITE_APP_API_BASEURL,
  timeout: 1000 * 60,
  responseType: "json",
});

request.interceptors.request.use((request) => {
  // const userStore = useUserStore();
  /**
   * 全局拦截请求发送前提交的参数
   * 以下代码为示例，在请求头里带上 token 信息
   */
  // if (userStore.isLogin && request.headers) {
  //   request.headers.token = userStore.token;
  // }
  // 是否将 POST 请求参数进行字符串化处理
  if (request.method === "post") {
    // request.data = qs.stringify(request.data, {
    //   arrayFormat: 'brackets',
    // })
  }
  return request;
});

request.interceptors.response.use(
  (response) => {
    /**
     * 全局拦截请求发送后返回的数据，如果数据有报错则在这做全局的错误提示
     * 如果是文件直接返回整个response对象
     */
    if (response.data instanceof Blob) {
      return Promise.resolve(response);
    } else if (response.data.code !== responseCode.success) {
      if (response.data.code === responseCode.noPermission) { // 401
        // token失效状态跳转到登录页
        // toLogin();
        // if (useUserStore().isLogout === 0) {
        //   Toast(response.data.message || "发生错误");
        // }
        // useUserStore().toLogout();
      } else {
        // 这里做错误提
        Toast({
          theme: 'error',
          direction: 'column',
          message: `${response.data.message}` || "发生错误",
        });
        // const loadingInstance = ElLoading.service({});
        // nextTick(() => {
        //   // Loading should be closed asynchronously
        //   loadingInstance.close();
        // });
      }

      return Promise.reject(response.data);
    } else {
      // 成功
      return Promise.resolve(response.data);
    }
  },
  (error) => {
    // 处理文件下载的错误提示
    if (error.message) {
      let message = error.message;
      if (message === "Network Error") {
        message = "后端网络故障";
      } else if (message.includes("timeout")) {
        message = "接口请求超时";
      } else if (message.includes("Request failed with status code")) {
        message = `接口${message.substr(message.length - 3)}异常`;
      }
      Toast({
        theme: 'error',
        direction: 'column',
        message: message,
      });
    }
    return Promise.reject(error);
  }
);

export default request;
