|
|
@@ -12,30 +12,32 @@ import { blobValidate } from "@/utils/ruoyi";
|
|
|
export function usePaperDownload(queryParams) {
|
|
|
/**
|
|
|
* 处理下载
|
|
|
- * @param {Object} row - 表格行数据
|
|
|
+ * @param {Number|String} paperId - 试卷ID(可选,如果不传则从queryParams中获取)
|
|
|
+ * @param {String} paperName - 试卷名称(可选,用于生成文件名)
|
|
|
*/
|
|
|
- const handleDownload = async (row) => {
|
|
|
+ const handleDownload = async (paperId, paperName) => {
|
|
|
try {
|
|
|
- // 优先使用 row 中的字段,如果没有则使用 queryParams 中的值
|
|
|
- const currentParams = toValue(queryParams)
|
|
|
- const params = {
|
|
|
- batchId: row.batchId || currentParams.batchId,
|
|
|
- examType: row.examType || currentParams.examType,
|
|
|
- subjectId: row.subjectId || currentParams.subjectId,
|
|
|
- classId: row.classId || row.id || currentParams.classId,
|
|
|
- // 定向组卷可能需要的额外参数
|
|
|
- universityId: row.universityId || currentParams.universityId,
|
|
|
- majorGroup: row.majorGroup || currentParams.majorGroup,
|
|
|
- majorPlanId: row.majorPlanId || currentParams.majorPlanId
|
|
|
+ // 如果没有传入paperId,尝试从queryParams中获取
|
|
|
+ if (!paperId && queryParams) {
|
|
|
+ const params = toValue(queryParams)
|
|
|
+ paperId = params.paperId
|
|
|
+ paperName = paperName || params.paperName
|
|
|
}
|
|
|
|
|
|
- const response = await downloadPaper(params)
|
|
|
+ if (!paperId) {
|
|
|
+ ElMessage.error('试卷ID不存在')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ const response = await downloadPaper({ paperId })
|
|
|
|
|
|
// 检查响应是否为 blob
|
|
|
if (blobValidate(response)) {
|
|
|
const blob = new Blob([response])
|
|
|
- // 生成文件名,可以根据实际情况调整
|
|
|
- const filename = `${row.className || '试卷'}_${row.batchName || ''}_${Date.now()}.xlsx`
|
|
|
+ // 生成文件名,使用paperName或默认名称
|
|
|
+ const filename = paperName
|
|
|
+ ? `${paperName}_${Date.now()}.docx`
|
|
|
+ : `试卷_${Date.now()}.docx`
|
|
|
saveAs(blob, filename)
|
|
|
ElMessage.success('下载成功')
|
|
|
} else {
|