import axios from 'axios'
import { showToast } from 'vant'

/**
 * 账单导入相关 API
 */

/**
 * 上传账单文件
 * @param {File} file - 要上传的文件
 * @param {string} type - 账单类型 ('Alipay' | 'WeChat')
 * @returns {Promise<{success: boolean, message: string, data: any}>}
 */
export const uploadBillFile = (file, type) => {
  const formData = new FormData()
  formData.append('file', file)
  formData.append('type', type)

  return axios({
    url: `${import.meta.env.VITE_API_BASE_URL}/BillImport/UploadFile`,
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
    timeout: 60000 // 文件上传增加超时时间
  }).then(response => {
    const { data } = response
    
    if (data.success === false) {
      showToast(data.message || '上传失败')
      return Promise.reject(new Error(data.message || '上传失败'))
    }
    
    return data
  }).catch(error => {
    console.error('上传错误:', error)
    
    if (error.response) {
      const { status, data } = error.response
      let message = '上传失败'
      
      switch (status) {
        case 400:
          message = data?.message || '请求参数错误'
          break
        case 401:
          message = '未授权，请先登录'
          break
        case 403:
          message = '没有权限'
          break
        case 413:
          message = '文件过大'
          break
        case 500:
          message = '服务器错误'
          break
      }
      
      showToast(message)
      return Promise.reject(new Error(message))
    }
    
    showToast('网络错误，请检查网络连接')
    return Promise.reject(error)
  })
}
