style: 跟踪管理多语言

This commit is contained in:
TsMask
2023-09-26 15:05:58 +08:00
parent 61eea0ec90
commit c22ad4e8a3
11 changed files with 384 additions and 355 deletions

View File

@@ -161,7 +161,7 @@ export default {
neType: 'IMS Type', neType: 'IMS Type',
}, },
}, },
trace: { traceManage: {
analysis: { analysis: {
imsi: 'IMSI', imsi: 'IMSI',
imsiPlease: 'Please enter IMSI', imsiPlease: 'Please enter IMSI',
@@ -184,16 +184,29 @@ export default {
pcap: { pcap: {
cardTitle: 'PCAP capture', cardTitle: 'PCAP capture',
neType: 'Type', neType: 'Type',
neTypePlease: 'Please select the type of network element',
neIp: 'IP address', neIp: 'IP address',
capArg: 'Capture parameters', capArg: 'Capture parameters',
capArgPlease: 'Please enter tcpdump any support parameters!',
capTime: 'Duration in seconds', capTime: 'Duration in seconds',
capTimePlease: 'Please enter the duration, up to 120 seconds',
capLog: 'Execution Log', capLog: 'Execution Log',
capDownText: 'Download PCAP file', capDownText: 'Download PCAP file',
runText: 'Execute', runText: 'Execute',
runTimeText: 'Execute {s} seconds', runTimeText: 'Execute {s} seconds',
stopText: 'Interrupt', stopText: 'Interrupt',
capArgUPFPlease: 'Please enter the packet capture command supported by UPF',
capStart: 'Start capturing packets', capStart: 'Start capturing packets',
capStop: 'Stop capturing packets', capStop: 'Stop capturing packets',
execTimeout: 'Execution timeout',
execSuccess: 'Execution completed',
execFailed: 'Execution failed',
execBreak: 'break execution',
noFileName: 'Invalid file name',
execUPFStartA: 'Executed, please stop capturing packets according to the situation',
execUPFStart: 'Execution successful, please stop capturing packets according to the situation',
execUPFStopA: 'Stopped, please start capturing packets according to the situation',
execUPFStop: 'Execution successful, packet capture stopped',
}, },
task: { task: {
neTypePlease: 'Query network element type', neTypePlease: 'Query network element type',

View File

@@ -161,7 +161,7 @@ export default {
neType: 'IMS网元类型', neType: 'IMS网元类型',
}, },
}, },
trace: { traceManage: {
analysis: { analysis: {
imsi: 'IMSI', imsi: 'IMSI',
imsiPlease: '请输入IMSI', imsiPlease: '请输入IMSI',
@@ -184,16 +184,29 @@ export default {
pcap: { pcap: {
cardTitle: 'PCAP捕获', cardTitle: 'PCAP捕获',
neType: '网元类型', neType: '网元类型',
neTypePlease: '请选择网元类型',
neIp: '网元IP地址', neIp: '网元IP地址',
capArg: '抓包参数', capArg: '抓包参数',
capArgPlease: '请输入tcpdump any支持参数!',
capTime: "时长(秒's", capTime: "时长(秒's",
capTimePlease: '请输入持续时长最长120秒',
capLog: '执行日志', capLog: '执行日志',
capDownText: '下载PCAP文件', capDownText: '下载PCAP文件',
runText: '执行', runText: '执行',
runTimeText: '执行 {s} 秒', runTimeText: '执行 {s} 秒',
stopText: '中断', stopText: '中断',
capArgUPFPlease: '请输入UPF支持的抓包命令',
capStart: '开始抓包', capStart: '开始抓包',
capStop: '停止抓包', capStop: '停止抓包',
execTimeout: '执行超时',
execSuccess: '执行完成',
execFailed: '执行失败',
execBreak: '中断执行',
noFileName: '无效文件名',
execUPFStartA: '已经执行, 请根据情况停止抓包',
execUPFStart: '执行成功, 请根据情况停止抓包',
execUPFStopA: '已经停止, 请根据情况开始抓包',
execUPFStop: '执行成功, 抓包已停止',
}, },
task: { task: {
neTypePlease: '请选择网元类型', neTypePlease: '请选择网元类型',

View File

@@ -88,28 +88,28 @@ let tableColumns: ColumnsType = [
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neType'), title: t('views.traceManage.task.neType'),
dataIndex: 'neType', dataIndex: 'neType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neID'), title: t('views.traceManage.task.neID'),
dataIndex: 'neId', dataIndex: 'neId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'traceType', dataIndex: 'traceType',
key: 'traceType', key: 'traceType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'accountId', dataIndex: 'accountId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.startTime'), title: t('views.traceManage.task.startTime'),
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -118,7 +118,7 @@ let tableColumns: ColumnsType = [
}, },
}, },
{ {
title: t('views.trace.task.endTime'), title: t('views.traceManage.task.endTime'),
dataIndex: 'endTime', dataIndex: 'endTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -172,15 +172,15 @@ function fnTableSize({ key }: MenuInfo) {
*/ */
function fnRecordDelete(id: string) { function fnRecordDelete(id: string) {
Modal.confirm({ Modal.confirm({
title: t('views.trace.task.tipTitle'), title: t('views.traceManage.task.tipTitle'),
content: t('views.trace.task.delTaskTip', { num: id }), content: t('views.traceManage.task.delTaskTip', { num: id }),
onOk() { onOk() {
const key = 'delTraceTask'; const key = 'delTraceTask';
message.loading({ content: t('common.loading'), key }); message.loading({ content: t('common.loading'), key });
delTraceTask(id).then(res => { delTraceTask(id).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
message.success({ message.success({
content: t('views.trace.task.delTask', { num: id }), content: t('views.traceManage.task.delTask', { num: id }),
key, key,
duration: 2, duration: 2,
}); });
@@ -272,32 +272,32 @@ const modalStateFrom = Form.useForm(
traceType: [ traceType: [
{ {
required: true, required: true,
message: t('views.trace.task.trackTypePlease'), message: t('views.traceManage.task.trackTypePlease'),
}, },
], ],
neId: [ neId: [
{ {
required: true, required: true,
message: t('views.trace.task.neTypePlease'), message: t('views.traceManage.task.neTypePlease'),
}, },
], ],
endTime: [ endTime: [
{ {
required: true, required: true,
message: t('views.trace.task.rangePickerPlease'), message: t('views.traceManage.task.rangePickerPlease'),
}, },
], ],
// 跟踪用户 // 跟踪用户
imsi: [ imsi: [
{ {
required: true, required: true,
message: t('views.trace.task.imsiPlease'), message: t('views.traceManage.task.imsiPlease'),
}, },
], ],
msisdn: [ msisdn: [
{ {
required: true, required: true,
message: t('views.trace.task.msisdnPlease'), message: t('views.traceManage.task.msisdnPlease'),
}, },
], ],
// 跟踪接口 // 跟踪接口
@@ -305,27 +305,27 @@ const modalStateFrom = Form.useForm(
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.srcIpPlease'), message: t('views.traceManage.task.srcIpPlease'),
}, },
], ],
dstIp: [ dstIp: [
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.dstIpPlease'), message: t('views.traceManage.task.dstIpPlease'),
}, },
], ],
interfaces: [ interfaces: [
{ {
required: true, required: true,
message: t('views.trace.task.interfacesPlease'), message: t('views.traceManage.task.interfacesPlease'),
}, },
], ],
signalPort: [ signalPort: [
{ {
required: true, required: true,
pattern: regExpPort, pattern: regExpPort,
message: t('views.trace.task.signalPortPlease'), message: t('views.traceManage.task.signalPortPlease'),
}, },
], ],
}) })
@@ -392,10 +392,10 @@ function fnModalVisibleByVive(id: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.viewTask'); modalState.title = t('views.traceManage.task.viewTask');
modalState.visibleByView = true; modalState.visibleByView = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -407,7 +407,7 @@ function fnModalVisibleByVive(id: string) {
function fnModalVisibleByEdit(id?: string) { function fnModalVisibleByEdit(id?: string) {
if (!id) { if (!id) {
modalStateFrom.resetFields(); modalStateFrom.resetFields();
modalState.title = t('views.trace.task.addTask'); modalState.title = t('views.traceManage.task.addTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
if (modalState.confirmLoading) return; if (modalState.confirmLoading) return;
@@ -430,10 +430,10 @@ function fnModalVisibleByEdit(id?: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.editTask'); modalState.title = t('views.traceManage.task.editTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -532,12 +532,12 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal"> <a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType "> <a-form-item :label="t('views.traceManage.task.neType')" name="neType ">
<a-auto-complete <a-auto-complete
v-model:value="queryParams.neType" v-model:value="queryParams.neType"
:options="useNeInfoStore().getNeSelectOtions" :options="useNeInfoStore().getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -674,7 +674,7 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
> >
<DictTag <DictTag
@@ -684,7 +684,7 @@ onMounted(() => {
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType"> <a-form-item :label="t('views.traceManage.task.neType')" name="neType">
<a-cascader <a-cascader
:value="modalState.neType" :value="modalState.neType"
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@@ -696,10 +696,10 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item :label="t('views.trace.task.msisdn')" name="msisdn"> <a-form-item :label="t('views.traceManage.task.msisdn')" name="msisdn">
{{ modalState.from.msisdn }} {{ modalState.from.msisdn }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.imsi')" name="imsi"> <a-form-item :label="t('views.traceManage.task.imsi')" name="imsi">
{{ modalState.from.imsi }} {{ modalState.from.imsi }}
</a-form-item> </a-form-item>
</template> </template>
@@ -708,25 +708,25 @@ onMounted(() => {
<template v-if="modalState.from.traceType === 'Interface'"> <template v-if="modalState.from.traceType === 'Interface'">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.srcIp')" name="srcIp"> <a-form-item :label="t('views.traceManage.task.srcIp')" name="srcIp">
{{ modalState.from.srcIp }} {{ modalState.from.srcIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.dstIp')" name="dstIp"> <a-form-item :label="t('views.traceManage.task.dstIp')" name="dstIp">
{{ modalState.from.dstIp }} {{ modalState.from.dstIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-form-item :label="t('views.trace.task.interfaces')" name="endTime"> <a-form-item :label="t('views.traceManage.task.interfaces')" name="endTime">
{{ modalState.neTypeInterfaceSelect }} {{ modalState.neTypeInterfaceSelect }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.signalPort')" name="endTime"> <a-form-item :label="t('views.traceManage.task.signalPort')" name="endTime">
{{ modalState.from.signalPort }} {{ modalState.from.signalPort }}
</a-form-item> </a-form-item>
</template> </template>
<a-form-item :label="t('views.trace.task.rangePicker')" name="endTime"> <a-form-item :label="t('views.traceManage.task.rangePicker')" name="endTime">
<a-range-picker <a-range-picker
disabled disabled
:value="modalState.timeRangePicker" :value="modalState.timeRangePicker"
@@ -738,7 +738,7 @@ onMounted(() => {
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
{{ modalState.from.comment }} {{ modalState.from.comment }}
</a-form-item> </a-form-item>
</a-form> </a-form>
@@ -764,13 +764,13 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
v-bind="modalStateFrom.validateInfos.traceType" v-bind="modalStateFrom.validateInfos.traceType"
> >
<a-select <a-select
v-model:value="modalState.from.traceType" v-model:value="modalState.from.traceType"
:placeholder="t('views.trace.task.trackTypePlease')" :placeholder="t('views.traceManage.task.trackTypePlease')"
:options="dict.traceType" :options="dict.traceType"
> >
</a-select> </a-select>
@@ -778,7 +778,7 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.neType')" :label="t('views.traceManage.task.neType')"
name="neType" name="neType"
v-bind="modalStateFrom.validateInfos.neId" v-bind="modalStateFrom.validateInfos.neId"
> >
@@ -787,7 +787,7 @@ onMounted(() => {
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -796,19 +796,19 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item <a-form-item
:label="t('views.trace.task.msisdn')" :label="t('views.traceManage.task.msisdn')"
name="msisdn" name="msisdn"
v-bind="modalStateFrom.validateInfos.msisdn" v-bind="modalStateFrom.validateInfos.msisdn"
> >
<a-input <a-input
v-model:value="modalState.from.msisdn" v-model:value="modalState.from.msisdn"
allow-clear allow-clear
:placeholder="t('views.trace.task.msisdnPlease')" :placeholder="t('views.traceManage.task.msisdnPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.msisdnTip') }}</div> <div>{{ t('views.traceManage.task.msisdnTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -816,19 +816,19 @@ onMounted(() => {
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.imsi')" :label="t('views.traceManage.task.imsi')"
name="imsi" name="imsi"
v-bind="modalStateFrom.validateInfos.imsi" v-bind="modalStateFrom.validateInfos.imsi"
> >
<a-input <a-input
v-model:value="modalState.from.imsi" v-model:value="modalState.from.imsi"
allow-clear allow-clear
:placeholder="t('views.trace.task.imsiPlease')" :placeholder="t('views.traceManage.task.imsiPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.imsiTip') }}</div> <div>{{ t('views.traceManage.task.imsiTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -842,19 +842,19 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.srcIp')" :label="t('views.traceManage.task.srcIp')"
name="srcIp" name="srcIp"
v-bind="modalStateFrom.validateInfos.srcIp" v-bind="modalStateFrom.validateInfos.srcIp"
> >
<a-input <a-input
v-model:value="modalState.from.srcIp" v-model:value="modalState.from.srcIp"
allow-clear allow-clear
placeholder="t('views.trace.task.srcIpPlease')" placeholder="t('views.traceManage.task.srcIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.srcIpTip') }}</div> <div>{{ t('views.traceManage.task.srcIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -864,19 +864,19 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.dstIp')" :label="t('views.traceManage.task.dstIp')"
name="dstIp" name="dstIp"
v-bind="modalStateFrom.validateInfos.dstIp" v-bind="modalStateFrom.validateInfos.dstIp"
> >
<a-input <a-input
v-model:value="modalState.from.dstIp" v-model:value="modalState.from.dstIp"
allow-clear allow-clear
:placeholder="t('views.trace.task.dstIpPlease')" :placeholder="t('views.traceManage.task.dstIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.dstIpTip') }}</div> <div>{{ t('views.traceManage.task.dstIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -886,7 +886,7 @@ onMounted(() => {
</a-col> </a-col>
</a-row> </a-row>
<a-form-item <a-form-item
:label="t('views.trace.task.interfaces')" :label="t('views.traceManage.task.interfaces')"
name="interfaces" name="interfaces"
v-bind="modalStateFrom.validateInfos.interfaces" v-bind="modalStateFrom.validateInfos.interfaces"
> >
@@ -900,19 +900,19 @@ onMounted(() => {
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.signalPort')" :label="t('views.traceManage.task.signalPort')"
name="signalPort" name="signalPort"
v-bind="modalStateFrom.validateInfos.signalPort" v-bind="modalStateFrom.validateInfos.signalPort"
> >
<a-input <a-input
v-model:value="modalState.from.signalPort" v-model:value="modalState.from.signalPort"
allow-clear allow-clear
:placeholder="t('views.trace.task.signalPortPlease')" :placeholder="t('views.traceManage.task.signalPortPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>t('views.trace.task.signalPortTip')</div> <div>t('views.traceManage.task.signalPortTip')</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -922,7 +922,7 @@ onMounted(() => {
</template> </template>
<a-form-item <a-form-item
:label="t('views.trace.task.rangePicker')" :label="t('views.traceManage.task.rangePicker')"
name="endTime" name="endTime"
v-bind="modalStateFrom.validateInfos.endTime" v-bind="modalStateFrom.validateInfos.endTime"
> >
@@ -935,19 +935,19 @@ onMounted(() => {
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
:placeholder="[ :placeholder="[
t('views.trace.task.startTime'), t('views.traceManage.task.startTime'),
t('views.trace.task.endTime'), t('views.traceManage.task.endTime'),
]" ]"
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
<a-textarea <a-textarea
v-model:value="modalState.from.comment" v-model:value="modalState.from.comment"
:auto-size="{ minRows: 2, maxRows: 6 }" :auto-size="{ minRows: 2, maxRows: 6 }"
:maxlength="250" :maxlength="250"
:show-count="true" :show-count="true"
:placeholder="t('views.trace.task.commentPlease')" :placeholder="t('views.traceManage.task.commentPlease')"
/> />
</a-form-item> </a-form-item>
</a-form> </a-form>

View File

@@ -88,28 +88,28 @@ let tableColumns: ColumnsType = [
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neType'), title: t('views.traceManage.task.neType'),
dataIndex: 'neType', dataIndex: 'neType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neID'), title: t('views.traceManage.task.neID'),
dataIndex: 'neId', dataIndex: 'neId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'traceType', dataIndex: 'traceType',
key: 'traceType', key: 'traceType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'accountId', dataIndex: 'accountId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.startTime'), title: t('views.traceManage.task.startTime'),
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -118,7 +118,7 @@ let tableColumns: ColumnsType = [
}, },
}, },
{ {
title: t('views.trace.task.endTime'), title: t('views.traceManage.task.endTime'),
dataIndex: 'endTime', dataIndex: 'endTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -172,15 +172,15 @@ function fnTableSize({ key }: MenuInfo) {
*/ */
function fnRecordDelete(id: string) { function fnRecordDelete(id: string) {
Modal.confirm({ Modal.confirm({
title: t('views.trace.task.tipTitle'), title: t('views.traceManage.task.tipTitle'),
content: t('views.trace.task.delTaskTip', { num: id }), content: t('views.traceManage.task.delTaskTip', { num: id }),
onOk() { onOk() {
const key = 'delTraceTask'; const key = 'delTraceTask';
message.loading({ content: t('common.loading'), key }); message.loading({ content: t('common.loading'), key });
delTraceTask(id).then(res => { delTraceTask(id).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
message.success({ message.success({
content: t('views.trace.task.delTask', { num: id }), content: t('views.traceManage.task.delTask', { num: id }),
key, key,
duration: 2, duration: 2,
}); });
@@ -272,32 +272,32 @@ const modalStateFrom = Form.useForm(
traceType: [ traceType: [
{ {
required: true, required: true,
message: t('views.trace.task.trackTypePlease'), message: t('views.traceManage.task.trackTypePlease'),
}, },
], ],
neId: [ neId: [
{ {
required: true, required: true,
message: t('views.trace.task.neTypePlease'), message: t('views.traceManage.task.neTypePlease'),
}, },
], ],
endTime: [ endTime: [
{ {
required: true, required: true,
message: t('views.trace.task.rangePickerPlease'), message: t('views.traceManage.task.rangePickerPlease'),
}, },
], ],
// 跟踪用户 // 跟踪用户
imsi: [ imsi: [
{ {
required: true, required: true,
message: t('views.trace.task.imsiPlease'), message: t('views.traceManage.task.imsiPlease'),
}, },
], ],
msisdn: [ msisdn: [
{ {
required: true, required: true,
message: t('views.trace.task.msisdnPlease'), message: t('views.traceManage.task.msisdnPlease'),
}, },
], ],
// 跟踪接口 // 跟踪接口
@@ -305,27 +305,27 @@ const modalStateFrom = Form.useForm(
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.srcIpPlease'), message: t('views.traceManage.task.srcIpPlease'),
}, },
], ],
dstIp: [ dstIp: [
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.dstIpPlease'), message: t('views.traceManage.task.dstIpPlease'),
}, },
], ],
interfaces: [ interfaces: [
{ {
required: true, required: true,
message: t('views.trace.task.interfacesPlease'), message: t('views.traceManage.task.interfacesPlease'),
}, },
], ],
signalPort: [ signalPort: [
{ {
required: true, required: true,
pattern: regExpPort, pattern: regExpPort,
message: t('views.trace.task.signalPortPlease'), message: t('views.traceManage.task.signalPortPlease'),
}, },
], ],
}) })
@@ -392,10 +392,10 @@ function fnModalVisibleByVive(id: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.viewTask'); modalState.title = t('views.traceManage.task.viewTask');
modalState.visibleByView = true; modalState.visibleByView = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -407,7 +407,7 @@ function fnModalVisibleByVive(id: string) {
function fnModalVisibleByEdit(id?: string) { function fnModalVisibleByEdit(id?: string) {
if (!id) { if (!id) {
modalStateFrom.resetFields(); modalStateFrom.resetFields();
modalState.title = t('views.trace.task.addTask'); modalState.title = t('views.traceManage.task.addTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
if (modalState.confirmLoading) return; if (modalState.confirmLoading) return;
@@ -430,10 +430,10 @@ function fnModalVisibleByEdit(id?: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.editTask'); modalState.title = t('views.traceManage.task.editTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -532,12 +532,12 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal"> <a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType "> <a-form-item :label="t('views.traceManage.task.neType')" name="neType ">
<a-auto-complete <a-auto-complete
v-model:value="queryParams.neType" v-model:value="queryParams.neType"
:options="useNeInfoStore().getNeSelectOtions" :options="useNeInfoStore().getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -674,7 +674,7 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
> >
<DictTag <DictTag
@@ -684,7 +684,7 @@ onMounted(() => {
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType"> <a-form-item :label="t('views.traceManage.task.neType')" name="neType">
<a-cascader <a-cascader
:value="modalState.neType" :value="modalState.neType"
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@@ -696,10 +696,10 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item :label="t('views.trace.task.msisdn')" name="msisdn"> <a-form-item :label="t('views.traceManage.task.msisdn')" name="msisdn">
{{ modalState.from.msisdn }} {{ modalState.from.msisdn }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.imsi')" name="imsi"> <a-form-item :label="t('views.traceManage.task.imsi')" name="imsi">
{{ modalState.from.imsi }} {{ modalState.from.imsi }}
</a-form-item> </a-form-item>
</template> </template>
@@ -708,25 +708,25 @@ onMounted(() => {
<template v-if="modalState.from.traceType === 'Interface'"> <template v-if="modalState.from.traceType === 'Interface'">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.srcIp')" name="srcIp"> <a-form-item :label="t('views.traceManage.task.srcIp')" name="srcIp">
{{ modalState.from.srcIp }} {{ modalState.from.srcIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.dstIp')" name="dstIp"> <a-form-item :label="t('views.traceManage.task.dstIp')" name="dstIp">
{{ modalState.from.dstIp }} {{ modalState.from.dstIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-form-item :label="t('views.trace.task.interfaces')" name="endTime"> <a-form-item :label="t('views.traceManage.task.interfaces')" name="endTime">
{{ modalState.neTypeInterfaceSelect }} {{ modalState.neTypeInterfaceSelect }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.signalPort')" name="endTime"> <a-form-item :label="t('views.traceManage.task.signalPort')" name="endTime">
{{ modalState.from.signalPort }} {{ modalState.from.signalPort }}
</a-form-item> </a-form-item>
</template> </template>
<a-form-item :label="t('views.trace.task.rangePicker')" name="endTime"> <a-form-item :label="t('views.traceManage.task.rangePicker')" name="endTime">
<a-range-picker <a-range-picker
disabled disabled
:value="modalState.timeRangePicker" :value="modalState.timeRangePicker"
@@ -738,7 +738,7 @@ onMounted(() => {
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
{{ modalState.from.comment }} {{ modalState.from.comment }}
</a-form-item> </a-form-item>
</a-form> </a-form>
@@ -764,13 +764,13 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
v-bind="modalStateFrom.validateInfos.traceType" v-bind="modalStateFrom.validateInfos.traceType"
> >
<a-select <a-select
v-model:value="modalState.from.traceType" v-model:value="modalState.from.traceType"
:placeholder="t('views.trace.task.trackTypePlease')" :placeholder="t('views.traceManage.task.trackTypePlease')"
:options="dict.traceType" :options="dict.traceType"
> >
</a-select> </a-select>
@@ -778,7 +778,7 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.neType')" :label="t('views.traceManage.task.neType')"
name="neType" name="neType"
v-bind="modalStateFrom.validateInfos.neId" v-bind="modalStateFrom.validateInfos.neId"
> >
@@ -787,7 +787,7 @@ onMounted(() => {
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -796,19 +796,19 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item <a-form-item
:label="t('views.trace.task.msisdn')" :label="t('views.traceManage.task.msisdn')"
name="msisdn" name="msisdn"
v-bind="modalStateFrom.validateInfos.msisdn" v-bind="modalStateFrom.validateInfos.msisdn"
> >
<a-input <a-input
v-model:value="modalState.from.msisdn" v-model:value="modalState.from.msisdn"
allow-clear allow-clear
:placeholder="t('views.trace.task.msisdnPlease')" :placeholder="t('views.traceManage.task.msisdnPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.msisdnTip') }}</div> <div>{{ t('views.traceManage.task.msisdnTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -816,19 +816,19 @@ onMounted(() => {
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.imsi')" :label="t('views.traceManage.task.imsi')"
name="imsi" name="imsi"
v-bind="modalStateFrom.validateInfos.imsi" v-bind="modalStateFrom.validateInfos.imsi"
> >
<a-input <a-input
v-model:value="modalState.from.imsi" v-model:value="modalState.from.imsi"
allow-clear allow-clear
:placeholder="t('views.trace.task.imsiPlease')" :placeholder="t('views.traceManage.task.imsiPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.imsiTip') }}</div> <div>{{ t('views.traceManage.task.imsiTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -842,19 +842,19 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.srcIp')" :label="t('views.traceManage.task.srcIp')"
name="srcIp" name="srcIp"
v-bind="modalStateFrom.validateInfos.srcIp" v-bind="modalStateFrom.validateInfos.srcIp"
> >
<a-input <a-input
v-model:value="modalState.from.srcIp" v-model:value="modalState.from.srcIp"
allow-clear allow-clear
placeholder="t('views.trace.task.srcIpPlease')" placeholder="t('views.traceManage.task.srcIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.srcIpTip') }}</div> <div>{{ t('views.traceManage.task.srcIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -864,19 +864,19 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.dstIp')" :label="t('views.traceManage.task.dstIp')"
name="dstIp" name="dstIp"
v-bind="modalStateFrom.validateInfos.dstIp" v-bind="modalStateFrom.validateInfos.dstIp"
> >
<a-input <a-input
v-model:value="modalState.from.dstIp" v-model:value="modalState.from.dstIp"
allow-clear allow-clear
:placeholder="t('views.trace.task.dstIpPlease')" :placeholder="t('views.traceManage.task.dstIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.dstIpTip') }}</div> <div>{{ t('views.traceManage.task.dstIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -886,7 +886,7 @@ onMounted(() => {
</a-col> </a-col>
</a-row> </a-row>
<a-form-item <a-form-item
:label="t('views.trace.task.interfaces')" :label="t('views.traceManage.task.interfaces')"
name="interfaces" name="interfaces"
v-bind="modalStateFrom.validateInfos.interfaces" v-bind="modalStateFrom.validateInfos.interfaces"
> >
@@ -900,19 +900,19 @@ onMounted(() => {
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.signalPort')" :label="t('views.traceManage.task.signalPort')"
name="signalPort" name="signalPort"
v-bind="modalStateFrom.validateInfos.signalPort" v-bind="modalStateFrom.validateInfos.signalPort"
> >
<a-input <a-input
v-model:value="modalState.from.signalPort" v-model:value="modalState.from.signalPort"
allow-clear allow-clear
:placeholder="t('views.trace.task.signalPortPlease')" :placeholder="t('views.traceManage.task.signalPortPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>t('views.trace.task.signalPortTip')</div> <div>t('views.traceManage.task.signalPortTip')</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -922,7 +922,7 @@ onMounted(() => {
</template> </template>
<a-form-item <a-form-item
:label="t('views.trace.task.rangePicker')" :label="t('views.traceManage.task.rangePicker')"
name="endTime" name="endTime"
v-bind="modalStateFrom.validateInfos.endTime" v-bind="modalStateFrom.validateInfos.endTime"
> >
@@ -935,19 +935,19 @@ onMounted(() => {
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
:placeholder="[ :placeholder="[
t('views.trace.task.startTime'), t('views.traceManage.task.startTime'),
t('views.trace.task.endTime'), t('views.traceManage.task.endTime'),
]" ]"
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
<a-textarea <a-textarea
v-model:value="modalState.from.comment" v-model:value="modalState.from.comment"
:auto-size="{ minRows: 2, maxRows: 6 }" :auto-size="{ minRows: 2, maxRows: 6 }"
:maxlength="250" :maxlength="250"
:show-count="true" :show-count="true"
:placeholder="t('views.trace.task.commentPlease')" :placeholder="t('views.traceManage.task.commentPlease')"
/> />
</a-form-item> </a-form-item>
</a-form> </a-form>

View File

@@ -273,7 +273,7 @@ onMounted(() => {
<template> <template>
<PageContainer> <PageContainer>
<a-card :title="t('views.trace.pcap.cardTitle')"> <a-card :title="t('views.traceManage.pcap.cardTitle')">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form <a-form
@@ -284,7 +284,7 @@ onMounted(() => {
:label-col="{ span: 5 }" :label-col="{ span: 5 }"
labelWrap labelWrap
> >
<a-form-item :label="t('views.trace.pcap.neType')" name="neType"> <a-form-item :label="t('views.traceManage.pcap.neType')" name="neType">
<a-cascader <a-cascader
v-model:value="modalState.neType" v-model:value="modalState.neType"
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@@ -293,13 +293,13 @@ onMounted(() => {
placeholder="请选择网元" placeholder="请选择网元"
/> />
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.pcap.neIp')" name="ip"> <a-form-item :label="t('views.traceManage.pcap.neIp')" name="ip">
<span style="font-weight: bold">{{ modalState.from.ip }}</span> <span style="font-weight: bold">{{ modalState.from.ip }}</span>
</a-form-item> </a-form-item>
<template v-if="modalState.neType[0] === 'UPF'"> <template v-if="modalState.neType[0] === 'UPF'">
<a-form-item <a-form-item
:label="t('views.trace.pcap.capStart')" :label="t('views.traceManage.pcap.capStart')"
name="upfStart" name="upfStart"
v-bind="modalStateFrom.validateInfos.upfStart" v-bind="modalStateFrom.validateInfos.upfStart"
> >
@@ -317,12 +317,12 @@ onMounted(() => {
:loading="modalState.confirmLoading" :loading="modalState.confirmLoading"
@click.prevent="fnUPF('start')" @click.prevent="fnUPF('start')"
> >
{{ t('views.trace.pcap.runText') }} {{ t('views.traceManage.pcap.runText') }}
</a-button> </a-button>
</a-input-group> </a-input-group>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.pcap.capStop')" :label="t('views.traceManage.pcap.capStop')"
name="upfStop" name="upfStop"
v-bind="modalStateFrom.validateInfos.upfStop" v-bind="modalStateFrom.validateInfos.upfStop"
> >
@@ -340,14 +340,14 @@ onMounted(() => {
:loading="modalState.confirmLoading" :loading="modalState.confirmLoading"
@click.prevent="fnUPF('stop')" @click.prevent="fnUPF('stop')"
> >
{{ t('views.trace.pcap.runText') }} {{ t('views.traceManage.pcap.runText') }}
</a-button> </a-button>
</a-input-group> </a-input-group>
</a-form-item> </a-form-item>
</template> </template>
<template v-else> <template v-else>
<a-form-item <a-form-item
:label="t('views.trace.pcap.capArg')" :label="t('views.traceManage.pcap.capArg')"
name="cmd" name="cmd"
v-bind="modalStateFrom.validateInfos.cmd" v-bind="modalStateFrom.validateInfos.cmd"
> >
@@ -359,7 +359,7 @@ onMounted(() => {
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.pcap.capTime')" :label="t('views.traceManage.pcap.capTime')"
name="timeout" name="timeout"
v-bind="modalStateFrom.validateInfos.timeout" v-bind="modalStateFrom.validateInfos.timeout"
> >
@@ -381,8 +381,8 @@ onMounted(() => {
<template #icon><ApiOutlined /></template> <template #icon><ApiOutlined /></template>
{{ {{
runTime != 0 runTime != 0
? t('views.trace.pcap.runTimeText', { s: runTime }) ? t('views.traceManage.pcap.runTimeText', { s: runTime })
: t('views.trace.pcap.runText') : t('views.traceManage.pcap.runText')
}} }}
</a-button> </a-button>
<a-button <a-button
@@ -391,7 +391,7 @@ onMounted(() => {
:disabled="!modalState.confirmLoading" :disabled="!modalState.confirmLoading"
@click.prevent="fnStop" @click.prevent="fnStop"
> >
{{ t('views.trace.pcap.stopText') }} {{ t('views.traceManage.pcap.stopText') }}
</a-button> </a-button>
</a-space> </a-space>
</a-form-item> </a-form-item>
@@ -401,7 +401,7 @@ onMounted(() => {
<a-col :offset="2" :lg="10" :md="10" :xs="24"> <a-col :offset="2" :lg="10" :md="10" :xs="24">
<a-form layout="vertical" autocomplete="off"> <a-form layout="vertical" autocomplete="off">
<a-form-item <a-form-item
:label="t('views.trace.pcap.capLog')" :label="t('views.traceManage.pcap.capLog')"
name="execLogMsg" name="execLogMsg"
v-show="!!modalState.execLogMsg" v-show="!!modalState.execLogMsg"
> >
@@ -419,7 +419,7 @@ onMounted(() => {
@click.prevent="fnDownPCAP" @click.prevent="fnDownPCAP"
> >
<template #icon><DownloadOutlined /></template> <template #icon><DownloadOutlined /></template>
{{ t('views.trace.pcap.capDownText') }} {{ t('views.traceManage.pcap.capDownText') }}
</a-button> </a-button>
</a-form-item> </a-form-item>
</a-form> </a-form>

View File

@@ -64,47 +64,47 @@ let tableState: TabeStateType = reactive({
/**表格字段列 */ /**表格字段列 */
let tableColumns: ColumnsType = [ let tableColumns: ColumnsType = [
{ {
title: t('views.trace.analysis.trackTaskId'), title: t('views.traceManage.analysis.trackTaskId'),
dataIndex: 'taskId', dataIndex: 'taskId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.imsi'), title: t('views.traceManage.analysis.imsi'),
dataIndex: 'imsi', dataIndex: 'imsi',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msisdn'), title: t('views.traceManage.analysis.msisdn'),
dataIndex: 'msisdn', dataIndex: 'msisdn',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.srcIp'), title: t('views.traceManage.analysis.srcIp'),
dataIndex: 'srcAddr', dataIndex: 'srcAddr',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.dstIp'), title: t('views.traceManage.analysis.dstIp'),
dataIndex: 'dstAddr', dataIndex: 'dstAddr',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.signalType'), title: t('views.traceManage.analysis.signalType'),
dataIndex: 'ifType', dataIndex: 'ifType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msgType'), title: t('views.traceManage.analysis.msgType'),
dataIndex: 'msgType', dataIndex: 'msgType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msgDirect'), title: t('views.traceManage.analysis.msgDirect'),
dataIndex: 'msgDirect', dataIndex: 'msgDirect',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.rowTime'), title: t('views.traceManage.analysis.rowTime'),
dataIndex: 'timestamp', dataIndex: 'timestamp',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -215,10 +215,10 @@ function fnModalVisible(row: Record<string, any>) {
modalState.from.rawDataHTML = withoutHiddenElements; modalState.from.rawDataHTML = withoutHiddenElements;
modalState.from.downBtn = true; modalState.from.downBtn = true;
} else { } else {
modalState.from.rawDataHTML = t('views.trace.analysis.noData'); modalState.from.rawDataHTML = t('views.traceManage.analysis.noData');
} }
}); });
modalState.title = t('views.trace.analysis.taskTitle', { num: row.imsi }); modalState.title = t('views.traceManage.analysis.taskTitle', { num: row.imsi });
modalState.visible = true; modalState.visible = true;
} }
@@ -293,7 +293,7 @@ function convertToReadableFormat(hexString: string) {
function fnDownloadFile() { function fnDownloadFile() {
Modal.confirm({ Modal.confirm({
title: t('common.tipTitle'), title: t('common.tipTitle'),
content: t('views.trace.analysis.taskDownTip'), content: t('views.traceManage.analysis.taskDownTip'),
onOk() { onOk() {
const blob = new Blob([modalState.from.rawDataHTML], { const blob = new Blob([modalState.from.rawDataHTML], {
type: 'text/plain', type: 'text/plain',
@@ -321,25 +321,25 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item <a-form-item
:placeholder="t('views.trace.analysis.imsi')" :placeholder="t('views.traceManage.analysis.imsi')"
name="imsi" name="imsi"
> >
<a-input <a-input
v-model:value="queryParams.imsi" v-model:value="queryParams.imsi"
:allow-clear="true" :allow-clear="true"
:placeholder="t('views.trace.analysis.imsiPlease')" :placeholder="t('views.traceManage.analysis.imsiPlease')"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item <a-form-item
:placeholder="t('views.trace.analysis.msisdn')" :placeholder="t('views.traceManage.analysis.msisdn')"
name="imsi" name="imsi"
> >
<a-input <a-input
v-model:value="queryParams.msisdn" v-model:value="queryParams.msisdn"
:allow-clear="true" :allow-clear="true"
:placeholder="t('views.trace.analysis.msisdnPlease')" :placeholder="t('views.traceManage.analysis.msisdnPlease')"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -443,7 +443,7 @@ onMounted(() => {
:visible="modalState.visible" :visible="modalState.visible"
@cancel="fnModalVisibleClose" @cancel="fnModalVisibleClose"
> >
<div class="raw-title">{{ t('views.trace.analysis.signalData') }}</div> <div class="raw-title">{{ t('views.traceManage.analysis.signalData') }}</div>
<a-row <a-row
class="raw" class="raw"
:gutter="16" :gutter="16"
@@ -456,7 +456,7 @@ onMounted(() => {
</a-row> </a-row>
<a-divider /> <a-divider />
<div class="raw-title"> <div class="raw-title">
{{ t('views.trace.analysis.signalDetail') }} {{ t('views.traceManage.analysis.signalDetail') }}
<a-button <a-button
type="dashed" type="dashed"
size="small" size="small"
@@ -466,7 +466,7 @@ onMounted(() => {
<template #icon> <template #icon>
<DownloadOutlined /> <DownloadOutlined />
</template> </template>
{{ t('views.trace.analysis.taskDownText') }} {{ t('views.traceManage.analysis.taskDownText') }}
</a-button> </a-button>
</div> </div>
<div class="raw-html" v-html="modalState.from.rawDataHTML"></div> <div class="raw-html" v-html="modalState.from.rawDataHTML"></div>

View File

@@ -88,28 +88,28 @@ let tableColumns: ColumnsType = [
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neType'), title: t('views.traceManage.task.neType'),
dataIndex: 'neType', dataIndex: 'neType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neID'), title: t('views.traceManage.task.neID'),
dataIndex: 'neId', dataIndex: 'neId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'traceType', dataIndex: 'traceType',
key: 'traceType', key: 'traceType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'accountId', dataIndex: 'accountId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.startTime'), title: t('views.traceManage.task.startTime'),
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -118,7 +118,7 @@ let tableColumns: ColumnsType = [
}, },
}, },
{ {
title: t('views.trace.task.endTime'), title: t('views.traceManage.task.endTime'),
dataIndex: 'endTime', dataIndex: 'endTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -172,15 +172,15 @@ function fnTableSize({ key }: MenuInfo) {
*/ */
function fnRecordDelete(id: string) { function fnRecordDelete(id: string) {
Modal.confirm({ Modal.confirm({
title: t('views.trace.task.tipTitle'), title: t('views.traceManage.task.tipTitle'),
content: t('views.trace.task.delTaskTip', { num: id }), content: t('views.traceManage.task.delTaskTip', { num: id }),
onOk() { onOk() {
const key = 'delTraceTask'; const key = 'delTraceTask';
message.loading({ content: t('common.loading'), key }); message.loading({ content: t('common.loading'), key });
delTraceTask(id).then(res => { delTraceTask(id).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
message.success({ message.success({
content: t('views.trace.task.delTask', { num: id }), content: t('views.traceManage.task.delTask', { num: id }),
key, key,
duration: 2, duration: 2,
}); });
@@ -272,32 +272,32 @@ const modalStateFrom = Form.useForm(
traceType: [ traceType: [
{ {
required: true, required: true,
message: t('views.trace.task.trackTypePlease'), message: t('views.traceManage.task.trackTypePlease'),
}, },
], ],
neId: [ neId: [
{ {
required: true, required: true,
message: t('views.trace.task.neTypePlease'), message: t('views.traceManage.task.neTypePlease'),
}, },
], ],
endTime: [ endTime: [
{ {
required: true, required: true,
message: t('views.trace.task.rangePickerPlease'), message: t('views.traceManage.task.rangePickerPlease'),
}, },
], ],
// 跟踪用户 // 跟踪用户
imsi: [ imsi: [
{ {
required: true, required: true,
message: t('views.trace.task.imsiPlease'), message: t('views.traceManage.task.imsiPlease'),
}, },
], ],
msisdn: [ msisdn: [
{ {
required: true, required: true,
message: t('views.trace.task.msisdnPlease'), message: t('views.traceManage.task.msisdnPlease'),
}, },
], ],
// 跟踪接口 // 跟踪接口
@@ -305,27 +305,27 @@ const modalStateFrom = Form.useForm(
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.srcIpPlease'), message: t('views.traceManage.task.srcIpPlease'),
}, },
], ],
dstIp: [ dstIp: [
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.dstIpPlease'), message: t('views.traceManage.task.dstIpPlease'),
}, },
], ],
interfaces: [ interfaces: [
{ {
required: true, required: true,
message: t('views.trace.task.interfacesPlease'), message: t('views.traceManage.task.interfacesPlease'),
}, },
], ],
signalPort: [ signalPort: [
{ {
required: true, required: true,
pattern: regExpPort, pattern: regExpPort,
message: t('views.trace.task.signalPortPlease'), message: t('views.traceManage.task.signalPortPlease'),
}, },
], ],
}) })
@@ -392,10 +392,10 @@ function fnModalVisibleByVive(id: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.viewTask'); modalState.title = t('views.traceManage.task.viewTask');
modalState.visibleByView = true; modalState.visibleByView = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -407,7 +407,7 @@ function fnModalVisibleByVive(id: string) {
function fnModalVisibleByEdit(id?: string) { function fnModalVisibleByEdit(id?: string) {
if (!id) { if (!id) {
modalStateFrom.resetFields(); modalStateFrom.resetFields();
modalState.title = t('views.trace.task.addTask'); modalState.title = t('views.traceManage.task.addTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
if (modalState.confirmLoading) return; if (modalState.confirmLoading) return;
@@ -430,10 +430,10 @@ function fnModalVisibleByEdit(id?: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.editTask'); modalState.title = t('views.traceManage.task.editTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -532,12 +532,12 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal"> <a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType "> <a-form-item :label="t('views.traceManage.task.neType')" name="neType ">
<a-auto-complete <a-auto-complete
v-model:value="queryParams.neType" v-model:value="queryParams.neType"
:options="useNeInfoStore().getNeSelectOtions" :options="useNeInfoStore().getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -674,7 +674,7 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
> >
<DictTag <DictTag
@@ -684,7 +684,7 @@ onMounted(() => {
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType"> <a-form-item :label="t('views.traceManage.task.neType')" name="neType">
<a-cascader <a-cascader
:value="modalState.neType" :value="modalState.neType"
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@@ -696,10 +696,10 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item :label="t('views.trace.task.msisdn')" name="msisdn"> <a-form-item :label="t('views.traceManage.task.msisdn')" name="msisdn">
{{ modalState.from.msisdn }} {{ modalState.from.msisdn }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.imsi')" name="imsi"> <a-form-item :label="t('views.traceManage.task.imsi')" name="imsi">
{{ modalState.from.imsi }} {{ modalState.from.imsi }}
</a-form-item> </a-form-item>
</template> </template>
@@ -708,25 +708,25 @@ onMounted(() => {
<template v-if="modalState.from.traceType === 'Interface'"> <template v-if="modalState.from.traceType === 'Interface'">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.srcIp')" name="srcIp"> <a-form-item :label="t('views.traceManage.task.srcIp')" name="srcIp">
{{ modalState.from.srcIp }} {{ modalState.from.srcIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.dstIp')" name="dstIp"> <a-form-item :label="t('views.traceManage.task.dstIp')" name="dstIp">
{{ modalState.from.dstIp }} {{ modalState.from.dstIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-form-item :label="t('views.trace.task.interfaces')" name="endTime"> <a-form-item :label="t('views.traceManage.task.interfaces')" name="endTime">
{{ modalState.neTypeInterfaceSelect }} {{ modalState.neTypeInterfaceSelect }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.signalPort')" name="endTime"> <a-form-item :label="t('views.traceManage.task.signalPort')" name="endTime">
{{ modalState.from.signalPort }} {{ modalState.from.signalPort }}
</a-form-item> </a-form-item>
</template> </template>
<a-form-item :label="t('views.trace.task.rangePicker')" name="endTime"> <a-form-item :label="t('views.traceManage.task.rangePicker')" name="endTime">
<a-range-picker <a-range-picker
disabled disabled
:value="modalState.timeRangePicker" :value="modalState.timeRangePicker"
@@ -738,7 +738,7 @@ onMounted(() => {
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
{{ modalState.from.comment }} {{ modalState.from.comment }}
</a-form-item> </a-form-item>
</a-form> </a-form>
@@ -764,13 +764,13 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
v-bind="modalStateFrom.validateInfos.traceType" v-bind="modalStateFrom.validateInfos.traceType"
> >
<a-select <a-select
v-model:value="modalState.from.traceType" v-model:value="modalState.from.traceType"
:placeholder="t('views.trace.task.trackTypePlease')" :placeholder="t('views.traceManage.task.trackTypePlease')"
:options="dict.traceType" :options="dict.traceType"
> >
</a-select> </a-select>
@@ -778,7 +778,7 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.neType')" :label="t('views.traceManage.task.neType')"
name="neType" name="neType"
v-bind="modalStateFrom.validateInfos.neId" v-bind="modalStateFrom.validateInfos.neId"
> >
@@ -787,7 +787,7 @@ onMounted(() => {
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -796,19 +796,19 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item <a-form-item
:label="t('views.trace.task.msisdn')" :label="t('views.traceManage.task.msisdn')"
name="msisdn" name="msisdn"
v-bind="modalStateFrom.validateInfos.msisdn" v-bind="modalStateFrom.validateInfos.msisdn"
> >
<a-input <a-input
v-model:value="modalState.from.msisdn" v-model:value="modalState.from.msisdn"
allow-clear allow-clear
:placeholder="t('views.trace.task.msisdnPlease')" :placeholder="t('views.traceManage.task.msisdnPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.msisdnTip') }}</div> <div>{{ t('views.traceManage.task.msisdnTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -816,19 +816,19 @@ onMounted(() => {
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.imsi')" :label="t('views.traceManage.task.imsi')"
name="imsi" name="imsi"
v-bind="modalStateFrom.validateInfos.imsi" v-bind="modalStateFrom.validateInfos.imsi"
> >
<a-input <a-input
v-model:value="modalState.from.imsi" v-model:value="modalState.from.imsi"
allow-clear allow-clear
:placeholder="t('views.trace.task.imsiPlease')" :placeholder="t('views.traceManage.task.imsiPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.imsiTip') }}</div> <div>{{ t('views.traceManage.task.imsiTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -842,19 +842,19 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.srcIp')" :label="t('views.traceManage.task.srcIp')"
name="srcIp" name="srcIp"
v-bind="modalStateFrom.validateInfos.srcIp" v-bind="modalStateFrom.validateInfos.srcIp"
> >
<a-input <a-input
v-model:value="modalState.from.srcIp" v-model:value="modalState.from.srcIp"
allow-clear allow-clear
placeholder="t('views.trace.task.srcIpPlease')" placeholder="t('views.traceManage.task.srcIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.srcIpTip') }}</div> <div>{{ t('views.traceManage.task.srcIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -864,19 +864,19 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.dstIp')" :label="t('views.traceManage.task.dstIp')"
name="dstIp" name="dstIp"
v-bind="modalStateFrom.validateInfos.dstIp" v-bind="modalStateFrom.validateInfos.dstIp"
> >
<a-input <a-input
v-model:value="modalState.from.dstIp" v-model:value="modalState.from.dstIp"
allow-clear allow-clear
:placeholder="t('views.trace.task.dstIpPlease')" :placeholder="t('views.traceManage.task.dstIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.dstIpTip') }}</div> <div>{{ t('views.traceManage.task.dstIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -886,7 +886,7 @@ onMounted(() => {
</a-col> </a-col>
</a-row> </a-row>
<a-form-item <a-form-item
:label="t('views.trace.task.interfaces')" :label="t('views.traceManage.task.interfaces')"
name="interfaces" name="interfaces"
v-bind="modalStateFrom.validateInfos.interfaces" v-bind="modalStateFrom.validateInfos.interfaces"
> >
@@ -900,19 +900,19 @@ onMounted(() => {
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.signalPort')" :label="t('views.traceManage.task.signalPort')"
name="signalPort" name="signalPort"
v-bind="modalStateFrom.validateInfos.signalPort" v-bind="modalStateFrom.validateInfos.signalPort"
> >
<a-input <a-input
v-model:value="modalState.from.signalPort" v-model:value="modalState.from.signalPort"
allow-clear allow-clear
:placeholder="t('views.trace.task.signalPortPlease')" :placeholder="t('views.traceManage.task.signalPortPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>t('views.trace.task.signalPortTip')</div> <div>t('views.traceManage.task.signalPortTip')</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -922,7 +922,7 @@ onMounted(() => {
</template> </template>
<a-form-item <a-form-item
:label="t('views.trace.task.rangePicker')" :label="t('views.traceManage.task.rangePicker')"
name="endTime" name="endTime"
v-bind="modalStateFrom.validateInfos.endTime" v-bind="modalStateFrom.validateInfos.endTime"
> >
@@ -935,19 +935,19 @@ onMounted(() => {
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
:placeholder="[ :placeholder="[
t('views.trace.task.startTime'), t('views.traceManage.task.startTime'),
t('views.trace.task.endTime'), t('views.traceManage.task.endTime'),
]" ]"
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
<a-textarea <a-textarea
v-model:value="modalState.from.comment" v-model:value="modalState.from.comment"
:auto-size="{ minRows: 2, maxRows: 6 }" :auto-size="{ minRows: 2, maxRows: 6 }"
:maxlength="250" :maxlength="250"
:show-count="true" :show-count="true"
:placeholder="t('views.trace.task.commentPlease')" :placeholder="t('views.traceManage.task.commentPlease')"
/> />
</a-form-item> </a-form-item>
</a-form> </a-form>

View File

@@ -64,47 +64,47 @@ let tableState: TabeStateType = reactive({
/**表格字段列 */ /**表格字段列 */
let tableColumns: ColumnsType = [ let tableColumns: ColumnsType = [
{ {
title: t('views.trace.analysis.trackTaskId'), title: t('views.traceManage.analysis.trackTaskId'),
dataIndex: 'taskId', dataIndex: 'taskId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.imsi'), title: t('views.traceManage.analysis.imsi'),
dataIndex: 'imsi', dataIndex: 'imsi',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msisdn'), title: t('views.traceManage.analysis.msisdn'),
dataIndex: 'msisdn', dataIndex: 'msisdn',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.srcIp'), title: t('views.traceManage.analysis.srcIp'),
dataIndex: 'srcAddr', dataIndex: 'srcAddr',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.dstIp'), title: t('views.traceManage.analysis.dstIp'),
dataIndex: 'dstAddr', dataIndex: 'dstAddr',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.signalType'), title: t('views.traceManage.analysis.signalType'),
dataIndex: 'ifType', dataIndex: 'ifType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msgType'), title: t('views.traceManage.analysis.msgType'),
dataIndex: 'msgType', dataIndex: 'msgType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msgDirect'), title: t('views.traceManage.analysis.msgDirect'),
dataIndex: 'msgDirect', dataIndex: 'msgDirect',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.rowTime'), title: t('views.traceManage.analysis.rowTime'),
dataIndex: 'timestamp', dataIndex: 'timestamp',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -215,10 +215,10 @@ function fnModalVisible(row: Record<string, any>) {
modalState.from.rawDataHTML = withoutHiddenElements; modalState.from.rawDataHTML = withoutHiddenElements;
modalState.from.downBtn = true; modalState.from.downBtn = true;
} else { } else {
modalState.from.rawDataHTML = t('views.trace.analysis.noData'); modalState.from.rawDataHTML = t('views.traceManage.analysis.noData');
} }
}); });
modalState.title = t('views.trace.analysis.taskTitle', { num: row.imsi }); modalState.title = t('views.traceManage.analysis.taskTitle', { num: row.imsi });
modalState.visible = true; modalState.visible = true;
} }
@@ -293,7 +293,7 @@ function convertToReadableFormat(hexString: string) {
function fnDownloadFile() { function fnDownloadFile() {
Modal.confirm({ Modal.confirm({
title: t('common.tipTitle'), title: t('common.tipTitle'),
content: t('views.trace.analysis.taskDownTip'), content: t('views.traceManage.analysis.taskDownTip'),
onOk() { onOk() {
const blob = new Blob([modalState.from.rawDataHTML], { const blob = new Blob([modalState.from.rawDataHTML], {
type: 'text/plain', type: 'text/plain',
@@ -321,25 +321,25 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item <a-form-item
:placeholder="t('views.trace.analysis.imsi')" :placeholder="t('views.traceManage.analysis.imsi')"
name="imsi" name="imsi"
> >
<a-input <a-input
v-model:value="queryParams.imsi" v-model:value="queryParams.imsi"
:allow-clear="true" :allow-clear="true"
:placeholder="t('views.trace.analysis.imsiPlease')" :placeholder="t('views.traceManage.analysis.imsiPlease')"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item <a-form-item
:placeholder="t('views.trace.analysis.msisdn')" :placeholder="t('views.traceManage.analysis.msisdn')"
name="imsi" name="imsi"
> >
<a-input <a-input
v-model:value="queryParams.msisdn" v-model:value="queryParams.msisdn"
:allow-clear="true" :allow-clear="true"
:placeholder="t('views.trace.analysis.msisdnPlease')" :placeholder="t('views.traceManage.analysis.msisdnPlease')"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -443,7 +443,7 @@ onMounted(() => {
:visible="modalState.visible" :visible="modalState.visible"
@cancel="fnModalVisibleClose" @cancel="fnModalVisibleClose"
> >
<div class="raw-title">{{ t('views.trace.analysis.signalData') }}</div> <div class="raw-title">{{ t('views.traceManage.analysis.signalData') }}</div>
<a-row <a-row
class="raw" class="raw"
:gutter="16" :gutter="16"
@@ -456,7 +456,7 @@ onMounted(() => {
</a-row> </a-row>
<a-divider /> <a-divider />
<div class="raw-title"> <div class="raw-title">
{{ t('views.trace.analysis.signalDetail') }} {{ t('views.traceManage.analysis.signalDetail') }}
<a-button <a-button
type="dashed" type="dashed"
size="small" size="small"
@@ -466,7 +466,7 @@ onMounted(() => {
<template #icon> <template #icon>
<DownloadOutlined /> <DownloadOutlined />
</template> </template>
{{ t('views.trace.analysis.taskDownText') }} {{ t('views.traceManage.analysis.taskDownText') }}
</a-button> </a-button>
</div> </div>
<div class="raw-html" v-html="modalState.from.rawDataHTML"></div> <div class="raw-html" v-html="modalState.from.rawDataHTML"></div>

View File

@@ -64,47 +64,47 @@ let tableState: TabeStateType = reactive({
/**表格字段列 */ /**表格字段列 */
let tableColumns: ColumnsType = [ let tableColumns: ColumnsType = [
{ {
title: t('views.trace.analysis.trackTaskId'), title: t('views.traceManage.analysis.trackTaskId'),
dataIndex: 'taskId', dataIndex: 'taskId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.imsi'), title: t('views.traceManage.analysis.imsi'),
dataIndex: 'imsi', dataIndex: 'imsi',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msisdn'), title: t('views.traceManage.analysis.msisdn'),
dataIndex: 'msisdn', dataIndex: 'msisdn',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.srcIp'), title: t('views.traceManage.analysis.srcIp'),
dataIndex: 'srcAddr', dataIndex: 'srcAddr',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.dstIp'), title: t('views.traceManage.analysis.dstIp'),
dataIndex: 'dstAddr', dataIndex: 'dstAddr',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.signalType'), title: t('views.traceManage.analysis.signalType'),
dataIndex: 'ifType', dataIndex: 'ifType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msgType'), title: t('views.traceManage.analysis.msgType'),
dataIndex: 'msgType', dataIndex: 'msgType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.msgDirect'), title: t('views.traceManage.analysis.msgDirect'),
dataIndex: 'msgDirect', dataIndex: 'msgDirect',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.analysis.rowTime'), title: t('views.traceManage.analysis.rowTime'),
dataIndex: 'timestamp', dataIndex: 'timestamp',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -215,10 +215,10 @@ function fnModalVisible(row: Record<string, any>) {
modalState.from.rawDataHTML = withoutHiddenElements; modalState.from.rawDataHTML = withoutHiddenElements;
modalState.from.downBtn = true; modalState.from.downBtn = true;
} else { } else {
modalState.from.rawDataHTML = t('views.trace.analysis.noData'); modalState.from.rawDataHTML = t('views.traceManage.analysis.noData');
} }
}); });
modalState.title = t('views.trace.analysis.taskTitle', { num: row.imsi }); modalState.title = t('views.traceManage.analysis.taskTitle', { num: row.imsi });
modalState.visible = true; modalState.visible = true;
} }
@@ -293,7 +293,7 @@ function convertToReadableFormat(hexString: string) {
function fnDownloadFile() { function fnDownloadFile() {
Modal.confirm({ Modal.confirm({
title: t('common.tipTitle'), title: t('common.tipTitle'),
content: t('views.trace.analysis.taskDownTip'), content: t('views.traceManage.analysis.taskDownTip'),
onOk() { onOk() {
const blob = new Blob([modalState.from.rawDataHTML], { const blob = new Blob([modalState.from.rawDataHTML], {
type: 'text/plain', type: 'text/plain',
@@ -321,25 +321,25 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item <a-form-item
:placeholder="t('views.trace.analysis.imsi')" :placeholder="t('views.traceManage.analysis.imsi')"
name="imsi" name="imsi"
> >
<a-input <a-input
v-model:value="queryParams.imsi" v-model:value="queryParams.imsi"
:allow-clear="true" :allow-clear="true"
:placeholder="t('views.trace.analysis.imsiPlease')" :placeholder="t('views.traceManage.analysis.imsiPlease')"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item <a-form-item
:placeholder="t('views.trace.analysis.msisdn')" :placeholder="t('views.traceManage.analysis.msisdn')"
name="imsi" name="imsi"
> >
<a-input <a-input
v-model:value="queryParams.msisdn" v-model:value="queryParams.msisdn"
:allow-clear="true" :allow-clear="true"
:placeholder="t('views.trace.analysis.msisdnPlease')" :placeholder="t('views.traceManage.analysis.msisdnPlease')"
></a-input> ></a-input>
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -443,7 +443,7 @@ onMounted(() => {
:visible="modalState.visible" :visible="modalState.visible"
@cancel="fnModalVisibleClose" @cancel="fnModalVisibleClose"
> >
<div class="raw-title">{{ t('views.trace.analysis.signalData') }}</div> <div class="raw-title">{{ t('views.traceManage.analysis.signalData') }}</div>
<a-row <a-row
class="raw" class="raw"
:gutter="16" :gutter="16"
@@ -456,7 +456,7 @@ onMounted(() => {
</a-row> </a-row>
<a-divider /> <a-divider />
<div class="raw-title"> <div class="raw-title">
{{ t('views.trace.analysis.signalDetail') }} {{ t('views.traceManage.analysis.signalDetail') }}
<a-button <a-button
type="dashed" type="dashed"
size="small" size="small"
@@ -466,7 +466,7 @@ onMounted(() => {
<template #icon> <template #icon>
<DownloadOutlined /> <DownloadOutlined />
</template> </template>
{{ t('views.trace.analysis.taskDownText') }} {{ t('views.traceManage.analysis.taskDownText') }}
</a-button> </a-button>
</div> </div>
<div class="raw-html" v-html="modalState.from.rawDataHTML"></div> <div class="raw-html" v-html="modalState.from.rawDataHTML"></div>

View File

@@ -62,10 +62,14 @@ function fnNeChange(_: any, item: any) {
const modalStateFrom = Form.useForm( const modalStateFrom = Form.useForm(
modalState.from, modalState.from,
reactive({ reactive({
cmd: [{ required: true, message: 'tcpdump any 参数!' }], cmd: [{ required: true, message: t('views.traceManage.pcap.capArgPlease') }],
timeout: [{ required: true, message: '执行时长,单位是秒!' }], timeout: [{ required: true, message: t('views.traceManage.pcap.capTimePlease') }],
upfStart: [{ required: true, message: 'upf start pacp 命令!' }], upfStart: [
upfStop: [{ required: true, message: 'upf stop pacp 命令!' }], { required: true, message: t('views.traceManage.pcap.capArgUPFPlease') },
],
upfStop: [
{ required: true, message: t('views.traceManage.pcap.capArgUPFPlease') },
],
}) })
); );
@@ -81,7 +85,7 @@ function fnStart() {
.then(() => { .then(() => {
modalState.confirmLoading = true; modalState.confirmLoading = true;
const from = toRaw(modalState.from); const from = toRaw(modalState.from);
const hide = message.loading('正在执行...', 0); const hide = message.loading(t('common.loading'), 0);
controller = new AbortController(); controller = new AbortController();
const signal = controller.signal; const signal = controller.signal;
timeoutId = setInterval(() => { timeoutId = setInterval(() => {
@@ -90,8 +94,8 @@ function fnStart() {
clearInterval(timeoutId); clearInterval(timeoutId);
runTime.value = 0; runTime.value = 0;
message.warning({ message.warning({
content: `执行超时`, content: t('views.traceManage.pcap.execTimeout'),
duration: 2, duration: 3,
}); });
// 超时终止请求 // 超时终止请求
controller.abort(); controller.abort();
@@ -107,7 +111,7 @@ function fnStart() {
.then(res => { .then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
message.success({ message.success({
content: `执行完成`, content: t('views.traceManage.pcap.execSuccess'),
duration: 3, duration: 3,
}); });
let logmsg = res.data.cmd + '\n\n' + res.data.msg; let logmsg = res.data.cmd + '\n\n' + res.data.msg;
@@ -120,12 +124,12 @@ function fnStart() {
res.msg.includes('timeout') res.msg.includes('timeout')
) { ) {
message.warning({ message.warning({
content: `中断执行`, content: t('views.traceManage.pcap.execBreak'),
duration: 3, duration: 3,
}); });
} else { } else {
message.error({ message.error({
content: `执行失败`, content: t('views.traceManage.pcap.execFailed'),
duration: 3, duration: 3,
}); });
} }
@@ -153,13 +157,13 @@ function fnStop() {
function fnDownPCAP() { function fnDownPCAP() {
if (!modalState.fileName) { if (!modalState.fileName) {
message.warning({ message.warning({
content: `无效文件名`, content: t('views.traceManage.pcap.noFileName'),
duration: 2, duration: 2,
}); });
return; return;
} }
const key = 'tcpdumpPcapDownload'; const key = 'tcpdumpPcapDownload';
message.loading({ content: '请稍等...', key }); message.loading({ content: t('common.loading'), key });
tcpdumpPcapDownload({ tcpdumpPcapDownload({
neType: modalState.neType[0], neType: modalState.neType[0],
neId: modalState.neType[1], neId: modalState.neType[1],
@@ -167,16 +171,16 @@ function fnDownPCAP() {
}).then(res => { }).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
message.success({ message.success({
content: `已完成`, content: t('views.traceManage.pcap.execSuccess'),
key, key,
duration: 2, duration: 3,
}); });
saveAs(res.data, modalState.fileName); saveAs(res.data, modalState.fileName);
} else { } else {
message.error({ message.error({
content: `${res.msg}`, content: `${res.msg}`,
key, key,
duration: 2, duration: 3,
}); });
} }
}); });
@@ -193,7 +197,7 @@ function fnUPF(runType: 'start' | 'stop') {
.then(() => { .then(() => {
modalState.confirmLoading = true; modalState.confirmLoading = true;
const from = toRaw(modalState.from); const from = toRaw(modalState.from);
const hide = message.loading('请稍等...', 0); const hide = message.loading(t('common.loading'), 0);
tcpdumpNeUPFTask({ tcpdumpNeUPFTask({
neType: modalState.neType[0], neType: modalState.neType[0],
neId: modalState.neType[1], neId: modalState.neType[1],
@@ -209,12 +213,12 @@ function fnUPF(runType: 'start' | 'stop') {
if (runType === 'start') { if (runType === 'start') {
if (res.data.msg.includes('already')) { if (res.data.msg.includes('already')) {
message.warning({ message.warning({
content: `已经执行, 请根据情况停止抓包`, content: t('views.traceManage.pcap.execUPFStartA'),
duration: 10, duration: 10,
}); });
} else { } else {
message.success({ message.success({
content: `执行成功, 请根据情况停止抓包`, content: t('views.traceManage.pcap.execUPFStart'),
duration: 10, duration: 10,
}); });
} }
@@ -222,12 +226,12 @@ function fnUPF(runType: 'start' | 'stop') {
if (runType === 'stop') { if (runType === 'stop') {
if (res.data.msg.includes('already')) { if (res.data.msg.includes('already')) {
message.warning({ message.warning({
content: `已经停止, 请根据情况开始抓包`, content: t('views.traceManage.pcap.execUPFStopA'),
duration: 10, duration: 10,
}); });
} else { } else {
message.success({ message.success({
content: `执行成功, 抓包已停止`, content: t('views.traceManage.pcap.execUPFStop'),
duration: 10, duration: 10,
}); });
modalState.downBtn = true; modalState.downBtn = true;
@@ -235,7 +239,7 @@ function fnUPF(runType: 'start' | 'stop') {
} }
} else { } else {
message.error({ message.error({
content: `执行失败`, content: t('views.traceManage.pcap.execFailed'),
duration: 3, duration: 3,
}); });
} }
@@ -263,7 +267,7 @@ onMounted(() => {
} }
} else { } else {
message.warning({ message.warning({
content: `暂无网元列表数据`, content: 'No Data',
duration: 2, duration: 2,
}); });
} }
@@ -273,7 +277,7 @@ onMounted(() => {
<template> <template>
<PageContainer> <PageContainer>
<a-card :title="t('views.trace.pcap.cardTitle')"> <a-card :title="t('views.traceManage.pcap.cardTitle')">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form <a-form
@@ -284,22 +288,22 @@ onMounted(() => {
:label-col="{ span: 5 }" :label-col="{ span: 5 }"
labelWrap labelWrap
> >
<a-form-item :label="t('views.trace.pcap.neType')" name="neType"> <a-form-item :label="t('views.traceManage.pcap.neType')" name="neType">
<a-cascader <a-cascader
v-model:value="modalState.neType" v-model:value="modalState.neType"
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
placeholder="请选择网元" :placeholder="t('views.traceManage.pcap.neTypePlease')"
/> />
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.pcap.neIp')" name="ip"> <a-form-item :label="t('views.traceManage.pcap.neIp')" name="ip">
<span style="font-weight: bold">{{ modalState.from.ip }}</span> <span style="font-weight: bold">{{ modalState.from.ip }}</span>
</a-form-item> </a-form-item>
<template v-if="modalState.neType[0] === 'UPF'"> <template v-if="modalState.neType[0] === 'UPF'">
<a-form-item <a-form-item
:label="t('views.trace.pcap.capStart')" :label="t('views.traceManage.pcap.capStart')"
name="upfStart" name="upfStart"
v-bind="modalStateFrom.validateInfos.upfStart" v-bind="modalStateFrom.validateInfos.upfStart"
> >
@@ -307,7 +311,7 @@ onMounted(() => {
<a-input <a-input
v-model:value="modalState.from.upfStart" v-model:value="modalState.from.upfStart"
allow-clear allow-clear
placeholder="upf pacp 命令" :placeholder="t('views.traceManage.pcap.capArgUPFPlease')"
style="width: 75%" style="width: 75%"
/> />
<a-button <a-button
@@ -317,12 +321,12 @@ onMounted(() => {
:loading="modalState.confirmLoading" :loading="modalState.confirmLoading"
@click.prevent="fnUPF('start')" @click.prevent="fnUPF('start')"
> >
{{ t('views.trace.pcap.runText') }} {{ t('views.traceManage.pcap.runText') }}
</a-button> </a-button>
</a-input-group> </a-input-group>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.pcap.capStop')" :label="t('views.traceManage.pcap.capStop')"
name="upfStop" name="upfStop"
v-bind="modalStateFrom.validateInfos.upfStop" v-bind="modalStateFrom.validateInfos.upfStop"
> >
@@ -330,7 +334,7 @@ onMounted(() => {
<a-input <a-input
v-model:value="modalState.from.upfStop" v-model:value="modalState.from.upfStop"
allow-clear allow-clear
placeholder="upf pacp 命令" :placeholder="t('views.traceManage.pcap.capArgUPFPlease')"
style="width: 75%" style="width: 75%"
/> />
<a-button <a-button
@@ -340,32 +344,32 @@ onMounted(() => {
:loading="modalState.confirmLoading" :loading="modalState.confirmLoading"
@click.prevent="fnUPF('stop')" @click.prevent="fnUPF('stop')"
> >
{{ t('views.trace.pcap.runText') }} {{ t('views.traceManage.pcap.runText') }}
</a-button> </a-button>
</a-input-group> </a-input-group>
</a-form-item> </a-form-item>
</template> </template>
<template v-else> <template v-else>
<a-form-item <a-form-item
:label="t('views.trace.pcap.capArg')" :label="t('views.traceManage.pcap.capArg')"
name="cmd" name="cmd"
v-bind="modalStateFrom.validateInfos.cmd" v-bind="modalStateFrom.validateInfos.cmd"
> >
<a-input <a-input
v-model:value="modalState.from.cmd" v-model:value="modalState.from.cmd"
allow-clear allow-clear
placeholder="tcpdump any 参数" :placeholder="t('views.traceManage.pcap.capArgPlease')"
> >
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.pcap.capTime')" :label="t('views.traceManage.pcap.capTime')"
name="timeout" name="timeout"
v-bind="modalStateFrom.validateInfos.timeout" v-bind="modalStateFrom.validateInfos.timeout"
> >
<a-input-number <a-input-number
v-model:value="modalState.from.timeout" v-model:value="modalState.from.timeout"
placeholder="单位是秒's" :placeholder="t('views.traceManage.pcap.capTimePlease')"
:min="5" :min="5"
:max="120" :max="120"
/> />
@@ -381,8 +385,8 @@ onMounted(() => {
<template #icon><ApiOutlined /></template> <template #icon><ApiOutlined /></template>
{{ {{
runTime != 0 runTime != 0
? t('views.trace.pcap.runTimeText', { s: runTime }) ? t('views.traceManage.pcap.runTimeText', { s: runTime })
: t('views.trace.pcap.runText') : t('views.traceManage.pcap.runText')
}} }}
</a-button> </a-button>
<a-button <a-button
@@ -391,7 +395,7 @@ onMounted(() => {
:disabled="!modalState.confirmLoading" :disabled="!modalState.confirmLoading"
@click.prevent="fnStop" @click.prevent="fnStop"
> >
{{ t('views.trace.pcap.stopText') }} {{ t('views.traceManage.pcap.stopText') }}
</a-button> </a-button>
</a-space> </a-space>
</a-form-item> </a-form-item>
@@ -401,7 +405,7 @@ onMounted(() => {
<a-col :offset="2" :lg="10" :md="10" :xs="24"> <a-col :offset="2" :lg="10" :md="10" :xs="24">
<a-form layout="vertical" autocomplete="off"> <a-form layout="vertical" autocomplete="off">
<a-form-item <a-form-item
:label="t('views.trace.pcap.capLog')" :label="t('views.traceManage.pcap.capLog')"
name="execLogMsg" name="execLogMsg"
v-show="!!modalState.execLogMsg" v-show="!!modalState.execLogMsg"
> >
@@ -409,7 +413,6 @@ onMounted(() => {
v-model:value="modalState.execLogMsg" v-model:value="modalState.execLogMsg"
:auto-size="{ minRows: 10, maxRows: 15 }" :auto-size="{ minRows: 10, maxRows: 15 }"
:disabled="true" :disabled="true"
placeholder="输出执行日志..."
/> />
</a-form-item> </a-form-item>
<a-form-item v-show="modalState.downBtn"> <a-form-item v-show="modalState.downBtn">
@@ -419,7 +422,7 @@ onMounted(() => {
@click.prevent="fnDownPCAP" @click.prevent="fnDownPCAP"
> >
<template #icon><DownloadOutlined /></template> <template #icon><DownloadOutlined /></template>
{{ t('views.trace.pcap.capDownText') }} {{ t('views.traceManage.pcap.capDownText') }}
</a-button> </a-button>
</a-form-item> </a-form-item>
</a-form> </a-form>

View File

@@ -88,28 +88,28 @@ let tableColumns: ColumnsType = [
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neType'), title: t('views.traceManage.task.neType'),
dataIndex: 'neType', dataIndex: 'neType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.neID'), title: t('views.traceManage.task.neID'),
dataIndex: 'neId', dataIndex: 'neId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'traceType', dataIndex: 'traceType',
key: 'traceType', key: 'traceType',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.trackType'), title: t('views.traceManage.task.trackType'),
dataIndex: 'accountId', dataIndex: 'accountId',
align: 'center', align: 'center',
}, },
{ {
title: t('views.trace.task.startTime'), title: t('views.traceManage.task.startTime'),
dataIndex: 'startTime', dataIndex: 'startTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -118,7 +118,7 @@ let tableColumns: ColumnsType = [
}, },
}, },
{ {
title: t('views.trace.task.endTime'), title: t('views.traceManage.task.endTime'),
dataIndex: 'endTime', dataIndex: 'endTime',
align: 'center', align: 'center',
customRender(opt) { customRender(opt) {
@@ -172,15 +172,15 @@ function fnTableSize({ key }: MenuInfo) {
*/ */
function fnRecordDelete(id: string) { function fnRecordDelete(id: string) {
Modal.confirm({ Modal.confirm({
title: t('views.trace.task.tipTitle'), title: t('views.traceManage.task.tipTitle'),
content: t('views.trace.task.delTaskTip', { num: id }), content: t('views.traceManage.task.delTaskTip', { num: id }),
onOk() { onOk() {
const key = 'delTraceTask'; const key = 'delTraceTask';
message.loading({ content: t('common.loading'), key }); message.loading({ content: t('common.loading'), key });
delTraceTask(id).then(res => { delTraceTask(id).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
message.success({ message.success({
content: t('views.trace.task.delTask', { num: id }), content: t('views.traceManage.task.delTask', { num: id }),
key, key,
duration: 2, duration: 2,
}); });
@@ -272,32 +272,32 @@ const modalStateFrom = Form.useForm(
traceType: [ traceType: [
{ {
required: true, required: true,
message: t('views.trace.task.trackTypePlease'), message: t('views.traceManage.task.trackTypePlease'),
}, },
], ],
neId: [ neId: [
{ {
required: true, required: true,
message: t('views.trace.task.neTypePlease'), message: t('views.traceManage.task.neTypePlease'),
}, },
], ],
endTime: [ endTime: [
{ {
required: true, required: true,
message: t('views.trace.task.rangePickerPlease'), message: t('views.traceManage.task.rangePickerPlease'),
}, },
], ],
// 跟踪用户 // 跟踪用户
imsi: [ imsi: [
{ {
required: true, required: true,
message: t('views.trace.task.imsiPlease'), message: t('views.traceManage.task.imsiPlease'),
}, },
], ],
msisdn: [ msisdn: [
{ {
required: true, required: true,
message: t('views.trace.task.msisdnPlease'), message: t('views.traceManage.task.msisdnPlease'),
}, },
], ],
// 跟踪接口 // 跟踪接口
@@ -305,27 +305,27 @@ const modalStateFrom = Form.useForm(
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.srcIpPlease'), message: t('views.traceManage.task.srcIpPlease'),
}, },
], ],
dstIp: [ dstIp: [
{ {
required: true, required: true,
pattern: regExpIPv4, pattern: regExpIPv4,
message: t('views.trace.task.dstIpPlease'), message: t('views.traceManage.task.dstIpPlease'),
}, },
], ],
interfaces: [ interfaces: [
{ {
required: true, required: true,
message: t('views.trace.task.interfacesPlease'), message: t('views.traceManage.task.interfacesPlease'),
}, },
], ],
signalPort: [ signalPort: [
{ {
required: true, required: true,
pattern: regExpPort, pattern: regExpPort,
message: t('views.trace.task.signalPortPlease'), message: t('views.traceManage.task.signalPortPlease'),
}, },
], ],
}) })
@@ -392,10 +392,10 @@ function fnModalVisibleByVive(id: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.viewTask'); modalState.title = t('views.traceManage.task.viewTask');
modalState.visibleByView = true; modalState.visibleByView = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -407,7 +407,7 @@ function fnModalVisibleByVive(id: string) {
function fnModalVisibleByEdit(id?: string) { function fnModalVisibleByEdit(id?: string) {
if (!id) { if (!id) {
modalStateFrom.resetFields(); modalStateFrom.resetFields();
modalState.title = t('views.trace.task.addTask'); modalState.title = t('views.traceManage.task.addTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
if (modalState.confirmLoading) return; if (modalState.confirmLoading) return;
@@ -430,10 +430,10 @@ function fnModalVisibleByEdit(id?: string) {
} }
fnSelectInterfaceInit(res.data.neType); fnSelectInterfaceInit(res.data.neType);
} }
modalState.title = t('views.trace.task.editTask'); modalState.title = t('views.traceManage.task.editTask');
modalState.visibleByEdit = true; modalState.visibleByEdit = true;
} else { } else {
message.error(t('views.trace.task.errorTaskInfo'), 3); message.error(t('views.traceManage.task.errorTaskInfo'), 3);
} }
}); });
} }
@@ -532,12 +532,12 @@ onMounted(() => {
<a-form :model="queryParams" name="queryParams" layout="horizontal"> <a-form :model="queryParams" name="queryParams" layout="horizontal">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24"> <a-col :lg="6" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType "> <a-form-item :label="t('views.traceManage.task.neType')" name="neType ">
<a-auto-complete <a-auto-complete
v-model:value="queryParams.neType" v-model:value="queryParams.neType"
:options="useNeInfoStore().getNeSelectOtions" :options="useNeInfoStore().getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -674,7 +674,7 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
> >
<DictTag <DictTag
@@ -684,7 +684,7 @@ onMounted(() => {
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.neType')" name="neType"> <a-form-item :label="t('views.traceManage.task.neType')" name="neType">
<a-cascader <a-cascader
:value="modalState.neType" :value="modalState.neType"
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@@ -696,10 +696,10 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item :label="t('views.trace.task.msisdn')" name="msisdn"> <a-form-item :label="t('views.traceManage.task.msisdn')" name="msisdn">
{{ modalState.from.msisdn }} {{ modalState.from.msisdn }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.imsi')" name="imsi"> <a-form-item :label="t('views.traceManage.task.imsi')" name="imsi">
{{ modalState.from.imsi }} {{ modalState.from.imsi }}
</a-form-item> </a-form-item>
</template> </template>
@@ -708,25 +708,25 @@ onMounted(() => {
<template v-if="modalState.from.traceType === 'Interface'"> <template v-if="modalState.from.traceType === 'Interface'">
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.srcIp')" name="srcIp"> <a-form-item :label="t('views.traceManage.task.srcIp')" name="srcIp">
{{ modalState.from.srcIp }} {{ modalState.from.srcIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item :label="t('views.trace.task.dstIp')" name="dstIp"> <a-form-item :label="t('views.traceManage.task.dstIp')" name="dstIp">
{{ modalState.from.dstIp }} {{ modalState.from.dstIp }}
</a-form-item> </a-form-item>
</a-col> </a-col>
</a-row> </a-row>
<a-form-item :label="t('views.trace.task.interfaces')" name="endTime"> <a-form-item :label="t('views.traceManage.task.interfaces')" name="endTime">
{{ modalState.neTypeInterfaceSelect }} {{ modalState.neTypeInterfaceSelect }}
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.signalPort')" name="endTime"> <a-form-item :label="t('views.traceManage.task.signalPort')" name="endTime">
{{ modalState.from.signalPort }} {{ modalState.from.signalPort }}
</a-form-item> </a-form-item>
</template> </template>
<a-form-item :label="t('views.trace.task.rangePicker')" name="endTime"> <a-form-item :label="t('views.traceManage.task.rangePicker')" name="endTime">
<a-range-picker <a-range-picker
disabled disabled
:value="modalState.timeRangePicker" :value="modalState.timeRangePicker"
@@ -738,7 +738,7 @@ onMounted(() => {
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
{{ modalState.from.comment }} {{ modalState.from.comment }}
</a-form-item> </a-form-item>
</a-form> </a-form>
@@ -764,13 +764,13 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.trackType')" :label="t('views.traceManage.task.trackType')"
name="traceType" name="traceType"
v-bind="modalStateFrom.validateInfos.traceType" v-bind="modalStateFrom.validateInfos.traceType"
> >
<a-select <a-select
v-model:value="modalState.from.traceType" v-model:value="modalState.from.traceType"
:placeholder="t('views.trace.task.trackTypePlease')" :placeholder="t('views.traceManage.task.trackTypePlease')"
:options="dict.traceType" :options="dict.traceType"
> >
</a-select> </a-select>
@@ -778,7 +778,7 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.neType')" :label="t('views.traceManage.task.neType')"
name="neType" name="neType"
v-bind="modalStateFrom.validateInfos.neId" v-bind="modalStateFrom.validateInfos.neId"
> >
@@ -787,7 +787,7 @@ onMounted(() => {
:options="useNeInfoStore().getNeCascaderOtions" :options="useNeInfoStore().getNeCascaderOtions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.trace.task.neTypePlease')" :placeholder="t('views.traceManage.task.neTypePlease')"
/> />
</a-form-item> </a-form-item>
</a-col> </a-col>
@@ -796,19 +796,19 @@ onMounted(() => {
<!-- 用户跟踪 --> <!-- 用户跟踪 -->
<template v-if="modalState.from.traceType === 'UE'"> <template v-if="modalState.from.traceType === 'UE'">
<a-form-item <a-form-item
:label="t('views.trace.task.msisdn')" :label="t('views.traceManage.task.msisdn')"
name="msisdn" name="msisdn"
v-bind="modalStateFrom.validateInfos.msisdn" v-bind="modalStateFrom.validateInfos.msisdn"
> >
<a-input <a-input
v-model:value="modalState.from.msisdn" v-model:value="modalState.from.msisdn"
allow-clear allow-clear
:placeholder="t('views.trace.task.msisdnPlease')" :placeholder="t('views.traceManage.task.msisdnPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.msisdnTip') }}</div> <div>{{ t('views.traceManage.task.msisdnTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -816,19 +816,19 @@ onMounted(() => {
</a-input> </a-input>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.imsi')" :label="t('views.traceManage.task.imsi')"
name="imsi" name="imsi"
v-bind="modalStateFrom.validateInfos.imsi" v-bind="modalStateFrom.validateInfos.imsi"
> >
<a-input <a-input
v-model:value="modalState.from.imsi" v-model:value="modalState.from.imsi"
allow-clear allow-clear
:placeholder="t('views.trace.task.imsiPlease')" :placeholder="t('views.traceManage.task.imsiPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.imsiTip') }}</div> <div>{{ t('views.traceManage.task.imsiTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -842,19 +842,19 @@ onMounted(() => {
<a-row :gutter="16"> <a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.srcIp')" :label="t('views.traceManage.task.srcIp')"
name="srcIp" name="srcIp"
v-bind="modalStateFrom.validateInfos.srcIp" v-bind="modalStateFrom.validateInfos.srcIp"
> >
<a-input <a-input
v-model:value="modalState.from.srcIp" v-model:value="modalState.from.srcIp"
allow-clear allow-clear
placeholder="t('views.trace.task.srcIpPlease')" placeholder="t('views.traceManage.task.srcIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.srcIpTip') }}</div> <div>{{ t('views.traceManage.task.srcIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -864,19 +864,19 @@ onMounted(() => {
</a-col> </a-col>
<a-col :lg="12" :md="12" :xs="24"> <a-col :lg="12" :md="12" :xs="24">
<a-form-item <a-form-item
:label="t('views.trace.task.dstIp')" :label="t('views.traceManage.task.dstIp')"
name="dstIp" name="dstIp"
v-bind="modalStateFrom.validateInfos.dstIp" v-bind="modalStateFrom.validateInfos.dstIp"
> >
<a-input <a-input
v-model:value="modalState.from.dstIp" v-model:value="modalState.from.dstIp"
allow-clear allow-clear
:placeholder="t('views.trace.task.dstIpPlease')" :placeholder="t('views.traceManage.task.dstIpPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>{{ t('views.trace.task.dstIpTip') }}</div> <div>{{ t('views.traceManage.task.dstIpTip') }}</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -886,7 +886,7 @@ onMounted(() => {
</a-col> </a-col>
</a-row> </a-row>
<a-form-item <a-form-item
:label="t('views.trace.task.interfaces')" :label="t('views.traceManage.task.interfaces')"
name="interfaces" name="interfaces"
v-bind="modalStateFrom.validateInfos.interfaces" v-bind="modalStateFrom.validateInfos.interfaces"
> >
@@ -900,19 +900,19 @@ onMounted(() => {
</a-select> </a-select>
</a-form-item> </a-form-item>
<a-form-item <a-form-item
:label="t('views.trace.task.signalPort')" :label="t('views.traceManage.task.signalPort')"
name="signalPort" name="signalPort"
v-bind="modalStateFrom.validateInfos.signalPort" v-bind="modalStateFrom.validateInfos.signalPort"
> >
<a-input <a-input
v-model:value="modalState.from.signalPort" v-model:value="modalState.from.signalPort"
allow-clear allow-clear
:placeholder="t('views.trace.task.signalPortPlease')" :placeholder="t('views.traceManage.task.signalPortPlease')"
> >
<template #prefix> <template #prefix>
<a-tooltip placement="topLeft"> <a-tooltip placement="topLeft">
<template #title> <template #title>
<div>t('views.trace.task.signalPortTip')</div> <div>t('views.traceManage.task.signalPortTip')</div>
</template> </template>
<InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" /> <InfoCircleOutlined style="color: rgba(0, 0, 0, 0.45)" />
</a-tooltip> </a-tooltip>
@@ -922,7 +922,7 @@ onMounted(() => {
</template> </template>
<a-form-item <a-form-item
:label="t('views.trace.task.rangePicker')" :label="t('views.traceManage.task.rangePicker')"
name="endTime" name="endTime"
v-bind="modalStateFrom.validateInfos.endTime" v-bind="modalStateFrom.validateInfos.endTime"
> >
@@ -935,19 +935,19 @@ onMounted(() => {
format="YYYY-MM-DD HH:mm:ss" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss"
:placeholder="[ :placeholder="[
t('views.trace.task.startTime'), t('views.traceManage.task.startTime'),
t('views.trace.task.endTime'), t('views.traceManage.task.endTime'),
]" ]"
style="width: 100%" style="width: 100%"
></a-range-picker> ></a-range-picker>
</a-form-item> </a-form-item>
<a-form-item :label="t('views.trace.task.comment')" name="comment"> <a-form-item :label="t('views.traceManage.task.comment')" name="comment">
<a-textarea <a-textarea
v-model:value="modalState.from.comment" v-model:value="modalState.from.comment"
:auto-size="{ minRows: 2, maxRows: 6 }" :auto-size="{ minRows: 2, maxRows: 6 }"
:maxlength="250" :maxlength="250"
:show-count="true" :show-count="true"
:placeholder="t('views.trace.task.commentPlease')" :placeholder="t('views.traceManage.task.commentPlease')"
/> />
</a-form-item> </a-form-item>
</a-form> </a-form>