fix(sj_map_reduce): 修复日志组件异常

This commit is contained in:
xlsea 2024-07-03 10:14:47 +08:00
parent 78a6d9f895
commit 8599258b1d
3 changed files with 34 additions and 16 deletions

View File

@ -33,30 +33,43 @@ const syncTime = ref(1);
const logList = ref<Api.JobLog.JobMessage[]>([]); const logList = ref<Api.JobLog.JobMessage[]>([]);
const interval = ref<NodeJS.Timeout>(); const interval = ref<NodeJS.Timeout>();
const controller = new AbortController(); const controller = new AbortController();
const finished = ref<boolean>(false); const finished = ref<boolean>(true);
let startId = '0'; let startId = '0';
let fromIndex: number = 0; let fromIndex: number = 0;
let axiosController = new AbortController();
const stopLog = () => { const pauseLog = () => {
finished.value = true; finished.value = true;
controller.abort(); controller.abort();
clearTimeout(interval.value); clearTimeout(interval.value);
interval.value = undefined; interval.value = undefined;
}; };
const stopLog = () => {
if (!finished.value) axiosController.abort();
pauseLog();
startId = '0';
fromIndex = 0;
logList.value = [];
};
async function getLogList() { async function getLogList() {
let logData = null; let logData = null;
let logError; let logError;
if (props.type === 'job') { if (props.type === 'job') {
const taskData = props.taskData! as Api.Job.JobTask; const taskData = props.taskData! as Api.Job.JobTask;
const { data, error } = await fetchJobLogList({ const { data, error } = await fetchJobLogList(
taskBatchId: taskData.taskBatchId, {
jobId: taskData.jobId, taskBatchId: taskData.taskBatchId,
taskId: taskData.id, jobId: taskData.jobId,
startId, taskId: taskData.id,
fromIndex, startId,
size: 50 fromIndex,
}); size: 50
},
axiosController
);
logData = data; logData = data;
logError = error; logError = error;
} }
@ -86,7 +99,7 @@ async function getLogList() {
clearTimeout(interval.value); clearTimeout(interval.value);
interval.value = setTimeout(getLogList, syncTime.value * 1000); interval.value = setTimeout(getLogList, syncTime.value * 1000);
} }
} else { } else if (logError?.code !== 'ERR_CANCELED') {
stopLog(); stopLog();
} }
} }
@ -100,18 +113,18 @@ watch(
async val => { async val => {
if (val) { if (val) {
if (props.modelValue) { if (props.modelValue) {
logList.value = props.modelValue; logList.value = [...props.modelValue];
} }
} }
if ((val || !props.drawer) && props.type && props.taskData) { if ((val || !props.drawer) && props.type && props.taskData) {
finished.value = false; finished.value = false;
axiosController = new AbortController();
await getLogList(); await getLogList();
} }
if (!val && props.drawer) { if (!val && props.drawer) {
stopLog(); stopLog();
logList.value = [];
} }
}, },
{ immediate: true } { immediate: true }
@ -163,7 +176,7 @@ const handleSyncSelect = async (time: number) => {
} }
if (time === 0) { if (time === 0) {
stopLog(); pauseLog();
return; return;
} }

View File

@ -1,11 +1,12 @@
import { request } from '../request'; import { request } from '../request';
/** get Job Log List */ /** get Job Log List */
export function fetchJobLogList(params?: Api.JobLog.JobLogSearchParams) { export function fetchJobLogList(params?: Api.JobLog.JobLogSearchParams, controller?: AbortController) {
return request<Api.JobLog.JobLogList>({ return request<Api.JobLog.JobLogList>({
url: '/job/log/list', url: '/job/log/list',
method: 'get', method: 'get',
params params,
signal: controller?.signal
}); });
} }

View File

@ -135,6 +135,10 @@ export const request = createFlatRequest<App.Service.Response, RequestInstanceSt
return; return;
} }
if (error.code === 'ERR_CANCELED') {
return;
}
showErrorMsg(request.state, message); showErrorMsg(request.state, message);
} }
} }