From 94886e255e007dddc741e8d31f560805660139f4 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 24 Sep 2024 10:52:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E8=B7=9F=E8=B8=AA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=94=AF=E6=8C=81=E4=B8=8B=E8=BD=BDpcap?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/traceManage/task/analyze.vue | 50 +++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/views/traceManage/task/analyze.vue b/src/views/traceManage/task/analyze.vue index ad90b71b..9e055a31 100644 --- a/src/views/traceManage/task/analyze.vue +++ b/src/views/traceManage/task/analyze.vue @@ -2,6 +2,7 @@ import { onBeforeUnmount, ref, watch } from 'vue'; import { useRoute, useRouter } from 'vue-router'; import { PageContainer } from 'antdv-pro-layout'; +import { message, Modal } from 'ant-design-vue/lib'; import DissectionTree from '../tshark/components/DissectionTree.vue'; import DissectionDump from '../tshark/components/DissectionDump.vue'; import PacketTable from '../tshark/components/PacketTable.vue'; @@ -14,6 +15,7 @@ import { filePullTask } from '@/api/trace/task'; import { OptionsType, WS } from '@/plugins/ws-websocket'; import useI18n from '@/hooks/useI18n'; import useTabsStore from '@/store/modules/tabs'; +import saveAs from 'file-saver'; const route = useRoute(); const router = useRouter(); const tabsStore = useTabsStore(); @@ -42,6 +44,44 @@ function fnClose() { } } +/**下载触发等待 */ +let downLoading = ref(false); + +/**信息文件下载 */ +function fnDownloadFile() { + if (downLoading.value) return; + const fileName = `trace_${traceId.value}.pcap` + Modal.confirm({ + title: t('common.tipTitle'), + content: t('views.logManage.neFile.downTip', { fileName }), + onOk() { + downLoading.value = true; + const hide = message.loading(t('common.loading'), 0); + filePullTask(traceId.value) + .then(res => { + if (res.code === RESULT_CODE_SUCCESS) { + message.success({ + content: t('common.msgSuccess', { + msg: t('common.downloadText'), + }), + duration: 2, + }); + saveAs(res.data, `${fileName}`); + } else { + message.error({ + content: t('views.logManage.neFile.downTipErr'), + duration: 2, + }); + } + }) + .finally(() => { + hide(); + downLoading.value = false; + }); + }, + }); +} + /**获取PCAP文件 */ function fnFilePCAP() { filePullTask(traceId.value).then(res => { @@ -120,8 +160,16 @@ onBeforeUnmount(() => { {{ t('common.close') }} + + + {{ t('common.downloadText') }} + - 跟踪编号: + {{ t('views.traceManage.task.traceId') }}:  {{ traceId }}