"use strict";
import axios from "axios";
import store from '@/store'
import { ElMessage } from 'element-plus'
import CryptoJS from './crypto'
import {webLogin} from '@/utils/webLogin'

// Full config:  https://github.com/axios/axios#request-config
// axios.defaults.baseURL = process.env.baseURL || process.env.apiUrl || '';
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';

let config = {
  baseURL: import.meta.env.VITE_APP_API_URL,
  timeout: 10*60 * 1000, // Timeout
  // withCredentials: true, // Check cross-site Access-Control
};

const _axios = axios.create(config);

_axios.interceptors.request.use(
  function (config) {
    // Do something before request is sent
    config.headers.Authorization=store.state.token
    return config;
  },
  function (error) {
    // Do something with request error
    return Promise.reject(error);
  }
);

// Add a response interceptor
_axios.interceptors.response.use(
  function (response) {
    // Do something with response data
    let data
    if(import.meta.env.MODE==='production'){
      data=JSON.parse(CryptoJS.Des3Decrypt(response.data));//解密
    }else{
      data=response.data
    }
    if(data.code===401){//token失效
      console.log('请重新登录')
      console.log('miniprogram:',window.__wxjs_environment)
      if(window.__wxjs_environment === 'miniprogram'){
        // 如果在小程序中 则回跳到小程序首页进行更新token 再带回到项目中 
        wx.miniProgram.switchTab({url: '/pages/report/report'})
      }else{
        webLogin()
      }
    }
    if(![200,403,4001,401,4002].includes(data.code)){
      ElMessage.error(data.msg)
    }
    return data;
  },
  function (error) {
    // Do something with response error
    return Promise.reject(error);
  }
);

/**
 * 导出get请求方法
 * @url 请求地址
 * @params get请求参数
 */
export const get = (url, params) => {
  return _axios.get(url, { params });
};

/**
 * 导出post请求方法
 * @url 请求地址
 * @params post请求参数
 */
export const post = (url, params) => {
  return _axios.post(url, params);
};
