diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index 2d117895..6d983481 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -518,18 +518,15 @@ export default { topology: { title: "Network Topology", }, - cdrEvent: { - title: "CDR User Activity", - id: "Serial", + userActivity: { + title: "User Activity", type: "Type", - msg: "Info", + duration: "Duration", + caller: "Caller", + called: "Called", + result: "Result", + time: "Time", }, - ueEvent: { - title: "UE User Activity", - id: "IMSI", - type: "Type", - msg: "Info", - } }, }, neUser: { diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index ad1a21f2..9ecb864b 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -518,18 +518,15 @@ export default { topology: { title: "网络拓扑", }, - cdrEvent: { - title: "CDR用户活动", - id: "编号", + userActivity: { + title: "用户活动", type: "类型", - msg: "信息", + duration: "时长", + caller: "主叫", + called: "被叫", + result: "结果", + time: "时间", }, - ueEvent: { - title: "UE用户活动", - id: "IMSI", - type: "类型", - msg: "信息", - } } }, neUser: { diff --git a/src/views/dashboard/overview/components/CDREvent/index.vue b/src/views/dashboard/overview/components/CDREvent/index.vue deleted file mode 100644 index d53cf34c..00000000 --- a/src/views/dashboard/overview/components/CDREvent/index.vue +++ /dev/null @@ -1,134 +0,0 @@ - - - - - diff --git a/src/views/dashboard/overview/components/UEEvent/index.vue b/src/views/dashboard/overview/components/UEEvent/index.vue deleted file mode 100644 index be9d59ba..00000000 --- a/src/views/dashboard/overview/components/UEEvent/index.vue +++ /dev/null @@ -1,128 +0,0 @@ - - - - - diff --git a/src/views/dashboard/overview/components/UserActivity/index.vue b/src/views/dashboard/overview/components/UserActivity/index.vue new file mode 100644 index 00000000..a1b610c7 --- /dev/null +++ b/src/views/dashboard/overview/components/UserActivity/index.vue @@ -0,0 +1,264 @@ + + + + + diff --git a/src/views/dashboard/overview/hooks/useCDREvent.ts b/src/views/dashboard/overview/hooks/useCDREvent.ts deleted file mode 100644 index bf516514..00000000 --- a/src/views/dashboard/overview/hooks/useCDREvent.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { ref } from 'vue'; - -/**事件数据 */ -export const cdrEventData = ref[]>([]); - -/**事件总量 */ -export const cdrEventTotal = ref(0); - -/**事件推送id */ -export const cdrEventId = ref(''); - -/**cdrEvent CDR会话事件 数据解析 */ -export function cdrEventParse(item: Record) { - let evData: Record = item.cdrJSON || item.CDR; - if (typeof evData === 'string') { - try { - evData = JSON.parse(evData); - } catch (error) { - console.error(error); - return false; - } - } - - if (evData.recordType === 'CALL') { - return { - id: item.id || item.timestamp, - type: evData.recordType, - time: evData.callDuration, - call: evData.callReference, - msg: `${evData.calledParty} -> ${evData.callerParty}`, - }; - } -} diff --git a/src/views/dashboard/overview/hooks/useUEEvent.ts b/src/views/dashboard/overview/hooks/useUEEvent.ts deleted file mode 100644 index 7bbe4862..00000000 --- a/src/views/dashboard/overview/hooks/useUEEvent.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { ref } from 'vue'; - -/**事件数据 */ -export const ueEventData = ref[]>([]); - -/**事件总量 */ -export const ueEventTotal = ref(0); - -/**事件推送id */ -export const ueEventId = ref(''); - -/**ueEvent UE会话事件 数据解析 */ -export function ueEventParse(item: Record) { - let evData: Record = item.eventJSON; - if (typeof evData === 'string') { - try { - evData = JSON.parse(evData); - } catch (error) { - console.error(error); - } - } - - if (item.eventType === 'auth-result') { - return { - id: item.id || item.timestamp, - type: item.eventType, - time: evData.authTime, - imsi: evData.imsi, - msg: `${evData.authMessage}`, - }; - } - - if (item.eventType === 'detach') { - return { - id: item.id || item.timestamp, - type: item.eventType, - time: evData.detachTime, - imsi: evData.imsi, - msg: `${evData.detachResult}`, - }; - } - - if (item.eventType === 'cm-state') { - return { - id: item.id || item.timestamp, - type: item.eventType, - time: evData.changeTime, - imsi: evData.imsi, - msg: `${evData.onlineNumber}`, - }; - } - - return false; -} diff --git a/src/views/dashboard/overview/hooks/useUserActivity.ts b/src/views/dashboard/overview/hooks/useUserActivity.ts new file mode 100644 index 00000000..3652edb4 --- /dev/null +++ b/src/views/dashboard/overview/hooks/useUserActivity.ts @@ -0,0 +1,66 @@ +import { ref } from 'vue'; + +/**UE事件数据 */ +export const ueEventData = ref[]>([]); + +/**UE事件总量 */ +export const ueEventTotal = ref(0); + +/**UE事件推送id */ +export const ueEventId = ref(''); + +/**ueEvent UE会话事件 数据解析 */ +export function ueEventParse(item: Record) { + let evData: Record = item.eventJSON; + if (typeof evData === 'string') { + try { + evData = JSON.parse(evData); + } catch (error) { + console.error(error); + } + } + + return { + eType: 'ue', + eId: `ue_${item.timestamp}`, + id: item.id, + type: item.eventType, + data: evData, + }; +} + +/**CDR事件数据 */ +export const cdrEventData = ref[]>([]); + +/**CDR事件总量 */ +export const cdrEventTotal = ref(0); + +/**CDR事件推送id */ +export const cdrEventId = ref(''); + +/**cdrEvent CDR会话事件 数据解析 */ +export function cdrEventParse(item: Record) { + let evData: Record = item.cdrJSON || item.CDR; + if (typeof evData === 'string') { + try { + evData = JSON.parse(evData); + } catch (error) { + console.error(error); + return false; + } + } + + return { + eType: 'cdr', + eId: `cdr_${item.timestamp}`, + id: item.id, + data: evData, + }; +} + +/**CDR+UE事件数据 */ +export const eventData = ref[]>([]); +/**CDR+UE事件总量 */ +export const eventTotal = ref(0); +/**CDR/UE事件推送id */ +export const eventId = ref(''); diff --git a/src/views/dashboard/overview/hooks/useWS.ts b/src/views/dashboard/overview/hooks/useWS.ts index a9deb43c..073594ee 100644 --- a/src/views/dashboard/overview/hooks/useWS.ts +++ b/src/views/dashboard/overview/hooks/useWS.ts @@ -2,17 +2,12 @@ import { RESULT_CODE_ERROR } from '@/constants/result-constants'; import { OptionsType, WS } from '@/plugins/ws-websocket'; import { onBeforeUnmount, onMounted } from 'vue'; import { - ueEventData, - ueEventId, - ueEventTotal, ueEventParse, -} from './useUEEvent'; -import { - cdrEventData, - cdrEventTotal, - cdrEventId, cdrEventParse, -} from './useCDREvent'; + eventData, + eventTotal, + eventId, +} from './useUserActivity'; import { upfTotalFlow, upfTFParse } from './useUPFTotalFlow'; import { neStateParse } from './useTopology'; @@ -28,21 +23,20 @@ export default function useWS() { /**接收数据后回调 */ function wsError(ev: any) { // 接收数据后回调 - console.log(ev); + console.error(ev); } /**接收数据后回调 */ function wsMessage(res: Record) { - console.log(res); + // console.log(res); const { code, requestId, data } = res; if (code === RESULT_CODE_ERROR) { console.warn(res.msg); return; } - if (!requestId) return; - + // 网元状态 - if (requestId.startsWith('neState')) { + if (requestId && requestId.startsWith('neState')) { const neType = requestId.split('_')[1]; neStateParse(neType, data); return; @@ -53,35 +47,27 @@ export default function useWS() { // ueEvent UE会话事件 case '1010': if (Array.isArray(data.rows)) { - ueEventTotal.value = data.total; - const evDataArr: Record[] = []; + eventTotal.value += data.total; for (const item of data.rows) { const v = ueEventParse(item); if (v) { - evDataArr.push(v); + eventData.value.push(v); } } - ueEventData.value = evDataArr; - if (evDataArr.length > 0) { - ueEventId.value = evDataArr[0].id; - } + eventId.value = eventData.value[0].eId; } break; //cdrEvent CDR会话事件 case '1005': if (Array.isArray(data.rows)) { - cdrEventTotal.value = data.total; - const evDataArr: Record[] = []; + eventTotal.value += data.total; for (const item of data.rows) { const v = cdrEventParse(item); if (v) { - evDataArr.push(v); + eventData.value.push(v); } } - cdrEventData.value = evDataArr; - if (evDataArr.length > 0) { - cdrEventId.value = evDataArr[0].id; - } + eventId.value = eventData.value[0].eId; } break; //UPF-总流量数 @@ -112,8 +98,12 @@ export default function useWS() { if (data.data) { const v = ueEventParse(data.data); if (v) { - ueEventData.value.unshift(v); - ueEventId.value = v.id; + eventData.value.unshift(v); + eventTotal.value += 1; + eventId.value = v.eId; + if (eventData.value.length > 50) { + eventData.value.pop(); + } } } break; @@ -122,8 +112,12 @@ export default function useWS() { if (data.data) { const v = cdrEventParse(data.data); if (v) { - cdrEventData.value.unshift(v); - cdrEventId.value = v.id; + eventData.value.unshift(v); + eventTotal.value += 1; + eventId.value = v.eId; + if (eventData.value.length > 50) { + eventData.value.pop(); + } } } break; @@ -154,7 +148,7 @@ export default function useWS() { sortField: 'timestamp', sortOrder: 'desc', pageNum: 1, - pageSize: 50, + pageSize: 25, }, }); } @@ -170,7 +164,7 @@ export default function useWS() { sortField: 'timestamp', sortOrder: 'desc', pageNum: 1, - pageSize: 50, + pageSize: 25, }, }); } diff --git a/src/views/dashboard/overview/index.vue b/src/views/dashboard/overview/index.vue index 910f68a2..e3bbb1fe 100644 --- a/src/views/dashboard/overview/index.vue +++ b/src/views/dashboard/overview/index.vue @@ -3,8 +3,7 @@ import { onBeforeUnmount, onMounted, reactive, ref } from 'vue'; import useI18n from '@/hooks/useI18n'; import Topology from './components/Topology/index.vue'; import NeResources from './components/NeResources/index.vue'; -import UEEvent from './components/UEEvent/index.vue'; -import CDREvent from './components/CDREvent/index.vue'; +import UserActivity from './components/UserActivity/index.vue'; import AlarnDayLine from './components/AlarnDayLine/index.vue'; import AlarnTypeBar from './components/AlarnTypeBar/index.vue'; import UPFFlow from './components/UPFFlow/index.vue'; @@ -75,6 +74,7 @@ async function fnGetState() { stateTimeout.value = setTimeout(() => fnGetState(), 5_000); } +/**初始数据函数 */ function InitData() { cdrEventSend(); ueEventSend(); @@ -188,32 +188,22 @@ onBeforeUnmount(() => {

{{ onlineInfo.nbNum }}

- + {{ t('views.dashboard.overview.skim.base') }}
- -
-
-

{{ t('views.dashboard.overview.alarmType.title') }}

-
- -
-
-
- - -
+ +

   - {{ t('views.dashboard.overview.cdrEvent.title') }} + {{ t('views.dashboard.overview.userActivity.title') }}

- +
@@ -305,15 +295,21 @@ onBeforeUnmount(() => {
- -
+ +
-

-    - {{ t('views.dashboard.overview.ueEvent.title') }} -

+

{{ t('views.dashboard.overview.alarmType.title') }}

- + +
+
+
+ +
+
+

{{ t('views.dashboard.overview.alarmType.title') }}

+
+