From 8599258b1ddbad8f9451663a5a117d503798c44a Mon Sep 17 00:00:00 2001 From: xlsea Date: Wed, 3 Jul 2024 10:14:47 +0800 Subject: [PATCH] =?UTF-8?q?fix(sj=5Fmap=5Freduce):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=BB=84=E4=BB=B6=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/log-drawer.vue | 41 ++++++++++++++++++---------- src/service/api/log.ts | 5 ++-- src/service/request/index.ts | 4 +++ 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/src/components/common/log-drawer.vue b/src/components/common/log-drawer.vue index da353e4..dd1e67f 100644 --- a/src/components/common/log-drawer.vue +++ b/src/components/common/log-drawer.vue @@ -33,30 +33,43 @@ const syncTime = ref(1); const logList = ref([]); const interval = ref(); const controller = new AbortController(); -const finished = ref(false); +const finished = ref(true); let startId = '0'; let fromIndex: number = 0; +let axiosController = new AbortController(); -const stopLog = () => { +const pauseLog = () => { finished.value = true; controller.abort(); clearTimeout(interval.value); interval.value = undefined; }; +const stopLog = () => { + if (!finished.value) axiosController.abort(); + pauseLog(); + startId = '0'; + fromIndex = 0; + logList.value = []; +}; + async function getLogList() { let logData = null; let logError; + if (props.type === 'job') { const taskData = props.taskData! as Api.Job.JobTask; - const { data, error } = await fetchJobLogList({ - taskBatchId: taskData.taskBatchId, - jobId: taskData.jobId, - taskId: taskData.id, - startId, - fromIndex, - size: 50 - }); + const { data, error } = await fetchJobLogList( + { + taskBatchId: taskData.taskBatchId, + jobId: taskData.jobId, + taskId: taskData.id, + startId, + fromIndex, + size: 50 + }, + axiosController + ); logData = data; logError = error; } @@ -86,7 +99,7 @@ async function getLogList() { clearTimeout(interval.value); interval.value = setTimeout(getLogList, syncTime.value * 1000); } - } else { + } else if (logError?.code !== 'ERR_CANCELED') { stopLog(); } } @@ -100,18 +113,18 @@ watch( async val => { if (val) { if (props.modelValue) { - logList.value = props.modelValue; + logList.value = [...props.modelValue]; } } if ((val || !props.drawer) && props.type && props.taskData) { finished.value = false; + axiosController = new AbortController(); await getLogList(); } if (!val && props.drawer) { stopLog(); - logList.value = []; } }, { immediate: true } @@ -163,7 +176,7 @@ const handleSyncSelect = async (time: number) => { } if (time === 0) { - stopLog(); + pauseLog(); return; } diff --git a/src/service/api/log.ts b/src/service/api/log.ts index 9f4f43c..841bceb 100644 --- a/src/service/api/log.ts +++ b/src/service/api/log.ts @@ -1,11 +1,12 @@ import { request } from '../request'; /** get Job Log List */ -export function fetchJobLogList(params?: Api.JobLog.JobLogSearchParams) { +export function fetchJobLogList(params?: Api.JobLog.JobLogSearchParams, controller?: AbortController) { return request({ url: '/job/log/list', method: 'get', - params + params, + signal: controller?.signal }); } diff --git a/src/service/request/index.ts b/src/service/request/index.ts index 3127ff4..1ca5bfb 100644 --- a/src/service/request/index.ts +++ b/src/service/request/index.ts @@ -135,6 +135,10 @@ export const request = createFlatRequest