/**
 * 通用下载方法
 * @param apiMethod - 调用的 API 方法，返回一个 Promise。
 * @param  queryParams - 请求参数。
 * @param fileName - 下载文件的名称。
 * @param successMessage - 成功时的消息提示函数。
 * @param  errorMessage - 失败时的消息提示函数。
 */

export async function uesDownloadFile({
	apiMethod,
	queryParams = {},
	fileName = '下载文件.xlsx',
	successMessage = () => ElMessage.success('文件下载成功！'),
	errorMessage = () => ElMessage.error('文件下载失败，请重试！'),
}) {
	try {
		const response = await apiMethod(queryParams);
		const url = window.URL.createObjectURL(new Blob([response.data]));
		const link = document.createElement('a');
		link.href = url;
		link.setAttribute('download', fileName);
		document.body.appendChild(link);
		link.click();
		document.body.removeChild(link); // 清理 DOM
		successMessage();
	} catch (error) {
		errorMessage();
		console.error('下载文件出错:', error);
	}
}
