style: 信令分析多语言
This commit is contained in:
@@ -16,6 +16,9 @@ export async function listTraceData(query: Record<string, any>) {
|
|||||||
if (query.imsi) {
|
if (query.imsi) {
|
||||||
querySQL += ` and imsi = '${query.imsi}' `;
|
querySQL += ` and imsi = '${query.imsi}' `;
|
||||||
}
|
}
|
||||||
|
if (query.msisdn) {
|
||||||
|
querySQL += ` and msisdn = '${query.msisdn}' `;
|
||||||
|
}
|
||||||
|
|
||||||
// 分页
|
// 分页
|
||||||
const pageNum = query.pageNum - 1;
|
const pageNum = query.pageNum - 1;
|
||||||
|
|||||||
@@ -162,6 +162,25 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
trace: {
|
trace: {
|
||||||
|
analysis: {
|
||||||
|
imsi: 'IMSI',
|
||||||
|
imsiPlease: 'Please enter IMSI',
|
||||||
|
msisdn: 'MSISDN',
|
||||||
|
msisdnPlease: 'Please enter MSISDN',
|
||||||
|
trackTaskId: 'Tracking task tag',
|
||||||
|
srcIp: 'Source IP address',
|
||||||
|
dstIp: 'Destination IP address',
|
||||||
|
signalType: 'Signaling type',
|
||||||
|
msgDirect: 'Message direct',
|
||||||
|
msgType: 'Message type',
|
||||||
|
rowTime: 'Record time',
|
||||||
|
signalData: 'Signaling data',
|
||||||
|
signalDetail: 'Signaling details',
|
||||||
|
noData: 'No information content',
|
||||||
|
taskTitle: "Task {num}",
|
||||||
|
taskDownText: "Download HTML",
|
||||||
|
taskDownTip: "Confirm downloading the signaling details HTML file?",
|
||||||
|
},
|
||||||
pcap: {
|
pcap: {
|
||||||
cardTitle: 'PCAP capture',
|
cardTitle: 'PCAP capture',
|
||||||
neType: 'Type',
|
neType: 'Type',
|
||||||
|
|||||||
@@ -131,7 +131,8 @@ export default {
|
|||||||
import: '导入',
|
import: '导入',
|
||||||
loadDataConfirm: '确认要重新加载数据吗?',
|
loadDataConfirm: '确认要重新加载数据吗?',
|
||||||
loadData: '更新数据',
|
loadData: '更新数据',
|
||||||
loadDataTip: '成功获取更新数据:{num}条,系统内部进行数据更新,请勿重复点击获取更新!!!',
|
loadDataTip:
|
||||||
|
'成功获取更新数据:{num}条,系统内部进行数据更新,请勿重复点击获取更新!!!',
|
||||||
num: '放号数',
|
num: '放号数',
|
||||||
batchAddText: '批量新增',
|
batchAddText: '批量新增',
|
||||||
batchDelText: '批量删除',
|
batchDelText: '批量删除',
|
||||||
@@ -144,9 +145,10 @@ export default {
|
|||||||
import: '导入',
|
import: '导入',
|
||||||
loadDataConfirm: '确认要重新加载数据吗?',
|
loadDataConfirm: '确认要重新加载数据吗?',
|
||||||
loadData: '更新数据',
|
loadData: '更新数据',
|
||||||
loadDataTip: '成功获取更新数据:{num}条,系统内部进行数据更新,请勿重复点击获取更新!!!',
|
loadDataTip:
|
||||||
num:'删除个数',
|
'成功获取更新数据:{num}条,系统内部进行数据更新,请勿重复点击获取更新!!!',
|
||||||
startIMSI:'起始IMSI',
|
num: '删除个数',
|
||||||
|
startIMSI: '起始IMSI',
|
||||||
},
|
},
|
||||||
base5G: {
|
base5G: {
|
||||||
neTypePlease: '查询网元类型',
|
neTypePlease: '查询网元类型',
|
||||||
@@ -162,14 +164,33 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
trace: {
|
trace: {
|
||||||
|
analysis: {
|
||||||
|
imsi: 'IMSI',
|
||||||
|
imsiPlease: '请输入IMSI',
|
||||||
|
msisdn: 'MSISDN',
|
||||||
|
msisdnPlease: '请输入MSISDN',
|
||||||
|
trackTaskId: '跟踪任务标记',
|
||||||
|
srcIp: '源IP地址',
|
||||||
|
dstIp: '目标IP地址',
|
||||||
|
signalType: '信令类型',
|
||||||
|
msgDirect: '消息元',
|
||||||
|
msgType: '消息类型',
|
||||||
|
rowTime: '记录时间',
|
||||||
|
signalData: '信令数据',
|
||||||
|
signalDetail: '信令详情',
|
||||||
|
noData: '无信息内容',
|
||||||
|
taskTitle: '任务 {num}',
|
||||||
|
taskDownText: '下载HTML',
|
||||||
|
taskDownTip: '确认下载信令详情HTML文件?',
|
||||||
|
},
|
||||||
pcap: {
|
pcap: {
|
||||||
cardTitle: 'PCAP捕获',
|
cardTitle: 'PCAP捕获',
|
||||||
neType: '网元类型',
|
neType: '网元类型',
|
||||||
neIp: '网元IP地址',
|
neIp: '网元IP地址',
|
||||||
capArg: '抓包参数',
|
capArg: '抓包参数',
|
||||||
capTime: "时长(秒's)",
|
capTime: "时长(秒's)",
|
||||||
capLog: "执行日志",
|
capLog: '执行日志',
|
||||||
capDownText: "下载PCAP文件",
|
capDownText: '下载PCAP文件',
|
||||||
runText: '执行',
|
runText: '执行',
|
||||||
runTimeText: '执行 {s} 秒',
|
runTimeText: '执行 {s} 秒',
|
||||||
stopText: '中断',
|
stopText: '中断',
|
||||||
@@ -206,12 +227,12 @@ export default {
|
|||||||
rangePickerPlease: '请选择任务时间开始结束时间',
|
rangePickerPlease: '请选择任务时间开始结束时间',
|
||||||
comment: '任务说明',
|
comment: '任务说明',
|
||||||
commentPlease: '可输入任务说明',
|
commentPlease: '可输入任务说明',
|
||||||
addTask: "添加任务",
|
addTask: '添加任务',
|
||||||
editTask: "修改任务",
|
editTask: '修改任务',
|
||||||
viewTask: "查看任务",
|
viewTask: '查看任务',
|
||||||
errorTaskInfo: "获取任务信息失败",
|
errorTaskInfo: '获取任务信息失败',
|
||||||
delTask: "成功删除任务 {num}",
|
delTask: '成功删除任务 {num}',
|
||||||
delTaskTip: "确认删除记录编号为 {num} 的数据项?",
|
delTaskTip: '确认删除记录编号为 {num} 的数据项?',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ let title = ref<string>((route.meta.title as string) ?? '标题');
|
|||||||
let queryParams = reactive({
|
let queryParams = reactive({
|
||||||
/**移动号 */
|
/**移动号 */
|
||||||
imsi: '',
|
imsi: '',
|
||||||
|
/**移动号 */
|
||||||
|
msisdn: '',
|
||||||
/**当前页数 */
|
/**当前页数 */
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
/**每页条数 */
|
/**每页条数 */
|
||||||
@@ -63,47 +65,47 @@ let tableState: TabeStateType = reactive({
|
|||||||
/**表格字段列 */
|
/**表格字段列 */
|
||||||
let tableColumns: ColumnsType = [
|
let tableColumns: ColumnsType = [
|
||||||
{
|
{
|
||||||
title: '跟踪任务标记',
|
title: t('views.trace.analysis.trackTaskId'),
|
||||||
dataIndex: 'taskId',
|
dataIndex: 'taskId',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'IMSI',
|
title: t('views.trace.analysis.imsi'),
|
||||||
dataIndex: 'imsi',
|
dataIndex: 'imsi',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: 'MSISDN',
|
title: t('views.trace.analysis.msisdn'),
|
||||||
dataIndex: 'msisdn',
|
dataIndex: 'msisdn',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '源地址',
|
title: t('views.trace.analysis.srcIp'),
|
||||||
dataIndex: 'srcAddr',
|
dataIndex: 'srcAddr',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '目标地址',
|
title: t('views.trace.analysis.dstIp'),
|
||||||
dataIndex: 'dstAddr',
|
dataIndex: 'dstAddr',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '信令类型',
|
title: t('views.trace.analysis.signalType'),
|
||||||
dataIndex: 'ifType',
|
dataIndex: 'ifType',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '消息类型',
|
title: t('views.trace.analysis.msgType'),
|
||||||
dataIndex: 'msgType',
|
dataIndex: 'msgType',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '消息元',
|
title: t('views.trace.analysis.msgDirect'),
|
||||||
dataIndex: 'msgDirect',
|
dataIndex: 'msgDirect',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '记录时间',
|
title: t('views.trace.analysis.rowTime'),
|
||||||
dataIndex: 'timestamp',
|
dataIndex: 'timestamp',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
customRender(opt) {
|
customRender(opt) {
|
||||||
@@ -178,10 +180,11 @@ type ModalStateType = {
|
|||||||
/**抽屉对象信息状态 */
|
/**抽屉对象信息状态 */
|
||||||
let modalState: ModalStateType = reactive({
|
let modalState: ModalStateType = reactive({
|
||||||
visible: false,
|
visible: false,
|
||||||
title: '信令信息',
|
title: '',
|
||||||
from: {
|
from: {
|
||||||
rawData: '',
|
rawData: '',
|
||||||
rawDataHTML: '',
|
rawDataHTML: '',
|
||||||
|
downBtn: false,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -211,11 +214,12 @@ function fnModalVisible(row: Record<string, any>) {
|
|||||||
'style="background:#ffffff"'
|
'style="background:#ffffff"'
|
||||||
);
|
);
|
||||||
modalState.from.rawDataHTML = withoutHiddenElements;
|
modalState.from.rawDataHTML = withoutHiddenElements;
|
||||||
|
modalState.from.downBtn = true;
|
||||||
} else {
|
} else {
|
||||||
modalState.from.rawDataHTML = '无信息';
|
modalState.from.rawDataHTML = t('views.trace.analysis.noData');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
modalState.title = `任务 ${row.imsi}`;
|
modalState.title = t('views.trace.analysis.taskTitle', { num: row.imsi });
|
||||||
modalState.visible = true;
|
modalState.visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,6 +228,9 @@ function fnModalVisible(row: Record<string, any>) {
|
|||||||
*/
|
*/
|
||||||
function fnModalVisibleClose() {
|
function fnModalVisibleClose() {
|
||||||
modalState.visible = false;
|
modalState.visible = false;
|
||||||
|
modalState.from.downBtn = false;
|
||||||
|
modalState.from.rawDataHTML = '';
|
||||||
|
modalState.from.rawData = '';
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将Base64编码解码为字节数组
|
// 将Base64编码解码为字节数组
|
||||||
@@ -286,8 +293,8 @@ function convertToReadableFormat(hexString: string) {
|
|||||||
/**信息文件下载 */
|
/**信息文件下载 */
|
||||||
function fnDownloadFile() {
|
function fnDownloadFile() {
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title: '提示',
|
title: t('common.tipTitle'),
|
||||||
content: `确认下载信令详情HTML文件?`,
|
content: t('views.trace.analysis.taskDownTip'),
|
||||||
onOk() {
|
onOk() {
|
||||||
const blob = new Blob([modalState.from.rawDataHTML], {
|
const blob = new Blob([modalState.from.rawDataHTML], {
|
||||||
type: 'text/plain',
|
type: 'text/plain',
|
||||||
@@ -314,11 +321,26 @@ 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="IMSI" name="imsi">
|
<a-form-item
|
||||||
|
:placeholder="t('views.trace.analysis.imsi')"
|
||||||
|
name="imsi"
|
||||||
|
>
|
||||||
<a-input
|
<a-input
|
||||||
v-model:value="queryParams.imsi"
|
v-model:value="queryParams.imsi"
|
||||||
:allow-clear="true"
|
:allow-clear="true"
|
||||||
placeholder="查询IMSI"
|
:placeholder="t('views.trace.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')"
|
||||||
|
name="imsi"
|
||||||
|
>
|
||||||
|
<a-input
|
||||||
|
v-model:value="queryParams.msisdn"
|
||||||
|
:allow-clear="true"
|
||||||
|
:placeholder="t('views.trace.analysis.msisdnPlease')"
|
||||||
></a-input>
|
></a-input>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -415,14 +437,14 @@ onMounted(() => {
|
|||||||
</a-table>
|
</a-table>
|
||||||
</a-card>
|
</a-card>
|
||||||
|
|
||||||
<!-- 新增框或修改框 -->
|
<!-- 详情框 -->
|
||||||
<a-modal
|
<a-modal
|
||||||
width="800px"
|
width="800px"
|
||||||
:title="modalState.title"
|
:title="modalState.title"
|
||||||
:visible="modalState.visible"
|
:visible="modalState.visible"
|
||||||
@cancel="fnModalVisibleClose"
|
@cancel="fnModalVisibleClose"
|
||||||
>
|
>
|
||||||
<div class="raw-title">信令数据</div>
|
<div class="raw-title">{{ t('views.trace.analysis.signalData') }}</div>
|
||||||
<a-row
|
<a-row
|
||||||
class="raw"
|
class="raw"
|
||||||
:gutter="16"
|
:gutter="16"
|
||||||
@@ -435,17 +457,17 @@ onMounted(() => {
|
|||||||
</a-row>
|
</a-row>
|
||||||
<a-divider />
|
<a-divider />
|
||||||
<div class="raw-title">
|
<div class="raw-title">
|
||||||
信令详情
|
{{ t('views.trace.analysis.signalDetail') }}
|
||||||
<a-button
|
<a-button
|
||||||
type="dashed"
|
type="dashed"
|
||||||
size="small"
|
size="small"
|
||||||
@click.prevent="fnDownloadFile"
|
@click.prevent="fnDownloadFile"
|
||||||
v-if="modalState.from.rawDataHTML !== '无信息'"
|
v-if="modalState.from.downBtn"
|
||||||
>
|
>
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<DownloadOutlined />
|
<DownloadOutlined />
|
||||||
</template>
|
</template>
|
||||||
下载HTML
|
{{ t('views.trace.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>
|
||||||
|
|||||||
Reference in New Issue
Block a user