import axios from 'axios'
import router from '@/router'
import store from '@/store'

export default {
  get,
  post
}
/**
 * @description: 异步 get方法 访问api
 * @return: json.data对象
 * @param {string} controller 控制器名称
 * @param {string} prefix 根据不同的参数 调用不同路径的接口
 */
async function get (controller, prefix = 'Plane') {
  const path = init(prefix)
  try {
    const res = await axios.get(path + controller)
    if (res.data.status === 'noPermission') { // 权限过期
      localStorage.removeItem('token')
      router.go(0)
    }
    return res
  } catch (error) {
    console.error('Error fetching data:', error)
    throw error
  }
}
/**
 * @description: 异步 post方法 访问api
 * @return: json.data对象
 * @param {string} controller 控制器名称
 * @param {obj} params post参数
 * @param {string} prefix 根据不同的参数 调用不同路径的接口
 */
async function post (controller, params, prefix = 'Plane') {
  const path = init(prefix)
  try {
    const res = await axios.post(path + controller, params)
    if (res.data.status === 'noPermission') { // 权限过期
      localStorage.removeItem('token')
      router.go(0)
    }
    return res
  } catch (error) {
    console.error('Error fetching data:', error)
    throw error
  }
}
/**
 * @description: 判断访问常规还是登录接口路径 设置token头文件
 * @return {*} 接口路径
 * @param {string} prefix 根据不同的参数 调用不同路径的接口
 */
function init (prefix) {
  // axios缺省设置
  axios.defaults.baseURL = store.state.settings.baseURL
  // axios.defaults.headers.post['Content-Type'] = 'application/json'
  let path
  if (prefix === 'Plane') {
    axios.defaults.headers.common.Token = store.state.user.token
    path = store.state.settings.apiPlanePath
  } else if (prefix === 'Admin') {
    axios.defaults.headers.common.Token = store.state.user.token
    path = store.state.settings.apiAdminPath
  } else if (prefix === 'Pay') {
    axios.defaults.headers.common.Token = store.state.user.token
    path = store.state.settings.apiPayPath
  } else if (prefix === 'Login') {
    axios.defaults.headers.common.Token = 'login'
    path = store.state.settings.apiLoginPath
  }
  return path
}
