From dee60e06992531392b56338366c7ae20c50d89f3 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 11 Mar 2025 15:41:59 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=B8=A6?= =?UTF-8?q?=E6=97=B6=E5=8C=BA=E7=9A=84=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/date-utils.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/utils/date-utils.ts b/src/utils/date-utils.ts index 74404def..1de1bce7 100644 --- a/src/utils/date-utils.ts +++ b/src/utils/date-utils.ts @@ -20,6 +20,9 @@ export const YYYYMMDDHHMMSS = 'YYYYMMDDHHmmss'; /**年-月-日 时:分:秒 列如:2022-12-30 01:01:59 */ export const YYYY_MM_DD_HH_MM_SS = 'YYYY-MM-DD HH:mm:ss'; +/**年-月-日 时:分:秒 列如:2022-12-30T01:01:59+08:00 */ +export const YYYY_MM_DD_HH_MM_SSZ = 'YYYY-MM-DD HH:mm:ssZZ'; + /** * 格式时间字符串 * @param dateStr 时间字符串 @@ -36,12 +39,12 @@ export function parseStrToDate( /** * 格式时间 * @param date 可转的Date对象 - * @param formatStr 时间格式 默认YYYY-MM-DD HH:mm:ss + * @param formatStr 时间格式 默认YYYY-MM-DD HH:mm:ssZZ * @returns 时间格式字符串 */ export function parseDateToStr( date: string | number | Date, - formatStr: string = YYYY_MM_DD_HH_MM_SS + formatStr: string = YYYY_MM_DD_HH_MM_SSZ ): string { return dayjs(date).format(formatStr); } From ea2ce56e52d099a500a134780174f7b19b7674f1 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 11 Mar 2025 15:49:45 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=8E=B7=E5=8F=96=E9=80=BB=E8=BE=91=E5=B9=B6=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=95=B0=E6=8D=AE=E4=BD=BF=E7=94=A8=E6=83=85=E5=86=B5?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/dashboard/smfCDRByIMSI/index.vue | 31 +++++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/views/dashboard/smfCDRByIMSI/index.vue b/src/views/dashboard/smfCDRByIMSI/index.vue index dea8bf0b..7c99e830 100644 --- a/src/views/dashboard/smfCDRByIMSI/index.vue +++ b/src/views/dashboard/smfCDRByIMSI/index.vue @@ -229,7 +229,7 @@ function fnRanderChart() { // 创建 ResizeObserver 实例 监听图表容器大小变化,并在变化时调整图表大小 var observer = new ResizeObserver(entries => { - if (cdrChart) { + if (cdrChart && !cdrChart.isDisposed) { cdrChart.resize(); } }); @@ -295,6 +295,8 @@ let state = reactive({ total: 0, /**表格加载状态 */ loading: false, + /**数据总量 up,down */ + dataUsage: ['0 B', '0 B'], }); /**查询列表, pageNum初始页数 */ @@ -455,6 +457,18 @@ function fnRanderChartDataUpdate() { ], }); cdrChart.hideLoading(); + + // 累加总量 + let uplinkTotal = 0; + let downlinkTotal = 0; + for (let index = 0; index < dataVolumeUplinkYSeriesData.length; index++) { + uplinkTotal += dataVolumeUplinkYSeriesData[index]; + downlinkTotal += dataVolumeDownlinkYSeriesData[index]; + } + state.dataUsage = [ + parseSizeFromByte(uplinkTotal), + parseSizeFromByte(downlinkTotal), + ]; } /** @@ -549,9 +563,9 @@ onMounted(() => { if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) { if (res.data.length > 0) { let arr: Record[] = []; - res.data.forEach(i => { - if (i.neType === 'SMF') { - arr.push({ value: i.neId, label: i.neName }); + res.data.forEach((v: any) => { + if (v.neType === 'SMF') { + arr.push({ value: v.neId, label: v.neName }); } }); neOtions.value = arr; @@ -669,6 +683,15 @@ onBeforeUnmount(() => {
+ + + + {{ state.dataUsage[0] }} + + + {{ state.dataUsage[1] }} + +
From 3363e36669e6958954ff5e0e53ff28b7698b3c26 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 11 Mar 2025 15:50:09 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fix:=20=E6=80=BB=E8=A7=88=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E7=B4=AF=E5=8A=A0/=E5=9F=BA=E7=AB=99=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/dashboard/overview/index.vue | 13 ++++++++----- src/views/ne-data/base-station/list.vue | 5 ++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/views/dashboard/overview/index.vue b/src/views/dashboard/overview/index.vue index 089712b5..82f33f49 100644 --- a/src/views/dashboard/overview/index.vue +++ b/src/views/dashboard/overview/index.vue @@ -72,6 +72,7 @@ let neCascaderOptions = ref[]>([]); const viewportDom = ref(null); const { isFullscreen, toggle } = useFullscreen(viewportDom); +let initFlag = false; /**10s调度器 */ const interval10s = ref(null); @@ -220,7 +221,7 @@ function loadData() { clearInterval(interval5s.value); interval5s.value = setInterval(() => { - if (!interval5s.value) return; + if (!interval5s.value || !initFlag) return; fnGetSkim(); // 获取概览信息 fnGetNeState(); // 获取网元状态 upfTFSend('0'); @@ -298,6 +299,7 @@ onMounted(() => { } }) .finally(() => { + initFlag = true; fnGetSkim().then(() => { loadData(); }); @@ -309,6 +311,7 @@ onBeforeUnmount(() => { interval10s.value = null; clearInterval(interval5s.value); interval5s.value = null; + initFlag = false; }); @@ -392,7 +395,7 @@ onBeforeUnmount(() => {
@@ -406,7 +409,7 @@ onBeforeUnmount(() => {
@@ -429,7 +432,7 @@ onBeforeUnmount(() => {
@@ -443,7 +446,7 @@ onBeforeUnmount(() => {
diff --git a/src/views/ne-data/base-station/list.vue b/src/views/ne-data/base-station/list.vue index 44b9c955..06640be4 100644 --- a/src/views/ne-data/base-station/list.vue +++ b/src/views/ne-data/base-station/list.vue @@ -30,6 +30,8 @@ import { import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import saveAs from 'file-saver'; import { readSheet, writeSheet } from '@/utils/execl-utils'; +import { useRoute } from 'vue-router'; +const route = useRoute(); // 异步加载组件 const HistoryModal = defineAsyncComponent( () => import('./components/history.vue') @@ -666,7 +668,8 @@ onMounted(() => { }); neCascaderOptions.value = arr; // 无查询参数neType时 默认选择AMF - const item = arr.find(s => s.value === 'AMF'); + const queryNeType = (route.query.neType as string) || 'AMF'; + const item = arr.find(s => s.value === queryNeType); if (item && item.children) { const info = item.children[0]; neTypeAndId.value = [info.neType, info.neId]; From e09369aa5a9be6f6f0be202ba48fb3e3f9173f0b Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 11 Mar 2025 15:59:05 +0800 Subject: [PATCH 4/6] =?UTF-8?q?style:=20=E5=A4=9A=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E5=AE=89=E8=A3=85-Install?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/locales/en-US.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index 409d6e04..b7ed09f9 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -694,7 +694,7 @@ export default { installSourceUpload: 'New Upload', installSelect: 'Select Record', installUpload: 'Upload File', - installText: 'Installed', + installText: 'Install', licenseTitle: "Licenses", licenseDesc: "Network element service authorization certification", licenseResultTitle: "Whether to authorize activation immediately", From 5304b298f65e0de9856f1f737beb9b5d4812a8e6 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 11 Mar 2025 16:01:33 +0800 Subject: [PATCH 5/6] =?UTF-8?q?fix:=20=E7=BD=91=E5=85=83=E8=AE=B8=E5=8F=AF?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=A1=A8=E6=A0=BC=E5=88=97=E5=AE=BD=E5=92=8C?= =?UTF-8?q?=E5=9B=BE=E6=A0=87=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/ne/neLicense/index.vue | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/views/ne/neLicense/index.vue b/src/views/ne/neLicense/index.vue index 42d32688..ff673808 100644 --- a/src/views/ne/neLicense/index.vue +++ b/src/views/ne/neLicense/index.vue @@ -105,7 +105,7 @@ let tableColumns = ref([ title: t('views.ne.common.serialNum'), dataIndex: 'serialNum', align: 'left', - width: 100, + width: 120, }, { title: t('views.ne.common.expiryDate'), @@ -126,12 +126,12 @@ let tableColumns = ref([ { title: t('common.updateTime'), dataIndex: 'updateTime', - align: 'center', + align: 'left', customRender(opt) { if (!opt.value) return ''; return parseDateToStr(opt.value); }, - width: 150, + width: 200, }, { title: t('common.operate'), @@ -413,7 +413,7 @@ onMounted(() => { :loading="modalState.confirmLoading" @click.prevent="fnRecordStateBatch()" > - + {{ t('views.ne.neLicense.reloadBatch') }} @@ -508,7 +508,7 @@ onMounted(() => { - + @@ -517,7 +517,7 @@ onMounted(() => { type="link" @click.prevent="fnModalVisibleByEdit(record.id)" > - + From 91c9829d774374a85da0e98ed334b723a82fcf5c Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Tue, 11 Mar 2025 16:03:36 +0800 Subject: [PATCH 6/6] =?UTF-8?q?style:=20=E4=BC=98=E5=8C=96PacketTable?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E7=9A=84=E6=BB=9A=E5=8A=A8=E6=9D=A1=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=E5=92=8C=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tshark/components/PacketTable.vue | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/views/traceManage/tshark/components/PacketTable.vue b/src/views/traceManage/tshark/components/PacketTable.vue index 1b1a8874..3b7300b3 100644 --- a/src/views/traceManage/tshark/components/PacketTable.vue +++ b/src/views/traceManage/tshark/components/PacketTable.vue @@ -234,19 +234,14 @@ watchEffect(() => { text-align: right; } .thead-item:nth-child(2), -.tbody-item:nth-child(2) { - flex-basis: 8rem; - width: 8rem; -} +.tbody-item:nth-child(2), .thead-item:nth-child(3), -.tbody-item:nth-child(3) { - flex-basis: 8rem; - width: 8rem; -} +.tbody-item:nth-child(3), .thead-item:nth-child(4), .tbody-item:nth-child(4) { flex-basis: 8rem; width: 8rem; + overflow-y: auto; } .thead-item:nth-child(5), .tbody-item:nth-child(5) { @@ -271,16 +266,32 @@ watchEffect(() => { } /* 修改滚动条的样式 */ +.thead-item:nth-child(2)::-webkit-scrollbar, +.tbody-item:nth-child(2)::-webkit-scrollbar, +.tbody-item:nth-child(3)::-webkit-scrollbar, +.tbody-item:nth-child(4)::-webkit-scrollbar, .tbody-item:nth-child(7)::-webkit-scrollbar { width: 4px; /* 设置滚动条宽度 */ height: 4px; } +.thead-item:nth-child(2)::-webkit-scrollbar-track, +.tbody-item:nth-child(2)::-webkit-scrollbar-track, +.tbody-item:nth-child(3)::-webkit-scrollbar-track, +.tbody-item:nth-child(4)::-webkit-scrollbar-track, .tbody-item:nth-child(7)::-webkit-scrollbar-track { background-color: #f0f0f0; /* 设置滚动条轨道背景颜色 */ } +.thead-item:nth-child(2)::-webkit-scrollbar-thumb, +.tbody-item:nth-child(2)::-webkit-scrollbar-thumb, +.tbody-item:nth-child(3)::-webkit-scrollbar-thumb, +.tbody-item:nth-child(4)::-webkit-scrollbar-thumb, .tbody-item:nth-child(7)::-webkit-scrollbar-thumb { background-color: #bfbfbf; /* 设置滚动条滑块颜色 */ } +.thead-item:nth-child(2)::-webkit-scrollbar-thumb:hover, +.tbody-item:nth-child(2)::-webkit-scrollbar-thumb:hover, +.tbody-item:nth-child(3)::-webkit-scrollbar-thumb:hover, +.tbody-item:nth-child(4)::-webkit-scrollbar-thumb:hover, .tbody-item:nth-child(7)::-webkit-scrollbar-thumb:hover { background-color: #1890ff; /* 设置鼠标悬停时滚动条滑块颜色 */ }