/*
 * 招标文件处理统一API
 * 整合招标代理和审核部门的接口调用
 */

import request from '/@/utils/request';

/**
 * 获取列表数据（根据模式调用不同接口）
 * @param mode 模式：agent-招标代理，audit-审核部门
 * @param params 分页参数
 */
export function getDocProcessList(mode: string, params?: any) {
	const url = mode === 'agent'
		? '/purchase/purchasingdoc/agent/list'
		: '/purchase/purchasingdoc/audit/page';
	return request({
		url,
		method: 'get',
		params
	});
}

/**
 * 获取采购需求文件列表（招标代理专用）
 * @param applyId 采购申请ID
 */
export function getRequirementFiles(applyId: number | string) {
	return request({
		url: `/purchase/purchasingdoc/agent/requirement/${applyId}`,
		method: 'get'
	});
}

/**
 * 获取采购需求文件列表（审核人员专用）
 * @param applyId 采购申请ID
 */
export function getRequirementFilesForAudit(applyId: number | string) {
	return request({
		url: `/purchase/purchasingdoc/audit/requirement/${applyId}`,
		method: 'get'
	});
}

/**
 * 获取招标文件列表
 * @param applyId 采购申请ID
 */
export function getDocList(applyId: number | string) {
	return request({
		url: `/purchase/purchasingdoc/list/${applyId}`,
		method: 'get'
	});
}

/**
 * 上传招标文件（招标代理）
 * @param data 文件数据
 */
export function uploadDoc(data: any) {
	return request({
		url: '/purchase/purchasingdoc/upload',
		method: 'post',
		data
	});
}

/**
 * 重新上传招标文件
 * @param data 文件数据
 */
export function reuploadDoc(data: any) {
	return request({
		url: '/purchase/purchasingdoc/reupload',
		method: 'post',
		data
	});
}

/**
 * 获取招标文件下载地址
 * @param id 招标文件ID
 */
export function getDocDownloadUrl(id: number | string) {
	return `/purchase/purchasingdoc/download/${id}`;
}

/**
 * 下载招标文件（返回blob）
 * @param id 招标文件ID
 */
export function downloadDocById(id: number | string) {
	return request({
		url: `/purchase/purchasingdoc/download/${id}`,
		method: 'get',
		responseType: 'blob'
	});
}

/**
 * 根据文件ID下载采购附件（返回blob）
 * @param fileId 文件ID
 */
export function downloadFileById(fileId: string | number) {
	return request({
		url: '/purchase/purchasingfiles/downloadById',
		method: 'get',
		params: { fileId },
		responseType: 'blob'
	});
}

/**
 * 确认无误
 * @param data 审核信息
 */
export function confirmDoc(data: any) {
	return request({
		url: '/purchase/purchasingdoc/confirm',
		method: 'post',
		data
	});
}

/**
 * 退回修改
 * @param data 审核信息
 */
export function returnDoc(data: any) {
	return request({
		url: '/purchase/purchasingdoc/return',
		method: 'post',
		data
	});
}

/**
 * 确认流程结束
 * @param applyId 采购申请ID
 */
export function completeDoc(applyId: number | string) {
	return request({
		url: '/purchase/purchasingdoc/complete',
		method: 'post',
		params: { applyId }
	});
}

/**
 * 获取审核记录
 * @param applyId 采购申请ID
 */
export function getAuditRecords(applyId: number | string) {
	return request({
		url: `/purchase/purchasingdoc/audit-records/${applyId}`,
		method: 'get'
	});
}

/**
 * 获取可执行操作
 * @param applyId 采购申请ID
 */
export function getAvailableActions(applyId: number | string) {
	return request({
		url: `/purchase/purchasingdoc/actions/${applyId}`,
		method: 'get'
	});
}

/**
 * 获取采购申请附件列表
 * @param purchaseId 采购申请ID
 */
export function getApplyFiles(purchaseId: string | number) {
	return request({
		url: '/purchase/purchasingfiles/applyFiles',
		method: 'post',
		params: { purchaseId }
	});
}

/**
 * 获取文件上传地址
 */
export function getFileUploadUrl() {
	const baseUrl = import.meta.env.VITE_API_URL || '';
	return `${baseUrl}/purchase/purchasingfiles/upload`;
}

/**
 * 保存草稿（招标代理）
 * @param data 文件信息
 */
export function saveDraft(data: any) {
	return request({
		url: '/purchase/purchasingdoc/save-draft',
		method: 'post',
		data
	});
}

/**
 * 提交草稿（招标代理）
 * @param data 文件信息
 */
export function submitDraft(data: any) {
	return request({
		url: '/purchase/purchasingdoc/submit-draft',
		method: 'post',
		data
	});
}

/**
 * 补充上传（资产管理处）
 * @param data 文件信息（含fileRemark）
 */
export function supplyUpload(data: any) {
	return request({
		url: '/purchase/purchasingdoc/supply-upload',
		method: 'post',
		data
	});
}

/**
 * 提交至需求部门（资产管理处）
 * @param data 审核信息
 */
export function submitToDept(data: any) {
	return request({
		url: '/purchase/purchasingdoc/submit-to-dept',
		method: 'post',
		data
	});
}

/**
 * 提交至内审部门（资产管理处）
 * @param data 审核信息
 */
export function submitToAudit(data: any) {
	return request({
		url: '/purchase/purchasingdoc/submit-to-audit',
		method: 'post',
		data
	});
}

/**
 * 提交至资产管理处（需求部门/内审部门）
 * @param data 审核信息
 */
export function submitToAsset(data: any) {
	return request({
		url: '/purchase/purchasingdoc/submit-to-asset',
		method: 'post',
		data
	});
}

/**
 * 定稿（资产管理处）
 * @param data 审核信息
 */
export function finalizeDoc(data: any) {
	return request({
		url: '/purchase/purchasingdoc/finalize',
		method: 'post',
		data
	});
}

/**
 * 获取采购代表设置信息
 * @param applyId 采购申请ID
 */
export function getReviewerSetting(applyId: string | number) {
	return request({
		url: `/purchase/purchasingdoc/reviewer/${applyId}`,
		method: 'get'
	});
}

/**
 * 设置采购代表
 * @param data 设置信息
 */
export function setReviewerSetting(data: any) {
	return request({
		url: '/purchase/purchasingdoc/reviewer/set',
		method: 'post',
		data
	});
}

/**
 * 随机抽取采购代表
 * @param data 候选人列表
 */
export function randomSelectReviewer(data: any) {
	return request({
		url: '/purchase/purchasingdoc/reviewer/random',
		method: 'post',
		data
	});
}