import request from '@/axios';

// ==================== 武术赛事导出打印接口 ====================

/**
 * 导出成绩单（Excel）
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {Number} params.projectId - 项目ID（可选）
 * @param {String} params.category - 分组类别（可选）
 * @param {Boolean} params.includeRanking - 是否包含排名（默认true）
 * @param {Boolean} params.includeMedal - 是否包含奖牌（默认true）
 */
export const exportResults = (params) => {
  return request({
    url: '/api/blade-martial/export/results',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出运动员名单（Excel）
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {Number} params.projectId - 项目ID（可选）
 * @param {String} params.category - 分组类别（可选）
 * @param {String} params.teamName - 团队名称（可选）
 * @param {Number} params.status - 报名状态（可选）
 */
export const exportAthletes = (params) => {
  return request({
    url: '/api/blade-martial/export/athletes',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出赛程表（Excel）
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {Number} params.venueId - 场地ID（可选）
 * @param {String} params.scheduleDate - 赛程日期（可选）
 * @param {Number} params.projectId - 项目ID（可选）
 */
export const exportSchedule = (params) => {
  return request({
    url: '/api/blade-martial/export/schedule',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出评分表（Excel）
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {Number} params.projectId - 项目ID（可选）
 * @param {Number} params.judgeId - 裁判ID（可选）
 * @param {String} params.scoreDate - 评分日期（可选）
 */
export const exportScores = (params) => {
  return request({
    url: '/api/blade-martial/export/scores',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出裁判名单（Excel）
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {String} params.judgeLevel - 裁判等级（可选）
 * @param {Number} params.projectId - 项目ID（可选）
 */
export const exportReferees = (params) => {
  return request({
    url: '/api/blade-martial/export/referees',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出工作人员名单（Excel）
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {String} params.role - 角色类型（可选）
 */
export const exportStaff = (params) => {
  return request({
    url: '/api/blade-martial/export/staff',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出奖牌榜（Excel）
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {String} params.groupBy - 分组方式（team/region）
 */
export const exportMedalRanking = (params) => {
  return request({
    url: '/api/blade-martial/export/medal-ranking',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

// ==================== 证书生成接口 ====================

/**
 * 生成单个证书（HTML/PDF）
 * @param {Number} resultId - 成绩ID
 * @param {String} format - 格式（html/pdf）默认pdf
 */
export const generateCertificate = (resultId, format = 'pdf') => {
  return request({
    url: `/api/blade-martial/export/certificate/${resultId}`,
    method: 'get',
    params: { format },
    responseType: format === 'pdf' ? 'blob' : 'json'
  })
}

/**
 * 批量生成证书
 * @param {Object} data - 生成参数
 * @param {Array} data.resultIds - 成绩ID数组
 * @param {Number} data.projectId - 项目ID（可选，为空时使用resultIds）
 * @param {Number} data.competitionId - 赛事ID（可选，为空时使用resultIds）
 * @param {String} data.format - 格式（html/pdf）默认pdf
 * @param {Boolean} data.mergeFiles - 是否合并为一个文件（默认false）
 */
export const batchCertificates = (data) => {
  return request({
    url: '/api/blade-martial/export/certificates/batch',
    method: 'post',
    data,
    responseType: 'blob'
  })
}

/**
 * 获取证书数据（用于预览）
 * @param {Number} resultId - 成绩ID
 */
export const getCertificateData = (resultId) => {
  return request({
    url: `/api/blade-martial/export/certificate/data/${resultId}`,
    method: 'get'
  })
}

/**
 * 获取证书模板列表
 * @param {Number} competitionId - 赛事ID（可选）
 */
export const getCertificateTemplates = (competitionId) => {
  return request({
    url: '/api/blade-martial/export/certificate/templates',
    method: 'get',
    params: { competitionId }
  })
}

/**
 * 上传证书模板
 * @param {File} file - 模板文件
 * @param {String} templateName - 模板名称
 * @param {Number} competitionId - 赛事ID（可选）
 */
export const uploadCertificateTemplate = (file, templateName, competitionId) => {
  const formData = new FormData()
  formData.append('file', file)
  formData.append('templateName', templateName)
  if (competitionId) {
    formData.append('competitionId', competitionId)
  }
  return request({
    url: '/api/blade-martial/export/certificate/template/upload',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

// ==================== 报表导出接口 ====================

/**
 * 导出赛事统计报表
 * @param {Number} competitionId - 赛事ID
 */
export const exportCompetitionReport = (competitionId) => {
  return request({
    url: '/api/blade-martial/export/competition-report',
    method: 'get',
    params: { competitionId },
    responseType: 'blob'
  })
}

/**
 * 导出项目统计报表
 * @param {Number} projectId - 项目ID
 */
export const exportProjectReport = (projectId) => {
  return request({
    url: '/api/blade-martial/export/project-report',
    method: 'get',
    params: { projectId },
    responseType: 'blob'
  })
}

/**
 * 导出裁判工作量统计
 * @param {Object} params - 导出参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {String} params.startDate - 开始日期（可选）
 * @param {String} params.endDate - 结束日期（可选）
 */
export const exportJudgeWorkload = (params) => {
  return request({
    url: '/api/blade-martial/export/judge-workload',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 导出报名统计报表
 * @param {Number} competitionId - 赛事ID
 */
export const exportRegistrationReport = (competitionId) => {
  return request({
    url: '/api/blade-martial/export/registration-report',
    method: 'get',
    params: { competitionId },
    responseType: 'blob'
  })
}

// ==================== 打印接口 ====================

/**
 * 打印签到表
 * @param {Object} params - 打印参数
 * @param {Number} params.competitionId - 赛事ID
 * @param {Number} params.projectId - 项目ID（可选）
 * @param {String} params.scheduleDate - 赛程日期（可选）
 */
export const printSignInSheet = (params) => {
  return request({
    url: '/api/blade-martial/export/print/sign-in',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 打印秩序册
 * @param {Number} competitionId - 赛事ID
 */
export const printProgramBook = (competitionId) => {
  return request({
    url: '/api/blade-martial/export/print/program-book',
    method: 'get',
    params: { competitionId },
    responseType: 'blob'
  })
}

/**
 * 打印成绩公告
 * @param {Object} params - 打印参数
 * @param {Number} params.projectId - 项目ID
 * @param {Number} params.competitionId - 赛事ID
 */
export const printResultAnnouncement = (params) => {
  return request({
    url: '/api/blade-martial/export/print/result-announcement',
    method: 'get',
    params,
    responseType: 'blob'
  })
}
