feat(1.5.0)-beta1): 删除http方式的日志
This commit is contained in:
parent
3273674a05
commit
855fa80896
@ -16,7 +16,6 @@ import { defineComponent, nextTick, onBeforeUnmount, ref, watch } from 'vue';
|
||||
import { useRouter } from 'vue-router';
|
||||
import type { UseWebSocketReturn } from '@vueuse/core';
|
||||
import { useWebSocket } from '@vueuse/core';
|
||||
import { fetchJobLogList, fetchRetryLogList } from '@/service/api/log';
|
||||
import ButtonIcon from '@/components/custom/button-icon.vue';
|
||||
import { initWebSocketUrl } from '@/utils/websocket';
|
||||
import { generateRandomString } from '@/utils/common';
|
||||
@ -29,7 +28,7 @@ interface Props {
|
||||
title?: string;
|
||||
drawer?: boolean;
|
||||
type?: 'job' | 'retry';
|
||||
fetchType?: 'ws' | 'http';
|
||||
fetchType?: 'ws';
|
||||
taskData?: Api.Job.JobTask | Api.RetryTask.RetryTask;
|
||||
modelValue?: Api.JobLog.JobMessage[];
|
||||
}
|
||||
@ -55,10 +54,7 @@ const syncTime = ref(1);
|
||||
const logList = ref<Api.JobLog.JobMessage[]>([]);
|
||||
const websocket = ref<UseWebSocketReturn<any>>();
|
||||
const interval = ref<NodeJS.Timeout>();
|
||||
let controller = new AbortController();
|
||||
const finished = ref<boolean>(true);
|
||||
let startId = '0';
|
||||
let fromIndex: number = 0;
|
||||
|
||||
const pauseLog = () => {
|
||||
finished.value = true;
|
||||
@ -70,27 +66,11 @@ const stopLogByWs = () => {
|
||||
websocket.value?.close();
|
||||
};
|
||||
|
||||
const stopLogByHttp = async () => {
|
||||
if (!finished.value) controller.abort();
|
||||
pauseLog();
|
||||
startId = '0';
|
||||
fromIndex = 0;
|
||||
logList.value = [];
|
||||
};
|
||||
|
||||
const stopLog = () => {
|
||||
if (props.fetchType === 'http') {
|
||||
stopLogByHttp();
|
||||
return;
|
||||
}
|
||||
stopLogByWs();
|
||||
};
|
||||
|
||||
async function getLogList() {
|
||||
if (props.fetchType === 'http') {
|
||||
await getLogListByHttp();
|
||||
return;
|
||||
}
|
||||
getLogListByWs();
|
||||
}
|
||||
|
||||
@ -117,98 +97,6 @@ function getLogListByWs() {
|
||||
}
|
||||
}
|
||||
|
||||
async function getLogListByHttp() {
|
||||
clearTimeout(interval.value);
|
||||
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
|
||||
},
|
||||
controller
|
||||
);
|
||||
logData = data;
|
||||
logError = error;
|
||||
}
|
||||
|
||||
if (props.type === 'retry') {
|
||||
const taskData = props.taskData! as Api.RetryTask.RetryTask;
|
||||
const { data, error } = await fetchRetryLogList({
|
||||
groupName: taskData.groupName,
|
||||
retryTaskId: taskData.id!,
|
||||
startId,
|
||||
fromIndex,
|
||||
size: 50
|
||||
});
|
||||
logData = data;
|
||||
logError = error;
|
||||
}
|
||||
|
||||
if (!logError && logData) {
|
||||
finished.value = logData.finished || syncTime.value === 0;
|
||||
startId = logData.nextStartId;
|
||||
fromIndex = logData.fromIndex;
|
||||
if (logData.message) {
|
||||
logList.value.push(...logData.message);
|
||||
logList.value
|
||||
.sort((a, b) => Number.parseInt(a.time_stamp, 10) - Number.parseInt(b.time_stamp, 10))
|
||||
.forEach((item, index) => {
|
||||
item.index = index;
|
||||
if (!item.key) {
|
||||
item.key = `${item.time_stamp}-${generateRandomString(16)}`;
|
||||
}
|
||||
});
|
||||
}
|
||||
nextTick(() => {
|
||||
if (isAutoScroll.value) virtualListInst.value?.scrollTo({ position: 'bottom', debounce: true });
|
||||
});
|
||||
if (!finished.value && syncTime.value !== 0) {
|
||||
interval.value = setTimeout(getLogList, syncTime.value * 1000);
|
||||
}
|
||||
|
||||
if (finished.value && syncTime.value !== 0) {
|
||||
setTimeout(() => {
|
||||
watchFinished();
|
||||
}, 5 * 1000);
|
||||
}
|
||||
} else if (logError?.code !== 'ERR_CANCELED') {
|
||||
stopLog();
|
||||
}
|
||||
}
|
||||
|
||||
async function watchFinished() {
|
||||
clearTimeout(interval.value);
|
||||
if (props.type === 'job' && syncTime.value !== 0) {
|
||||
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
|
||||
},
|
||||
controller
|
||||
);
|
||||
if (!error && data) {
|
||||
if (data.finished) {
|
||||
interval.value = setTimeout(watchFinished, 5 * 1000);
|
||||
return;
|
||||
}
|
||||
await getLogList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onBeforeUnmount(() => {
|
||||
stopLog();
|
||||
});
|
||||
@ -230,7 +118,6 @@ watch(
|
||||
|
||||
if (((val && props.drawer) || !props.drawer) && props.type && props.taskData) {
|
||||
finished.value = false;
|
||||
controller = new AbortController();
|
||||
if (props.fetchType === 'ws') {
|
||||
let url: string | null = '';
|
||||
if (props.type === 'job') {
|
||||
@ -500,28 +387,6 @@ const SnailLogComponent = defineComponent({
|
||||
日志正在加载
|
||||
</NTooltip>
|
||||
<span class="ml-6px">{{ title }}</span>
|
||||
<NDropdown
|
||||
v-if="fetchType === 'http'"
|
||||
trigger="hover"
|
||||
:options="syncOptions"
|
||||
width="trigger"
|
||||
@select="handleSyncSelect"
|
||||
>
|
||||
<NTooltip placement="right">
|
||||
<template #trigger>
|
||||
<NButton dashed class="ml-16px w-136px" @click="handleSyncSelect(-1)">
|
||||
<template #icon>
|
||||
<div class="flex-center gap-8px">
|
||||
<icon-solar:refresh-outline class="text-18px" />
|
||||
{{ syncOptions.filter(item => item.key === syncTime)[0].label }}
|
||||
<SvgIcon icon="material-symbols:expand-more-rounded" />
|
||||
</div>
|
||||
</template>
|
||||
</NButton>
|
||||
</template>
|
||||
自动刷新频率
|
||||
</NTooltip>
|
||||
</NDropdown>
|
||||
</div>
|
||||
<div class="flex-center">
|
||||
<ButtonIcon
|
||||
|
@ -1,20 +0,0 @@
|
||||
import { request } from '../request';
|
||||
|
||||
/** get Job Log List */
|
||||
export function fetchJobLogList(params?: Api.JobLog.JobLogSearchParams, controller?: AbortController) {
|
||||
return request<Api.JobLog.JobLogList>({
|
||||
url: '/job/log/list',
|
||||
method: 'get',
|
||||
params,
|
||||
signal: controller?.signal
|
||||
});
|
||||
}
|
||||
|
||||
/** get Retry Log List */
|
||||
export function fetchRetryLogList(params?: Api.JobLog.RetryLogSearchParams) {
|
||||
return request<Api.JobLog.JobLogList>({
|
||||
url: '/retry-task/message/list',
|
||||
method: 'get',
|
||||
params
|
||||
});
|
||||
}
|
@ -29,17 +29,17 @@ function search() {
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<SearchForm btn-span="24 s:15 m:15 l:15 xl:15" :model="model" @search="search" @reset="reset">
|
||||
<NFormItemGi span="24 s:12 m:6" :label="$t('page.retryTask.groupName')" path="groupName" class="pr-24px">
|
||||
<SearchForm btn-span="24 s:1 m:1 l:1 xl:1" :model="model" @search="search" @reset="reset">
|
||||
<NFormItemGi span="24 s:12 m:8" :label="$t('page.retryTask.groupName')" path="groupName" class="pr-24px">
|
||||
<SelectGroup v-model:value="model.groupName" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="24 s:12 m:6" :label="$t('page.retryTask.sceneName')" path="sceneName" class="pr-24px">
|
||||
<NFormItemGi span="24 s:12 m:8" :label="$t('page.retryTask.sceneName')" path="sceneName" class="pr-24px">
|
||||
<SelectScene v-model:value="model.sceneName" :group-name="model.groupName as string" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="24 s:12 m:6" :label="$t('page.retryTask.retryId')" path="bizNo" class="pr-24px">
|
||||
<NFormItemGi span="24 s:12 m:8" :label="$t('page.retryTask.retryId')" path="bizNo" class="pr-24px">
|
||||
<NInput v-model:value="model.retryId" :placeholder="$t('page.retryTask.form.retryId')" clearable />
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="24 s:12 m:6" :label="$t('page.retry.retryStatus')" path="retryStatus" class="pr-24px">
|
||||
<NFormItemGi span="24 s:12 m:8" :label="$t('page.retry.retryStatus')" path="retryStatus" class="pr-24px">
|
||||
<NSelect
|
||||
v-model:value="model.taskStatus"
|
||||
:placeholder="$t('page.retry.form.retryStatus')"
|
||||
@ -48,7 +48,7 @@ function search() {
|
||||
/>
|
||||
</NFormItemGi>
|
||||
<NFormItemGi
|
||||
span="24 s:24 m:15 l:12 xl:9"
|
||||
span="24 s:24 m:14 l:12 xl:8"
|
||||
:label="$t('page.common.createTime')"
|
||||
path="datetimeRange"
|
||||
class="pr-24px"
|
||||
|
Loading…
Reference in New Issue
Block a user