feat: 看板用户行为事件
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
import { ref } from 'vue';
|
||||
|
||||
/**事件数据 */
|
||||
export const cdrEventData = ref<Record<string, any>[]>([]);
|
||||
|
||||
/**事件总量 */
|
||||
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}`,
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
import { ref } from 'vue';
|
||||
|
||||
/**事件数据 */
|
||||
export const ueEventData = ref<Record<string, any>[]>([]);
|
||||
|
||||
/**事件总量 */
|
||||
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;
|
||||
}
|
||||
66
src/views/dashboard/overview/hooks/useUserActivity.ts
Normal file
66
src/views/dashboard/overview/hooks/useUserActivity.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { ref } from 'vue';
|
||||
|
||||
/**UE事件数据 */
|
||||
export const ueEventData = ref<Record<string, any>[]>([]);
|
||||
|
||||
/**UE事件总量 */
|
||||
export const ueEventTotal = ref<number>(0);
|
||||
|
||||
/**UE事件推送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);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
eType: 'ue',
|
||||
eId: `ue_${item.timestamp}`,
|
||||
id: item.id,
|
||||
type: item.eventType,
|
||||
data: evData,
|
||||
};
|
||||
}
|
||||
|
||||
/**CDR事件数据 */
|
||||
export const cdrEventData = ref<Record<string, any>[]>([]);
|
||||
|
||||
/**CDR事件总量 */
|
||||
export const cdrEventTotal = ref<number>(0);
|
||||
|
||||
/**CDR事件推送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;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
eType: 'cdr',
|
||||
eId: `cdr_${item.timestamp}`,
|
||||
id: item.id,
|
||||
data: evData,
|
||||
};
|
||||
}
|
||||
|
||||
/**CDR+UE事件数据 */
|
||||
export const eventData = ref<Record<string, any>[]>([]);
|
||||
/**CDR+UE事件总量 */
|
||||
export const eventTotal = ref<number>(0);
|
||||
/**CDR/UE事件推送id */
|
||||
export const eventId = ref<string>('');
|
||||
@@ -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<string, any>) {
|
||||
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<string, any>[] = [];
|
||||
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<string, any>[] = [];
|
||||
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,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user