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',
},
},
trace: {
traceManage: {
analysis: {
imsi: 'IMSI',
imsiPlease: 'Please enter IMSI',
@@ -184,16 +184,29 @@ export default {
pcap: {
cardTitle: 'PCAP capture',
neType: 'Type',
neTypePlease: 'Please select the type of network element',
neIp: 'IP address',
capArg: 'Capture parameters',
capArgPlease: 'Please enter tcpdump any support parameters!',
capTime: 'Duration in seconds',
capTimePlease: 'Please enter the duration, up to 120 seconds',
capLog: 'Execution Log',
capDownText: 'Download PCAP file',
runText: 'Execute',
runTimeText: 'Execute {s} seconds',
stopText: 'Interrupt',
capArgUPFPlease: 'Please enter the packet capture command supported by UPF',
capStart: 'Start 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: {
neTypePlease: 'Query network element type',

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -64,47 +64,47 @@ let tableState: TabeStateType = reactive({
/**表格字段列 */
let tableColumns: ColumnsType = [
{
title: t('views.trace.analysis.trackTaskId'),
title: t('views.traceManage.analysis.trackTaskId'),
dataIndex: 'taskId',
align: 'center',
},
{
title: t('views.trace.analysis.imsi'),
title: t('views.traceManage.analysis.imsi'),
dataIndex: 'imsi',
align: 'center',
},
{
title: t('views.trace.analysis.msisdn'),
title: t('views.traceManage.analysis.msisdn'),
dataIndex: 'msisdn',
align: 'center',
},
{
title: t('views.trace.analysis.srcIp'),
title: t('views.traceManage.analysis.srcIp'),
dataIndex: 'srcAddr',
align: 'center',
},
{
title: t('views.trace.analysis.dstIp'),
title: t('views.traceManage.analysis.dstIp'),
dataIndex: 'dstAddr',
align: 'center',
},
{
title: t('views.trace.analysis.signalType'),
title: t('views.traceManage.analysis.signalType'),
dataIndex: 'ifType',
align: 'center',
},
{
title: t('views.trace.analysis.msgType'),
title: t('views.traceManage.analysis.msgType'),
dataIndex: 'msgType',
align: 'center',
},
{
title: t('views.trace.analysis.msgDirect'),
title: t('views.traceManage.analysis.msgDirect'),
dataIndex: 'msgDirect',
align: 'center',
},
{
title: t('views.trace.analysis.rowTime'),
title: t('views.traceManage.analysis.rowTime'),
dataIndex: 'timestamp',
align: 'center',
customRender(opt) {
@@ -215,10 +215,10 @@ function fnModalVisible(row: Record<string, any>) {
modalState.from.rawDataHTML = withoutHiddenElements;
modalState.from.downBtn = true;
} 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;
}
@@ -293,7 +293,7 @@ function convertToReadableFormat(hexString: string) {
function fnDownloadFile() {
Modal.confirm({
title: t('common.tipTitle'),
content: t('views.trace.analysis.taskDownTip'),
content: t('views.traceManage.analysis.taskDownTip'),
onOk() {
const blob = new Blob([modalState.from.rawDataHTML], {
type: 'text/plain',
@@ -321,25 +321,25 @@ onMounted(() => {
<a-row :gutter="16">
<a-col :lg="6" :md="12" :xs="24">
<a-form-item
:placeholder="t('views.trace.analysis.imsi')"
:placeholder="t('views.traceManage.analysis.imsi')"
name="imsi"
>
<a-input
v-model:value="queryParams.imsi"
:allow-clear="true"
:placeholder="t('views.trace.analysis.imsiPlease')"
:placeholder="t('views.traceManage.analysis.imsiPlease')"
></a-input>
</a-form-item>
</a-col>
<a-col :lg="6" :md="12" :xs="24">
<a-form-item
:placeholder="t('views.trace.analysis.msisdn')"
:placeholder="t('views.traceManage.analysis.msisdn')"
name="imsi"
>
<a-input
v-model:value="queryParams.msisdn"
:allow-clear="true"
:placeholder="t('views.trace.analysis.msisdnPlease')"
:placeholder="t('views.traceManage.analysis.msisdnPlease')"
></a-input>
</a-form-item>
</a-col>
@@ -443,7 +443,7 @@ onMounted(() => {
:visible="modalState.visible"
@cancel="fnModalVisibleClose"
>
<div class="raw-title">{{ t('views.trace.analysis.signalData') }}</div>
<div class="raw-title">{{ t('views.traceManage.analysis.signalData') }}</div>
<a-row
class="raw"
:gutter="16"
@@ -456,7 +456,7 @@ onMounted(() => {
</a-row>
<a-divider />
<div class="raw-title">
{{ t('views.trace.analysis.signalDetail') }}
{{ t('views.traceManage.analysis.signalDetail') }}
<a-button
type="dashed"
size="small"
@@ -466,7 +466,7 @@ onMounted(() => {
<template #icon>
<DownloadOutlined />
</template>
{{ t('views.trace.analysis.taskDownText') }}
{{ t('views.traceManage.analysis.taskDownText') }}
</a-button>
</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(
modalState.from,
reactive({
cmd: [{ required: true, message: 'tcpdump any 参数!' }],
timeout: [{ required: true, message: '执行时长,单位是秒!' }],
upfStart: [{ required: true, message: 'upf start pacp 命令!' }],
upfStop: [{ required: true, message: 'upf stop pacp 命令!' }],
cmd: [{ required: true, message: t('views.traceManage.pcap.capArgPlease') }],
timeout: [{ required: true, message: t('views.traceManage.pcap.capTimePlease') }],
upfStart: [
{ required: true, message: t('views.traceManage.pcap.capArgUPFPlease') },
],
upfStop: [
{ required: true, message: t('views.traceManage.pcap.capArgUPFPlease') },
],
})
);
@@ -81,7 +85,7 @@ function fnStart() {
.then(() => {
modalState.confirmLoading = true;
const from = toRaw(modalState.from);
const hide = message.loading('正在执行...', 0);
const hide = message.loading(t('common.loading'), 0);
controller = new AbortController();
const signal = controller.signal;
timeoutId = setInterval(() => {
@@ -90,8 +94,8 @@ function fnStart() {
clearInterval(timeoutId);
runTime.value = 0;
message.warning({
content: `执行超时`,
duration: 2,
content: t('views.traceManage.pcap.execTimeout'),
duration: 3,
});
// 超时终止请求
controller.abort();
@@ -107,7 +111,7 @@ function fnStart() {
.then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `执行完成`,
content: t('views.traceManage.pcap.execSuccess'),
duration: 3,
});
let logmsg = res.data.cmd + '\n\n' + res.data.msg;
@@ -120,12 +124,12 @@ function fnStart() {
res.msg.includes('timeout')
) {
message.warning({
content: `中断执行`,
content: t('views.traceManage.pcap.execBreak'),
duration: 3,
});
} else {
message.error({
content: `执行失败`,
content: t('views.traceManage.pcap.execFailed'),
duration: 3,
});
}
@@ -153,13 +157,13 @@ function fnStop() {
function fnDownPCAP() {
if (!modalState.fileName) {
message.warning({
content: `无效文件名`,
content: t('views.traceManage.pcap.noFileName'),
duration: 2,
});
return;
}
const key = 'tcpdumpPcapDownload';
message.loading({ content: '请稍等...', key });
message.loading({ content: t('common.loading'), key });
tcpdumpPcapDownload({
neType: modalState.neType[0],
neId: modalState.neType[1],
@@ -167,16 +171,16 @@ function fnDownPCAP() {
}).then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success({
content: `已完成`,
content: t('views.traceManage.pcap.execSuccess'),
key,
duration: 2,
duration: 3,
});
saveAs(res.data, modalState.fileName);
} else {
message.error({
content: `${res.msg}`,
key,
duration: 2,
duration: 3,
});
}
});
@@ -193,7 +197,7 @@ function fnUPF(runType: 'start' | 'stop') {
.then(() => {
modalState.confirmLoading = true;
const from = toRaw(modalState.from);
const hide = message.loading('请稍等...', 0);
const hide = message.loading(t('common.loading'), 0);
tcpdumpNeUPFTask({
neType: modalState.neType[0],
neId: modalState.neType[1],
@@ -209,12 +213,12 @@ function fnUPF(runType: 'start' | 'stop') {
if (runType === 'start') {
if (res.data.msg.includes('already')) {
message.warning({
content: `已经执行, 请根据情况停止抓包`,
content: t('views.traceManage.pcap.execUPFStartA'),
duration: 10,
});
} else {
message.success({
content: `执行成功, 请根据情况停止抓包`,
content: t('views.traceManage.pcap.execUPFStart'),
duration: 10,
});
}
@@ -222,12 +226,12 @@ function fnUPF(runType: 'start' | 'stop') {
if (runType === 'stop') {
if (res.data.msg.includes('already')) {
message.warning({
content: `已经停止, 请根据情况开始抓包`,
content: t('views.traceManage.pcap.execUPFStopA'),
duration: 10,
});
} else {
message.success({
content: `执行成功, 抓包已停止`,
content: t('views.traceManage.pcap.execUPFStop'),
duration: 10,
});
modalState.downBtn = true;
@@ -235,7 +239,7 @@ function fnUPF(runType: 'start' | 'stop') {
}
} else {
message.error({
content: `执行失败`,
content: t('views.traceManage.pcap.execFailed'),
duration: 3,
});
}
@@ -263,7 +267,7 @@ onMounted(() => {
}
} else {
message.warning({
content: `暂无网元列表数据`,
content: 'No Data',
duration: 2,
});
}
@@ -273,7 +277,7 @@ onMounted(() => {
<template>
<PageContainer>
<a-card :title="t('views.trace.pcap.cardTitle')">
<a-card :title="t('views.traceManage.pcap.cardTitle')">
<a-row :gutter="16">
<a-col :lg="12" :md="12" :xs="24">
<a-form
@@ -284,22 +288,22 @@ onMounted(() => {
:label-col="{ span: 5 }"
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
v-model:value="modalState.neType"
:options="useNeInfoStore().getNeCascaderOtions"
@change="fnNeChange"
:allow-clear="false"
placeholder="请选择网元"
:placeholder="t('views.traceManage.pcap.neTypePlease')"
/>
</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>
</a-form-item>
<template v-if="modalState.neType[0] === 'UPF'">
<a-form-item
:label="t('views.trace.pcap.capStart')"
:label="t('views.traceManage.pcap.capStart')"
name="upfStart"
v-bind="modalStateFrom.validateInfos.upfStart"
>
@@ -307,7 +311,7 @@ onMounted(() => {
<a-input
v-model:value="modalState.from.upfStart"
allow-clear
placeholder="upf pacp 命令"
:placeholder="t('views.traceManage.pcap.capArgUPFPlease')"
style="width: 75%"
/>
<a-button
@@ -317,12 +321,12 @@ onMounted(() => {
:loading="modalState.confirmLoading"
@click.prevent="fnUPF('start')"
>
{{ t('views.trace.pcap.runText') }}
{{ t('views.traceManage.pcap.runText') }}
</a-button>
</a-input-group>
</a-form-item>
<a-form-item
:label="t('views.trace.pcap.capStop')"
:label="t('views.traceManage.pcap.capStop')"
name="upfStop"
v-bind="modalStateFrom.validateInfos.upfStop"
>
@@ -330,7 +334,7 @@ onMounted(() => {
<a-input
v-model:value="modalState.from.upfStop"
allow-clear
placeholder="upf pacp 命令"
:placeholder="t('views.traceManage.pcap.capArgUPFPlease')"
style="width: 75%"
/>
<a-button
@@ -340,32 +344,32 @@ onMounted(() => {
:loading="modalState.confirmLoading"
@click.prevent="fnUPF('stop')"
>
{{ t('views.trace.pcap.runText') }}
{{ t('views.traceManage.pcap.runText') }}
</a-button>
</a-input-group>
</a-form-item>
</template>
<template v-else>
<a-form-item
:label="t('views.trace.pcap.capArg')"
:label="t('views.traceManage.pcap.capArg')"
name="cmd"
v-bind="modalStateFrom.validateInfos.cmd"
>
<a-input
v-model:value="modalState.from.cmd"
allow-clear
placeholder="tcpdump any 参数"
:placeholder="t('views.traceManage.pcap.capArgPlease')"
>
</a-input>
</a-form-item>
<a-form-item
:label="t('views.trace.pcap.capTime')"
:label="t('views.traceManage.pcap.capTime')"
name="timeout"
v-bind="modalStateFrom.validateInfos.timeout"
>
<a-input-number
v-model:value="modalState.from.timeout"
placeholder="单位是秒's"
:placeholder="t('views.traceManage.pcap.capTimePlease')"
:min="5"
:max="120"
/>
@@ -381,8 +385,8 @@ onMounted(() => {
<template #icon><ApiOutlined /></template>
{{
runTime != 0
? t('views.trace.pcap.runTimeText', { s: runTime })
: t('views.trace.pcap.runText')
? t('views.traceManage.pcap.runTimeText', { s: runTime })
: t('views.traceManage.pcap.runText')
}}
</a-button>
<a-button
@@ -391,7 +395,7 @@ onMounted(() => {
:disabled="!modalState.confirmLoading"
@click.prevent="fnStop"
>
{{ t('views.trace.pcap.stopText') }}
{{ t('views.traceManage.pcap.stopText') }}
</a-button>
</a-space>
</a-form-item>
@@ -401,7 +405,7 @@ onMounted(() => {
<a-col :offset="2" :lg="10" :md="10" :xs="24">
<a-form layout="vertical" autocomplete="off">
<a-form-item
:label="t('views.trace.pcap.capLog')"
:label="t('views.traceManage.pcap.capLog')"
name="execLogMsg"
v-show="!!modalState.execLogMsg"
>
@@ -409,7 +413,6 @@ onMounted(() => {
v-model:value="modalState.execLogMsg"
:auto-size="{ minRows: 10, maxRows: 15 }"
:disabled="true"
placeholder="输出执行日志..."
/>
</a-form-item>
<a-form-item v-show="modalState.downBtn">
@@ -419,7 +422,7 @@ onMounted(() => {
@click.prevent="fnDownPCAP"
>
<template #icon><DownloadOutlined /></template>
{{ t('views.trace.pcap.capDownText') }}
{{ t('views.traceManage.pcap.capDownText') }}
</a-button>
</a-form-item>
</a-form>

View File

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