feat: 看板CDR/UE事件框
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, onMounted } from 'vue';
|
||||
import {
|
||||
cdrEventData,
|
||||
cdrEventTotal,
|
||||
@@ -12,9 +11,11 @@ const { t } = useI18n();
|
||||
<template>
|
||||
<div class="cdr" style="display: block">
|
||||
<div class="cdr-head">
|
||||
<span class="col">call</span>
|
||||
<span class="col">行为</span>
|
||||
<span class="col-w">信息</span>
|
||||
<span class="col">{{ t('views.dashboard.overview.cdrEvent.id') }}</span>
|
||||
<span class="col">{{ t('views.dashboard.overview.cdrEvent.type') }}</span>
|
||||
<span class="col-w">
|
||||
{{ t('views.dashboard.overview.cdrEvent.msg') }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="cdr-marquee-view">
|
||||
<div
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, onMounted } from 'vue';
|
||||
import { ueEventData, ueEventTotal, ueEventId } from '../../hooks/useUEEvent';
|
||||
import useI18n from '@/hooks/useI18n';
|
||||
const { t } = useI18n();
|
||||
|
||||
onMounted(() => {});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="ue" style="display: block">
|
||||
<div class="ue-head">
|
||||
<span class="col">IMSI</span>
|
||||
<span class="col">行为</span>
|
||||
<span class="col-w">信息</span>
|
||||
<span class="col">{{ t('views.dashboard.overview.ueEvent.id') }}</span>
|
||||
<span class="col">{{ t('views.dashboard.overview.ueEvent.type') }}</span>
|
||||
<span class="col-w">{{ t('views.dashboard.overview.ueEvent.msg') }}</span>
|
||||
</div>
|
||||
<div class="ue-marquee-view">
|
||||
<div
|
||||
|
||||
@@ -8,3 +8,26 @@ export const cdrEventTotal = ref<number>(0);
|
||||
|
||||
/**事件推送id */
|
||||
export const cdrEventId = ref<string>('');
|
||||
|
||||
/**cdrEvent CDR会话事件 数据解析 */
|
||||
export function cdrEventParse(item: Record<string, any>) {
|
||||
let evData: Record<string, any> = 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}`,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,3 +8,47 @@ export const ueEventTotal = ref<number>(0);
|
||||
|
||||
/**事件推送id */
|
||||
export const ueEventId = ref<string>('');
|
||||
|
||||
/**ueEvent UE会话事件 数据解析 */
|
||||
export function ueEventParse(item: Record<string, any>) {
|
||||
let evData: Record<string, any> = 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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user