/**
 * axios 封装
 */
import axios from 'axios'
import {tansParams} from '@/utils/index'

// 配置基础URL
const baseURL = window.config?.baseUrl || 'http://work.rangutech.cn:9131'

// 设置默认请求头
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'

// 创建axios实例
const service = axios.create({
  baseURL,
  timeout: 10000, // 添加合理的超时时间
})

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // GET请求参数处理
    if (config.method?.toLowerCase() === 'get' && config.params) {
      const urlParams = tansParams(config.params)
      config.url = `${config.url}?${urlParams}`
      config.params = {}
    }

    return config
  },
  (error) => {
    console.error('Request error:', error)
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    const {data, config} = response
    // 处理二进制数据响应
    if (config.responseType === 'blob' || config.responseType === 'arraybuffer') {
      return data
    }
    // 正常响应处理
    if (response.status === 200) {
      return data
    }
    // 异常响应处理
    return Promise.reject(response)
  },
  (error) => {
    const {config, response, message} = error
    console.error('Response error:', {config, response, message})
    return Promise.reject(error)
  }
)

export default service
