修复业务模块bug

This commit is contained in:
2026-08-13 18:53:49 +08:00
parent f62e36e846
commit b25b2fae20
7 changed files with 361 additions and 61 deletions
+20 -19
View File
@@ -521,6 +521,8 @@ const openUpload = async row => {
}
};
const clearFile = () => Object.assign(editing, { fileName: '', fileUrl: '', fileTaskId: '' });
const isCurrentUploadTask = taskId =>
taskId && activeUploadTaskId.value && String(taskId) === String(activeUploadTaskId.value);
const stopCurrentUpload = async taskId => {
// 先使整个上传会话失效,阻止 MD5 计算、创建任务等异步流程返回后继续上传。
uploadCancelled.value = true;
@@ -529,7 +531,13 @@ const stopCurrentUpload = async taskId => {
const currentTaskId = taskId || activeUploadTaskId.value || editing.fileTaskId;
if (!currentTaskId) return;
cancelledTaskIds.value.add(String(currentTaskId));
if (isCurrentUploadTask(currentTaskId)) {
uploading.value = false;
activeUploadTaskId.value = undefined;
}
try {
const taskRes = await api.getFileTask(currentTaskId);
if (taskRes.data?.data?.status === 'completed') return;
await api.pauseFileTask([currentTaskId]);
} catch (error) {
ElMessage.error(error.message || '暂停上传失败');
@@ -740,7 +748,7 @@ const loadBatches = async () => {
createTimeEnd: batchCreateRange.value?.[1] ? `${batchCreateRange.value[1]} 23:59:59` : '',
});
const data = res.data?.data || {};
batchRows.value = (data.records || []).map(item => ({ ...item, id: item.waybillIds }));
batchRows.value = data.records || [];
batchPage.total = data.total || 0;
};
const resetBatchQuery = () => {
@@ -755,27 +763,18 @@ const confirmBatches = () => {
if (!batches.has(item.batchNo)) batches.set(item.batchNo, item);
});
selectedBatches.value = [...batches.values()];
editing.waybillImportBatchIds = selectedBatches.value.flatMap(item =>
String(item.waybillIds || item.id)
.split(',')
.filter(Boolean)
);
editing.waybillImportBatchIds = selectedBatches.value.map(item => item.id);
batchVisible.value = false;
};
const removeBatch = row => {
selectedBatches.value = selectedBatches.value.filter(item => item.id !== row.id);
editing.waybillImportBatchIds = selectedBatches.value.flatMap(item =>
String(item.waybillIds || item.id)
.split(',')
.filter(Boolean)
);
editing.waybillImportBatchIds = selectedBatches.value.map(item => item.id);
};
const submitUpload = async () => {
saving.value = true;
try {
if (uploading.value && editing.fileTaskId) {
await api.pauseFileTask([editing.fileTaskId]);
uploadAbortController.value?.abort();
await stopCurrentUpload(editing.fileTaskId);
}
const valid = await uploadFormRef.value.validate().catch(() => false);
if (!valid) return;
@@ -785,11 +784,7 @@ const submitUpload = async () => {
}
await api.submit({
...editing,
waybillImportBatchIds: selectedBatches.value.flatMap(item =>
String(item.waybillIds || item.id)
.split(',')
.filter(Boolean)
),
waybillImportBatchIds: selectedBatches.value.map(item => item.id),
});
ElMessage.success('提交成功');
await closeUploadDialog();
@@ -826,7 +821,13 @@ const taskStatusName = status =>
const formatSize = size =>
size >= 1024 ** 3 ? `${(size / 1024 ** 3).toFixed(1)}G` : `${(size / 1024 ** 2).toFixed(1)}M`;
const pauseTask = async row => {
await api.pauseFileTask([row.id]);
if (row.status === 'completed') return;
if (isCurrentUploadTask(row.id)) {
await stopCurrentUpload(row.id);
} else {
await api.pauseFileTask([row.id]);
cancelledTaskIds.value.add(String(row.id));
}
ElMessage.success('已取消上传');
loadProgress();
};