feat: 看板IMS会话数

This commit is contained in:
TsMask
2024-01-31 12:11:20 +08:00
parent 1b41e245a2
commit f8e6d6060c
2 changed files with 44 additions and 20 deletions

View File

@@ -7,7 +7,8 @@ import UserActivity from './components/UserActivity/index.vue';
import AlarnTypeBar from './components/AlarnTypeBar/index.vue';
import UPFFlow from './components/UPFFlow/index.vue';
import { listSub } from '@/api/neUser/sub';
import { listUENum } from '@/api/neUser/ue';
import { listUENumBySMF } from '@/api/neUser/smf';
import { listUENumByIMS } from '@/api/neUser/ims';
import { listBase5G } from '@/api/neUser/base5G';
import {
@@ -15,12 +16,14 @@ import {
graphState,
notNeNodes,
graphNodeStateNum,
neStateRequestMap,
} from './hooks/useTopology';
import { upfTotalFlow, upfTFActive } from './hooks/useUPFTotalFlow';
import { useFullscreen } from '@vueuse/core';
import useWS from './hooks/useWS';
import useAppStore from '@/store/modules/app';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
const appStore = useAppStore();
const { t } = useI18n();
const { wsSend, cdrEventSend, ueEventSend, upfTFSend } = useWS();
@@ -29,15 +32,18 @@ const { wsSend, cdrEventSend, ueEventSend, upfTFSend } = useWS();
let onlineInfo: {
/**签约用户数量 */
subNum: number;
/**在线用户数 */
ueNum: any;
/**SMF在线用户数 */
smfUeNum: number;
/**IMS在线用户数 */
imsUeNum: number;
/**基站数量 */
nbNum: number;
/**原始严重程度 */
activeAlarmSeverity: DictType[];
} = reactive({
subNum: 0,
ueNum: 0,
smfUeNum: 0,
imsUeNum: 0,
nbNum: 0,
activeAlarmSeverity: [],
});
@@ -53,13 +59,17 @@ const stateInterval = ref<any>(null);
const stateTimeout = ref<any>(null);
/**查询网元状态 */
async function fnGetState() {
function fnGetState() {
clearTimeout(stateTimeout.value);
// 获取节点状态
for (const node of graphState.data.nodes) {
if (notNeNodes.includes(node.id)) continue;
const { neType, neId } = node.neInfo;
if (!neType || !neId) continue;
// 请求标记检查避免重复发送
if (neStateRequestMap.value.get(neType)) continue;
neStateRequestMap.value.set(neType, true);
wsSend({
requestId: `neState_${neType}_${neId}`,
type: 'ne_state',
@@ -70,7 +80,7 @@ async function fnGetState() {
});
}
// stateTimeout.value = setTimeout(() => fnGetState(), 5_000);
stateTimeout.value = setTimeout(() => fnGetState(), 5_000);
}
/**初始数据函数 */
@@ -110,7 +120,8 @@ onMounted(() => {
/**每页条数 */
pageSize: 20,
}),
listUENum('001'),
listUENumBySMF('001'),
listUENumByIMS('001'),
])
.then(resArr => {
if (resArr[0].status === 'fulfilled') {
@@ -125,11 +136,18 @@ onMounted(() => {
onlineInfo.nbNum = resArr[1].value.rows.length;
}
if (
resArr[2].status === 'fulfilled' &&
resArr[2].value?.code === RESULT_CODE_SUCCESS
) {
onlineInfo.ueNum = resArr[2].value?.data;
if (resArr[2].status === 'fulfilled') {
const res = resArr[2].value;
if (res.code === RESULT_CODE_SUCCESS) {
onlineInfo.smfUeNum = res.data;
}
}
if (resArr[3].status === 'fulfilled') {
const res = resArr[3].value;
if (res.code === RESULT_CODE_SUCCESS) {
onlineInfo.imsUeNum = res.data;
}
}
})
.finally(() => {
@@ -177,19 +195,19 @@ onBeforeUnmount(() => {
</span>
</div>
<div class="item">
<h4>{{ onlineInfo.ueNum }}</h4>
<span>
<UserSwitchOutlined style="color: #6acca3" />
Data {{ t('views.dashboard.overview.skim.session') }}
</span>
</div>
<div class="item">
<h4>0</h4>
<h4>{{ onlineInfo.imsUeNum }}</h4>
<span>
<UserSwitchOutlined style="color: #6acca3" />
IMS {{ t('views.dashboard.overview.skim.session') }}
</span>
</div>
<div class="item">
<h4>{{ onlineInfo.smfUeNum }}</h4>
<span>
<UserSwitchOutlined style="color: #6acca3" />
Data {{ t('views.dashboard.overview.skim.session') }}
</span>
</div>
</div>
</div>