fix: 改进导入处理逻辑的健壮性

- 添加response验证,防止taskId缺失
- 添加轮询超时机制,防止无限轮询(5分钟)
- 完善状态处理逻辑,成功时清除失败按钮

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
wkc
2026-02-06 12:33:31 +08:00
parent cb12f1db70
commit 989f8de19a

View File

@@ -685,6 +685,14 @@ export default {
this.upload.open = false;
if (response.code === 200) {
// 验证响应数据完整性
if (!response.data || !response.data.taskId) {
this.$modal.msgError('导入任务创建失败:缺少任务ID');
this.upload.isUploading = false;
this.upload.open = true;
return;
}
const taskId = response.data.taskId;
// 清除旧的导入记录(防止并发)
@@ -728,8 +736,20 @@ export default {
},
/** 开始轮询导入状态 */
startImportStatusPolling(taskId) {
let pollCount = 0;
const maxPolls = 150; // 最多轮询150次(5分钟)
this.pollingTimer = setInterval(async () => {
try {
pollCount++;
// 超时检查
if (pollCount > maxPolls) {
clearInterval(this.pollingTimer);
this.$modal.msgWarning('导入任务处理超时,请联系管理员');
return;
}
const response = await getImportStatus(taskId);
if (response.data && response.data.status !== 'PROCESSING') {
@@ -761,6 +781,7 @@ export default {
type: 'success',
duration: 5000
});
this.showFailureButton = false; // 成功时清除失败按钮显示
this.getList();
} else if (statusResult.failureCount > 0) {
this.$notify({