fix: 看板2用户数量显示不出
This commit is contained in:
@@ -32,12 +32,9 @@ import { useRouter } from 'vue-router';
|
|||||||
import useNeListStore from '@/store/modules/ne_list';
|
import useNeListStore from '@/store/modules/ne_list';
|
||||||
import { message } from 'ant-design-vue';
|
import { message } from 'ant-design-vue';
|
||||||
import { upfWhoId } from './hooks/useWS';
|
import { upfWhoId } from './hooks/useWS';
|
||||||
import {
|
import { listAMFNbStatelist } from '@/api/neData/amf';
|
||||||
listAMFNbStatelist,
|
|
||||||
} from '@/api/neData/amf';
|
|
||||||
import { listMMENbStatelist } from '@/api/neData/mme';
|
import { listMMENbStatelist } from '@/api/neData/mme';
|
||||||
|
|
||||||
|
|
||||||
const neListStore = useNeListStore();
|
const neListStore = useNeListStore();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
@@ -76,7 +73,6 @@ let skimState: SkimStateType = reactive({
|
|||||||
enbUeNum: 0,
|
enbUeNum: 0,
|
||||||
gNbSumNum: 0,
|
gNbSumNum: 0,
|
||||||
eNbSumNum: 0,
|
eNbSumNum: 0,
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**网元参数 */
|
/**网元参数 */
|
||||||
@@ -99,13 +95,10 @@ function fnGetNeState() {
|
|||||||
for (const node of graphState.data.nodes) {
|
for (const node of graphState.data.nodes) {
|
||||||
if (notNeNodes.includes(node.id)) continue;
|
if (notNeNodes.includes(node.id)) continue;
|
||||||
|
|
||||||
|
|
||||||
const neInfoList = node.neInfoList || [];
|
const neInfoList = node.neInfoList || [];
|
||||||
if (neInfoList.length === 0) continue;
|
if (neInfoList.length === 0) continue;
|
||||||
|
|
||||||
|
|
||||||
for (const neInfo of neInfoList) {
|
for (const neInfo of neInfoList) {
|
||||||
|
|
||||||
if (!neInfo.neType || !neInfo.neId) continue;
|
if (!neInfo.neType || !neInfo.neId) continue;
|
||||||
|
|
||||||
wsSend({
|
wsSend({
|
||||||
@@ -122,28 +115,29 @@ function fnGetNeState() {
|
|||||||
|
|
||||||
/**获取概览信息 */
|
/**获取概览信息 */
|
||||||
async function fnGetSkim() {
|
async function fnGetSkim() {
|
||||||
|
|
||||||
let tempGnbSumNum = 0;
|
|
||||||
let tempEnbSumNum = 0;
|
|
||||||
|
|
||||||
const neHandlers = new Map([
|
const neHandlers = new Map([
|
||||||
[
|
// [
|
||||||
'UDM',
|
// 'UDM',
|
||||||
{
|
// {
|
||||||
request: (neId: string) => listUDMSub({ neId: neId, pageNum: 1, pageSize: 1 }),
|
// request: (neId: string) =>
|
||||||
process: (res: any) => {
|
// listUDMSub({ neId: neId, pageNum: 1, pageSize: 1 }),
|
||||||
if (res.code === RESULT_CODE_SUCCESS && typeof res.data === 'number') {
|
// process: (res: any) =>
|
||||||
skimState.udmSubNum += res.data;
|
// res.code === RESULT_CODE_SUCCESS &&
|
||||||
}
|
// (skimState.udmSubNum += res.data.total),
|
||||||
},
|
// },
|
||||||
},
|
// ],
|
||||||
],
|
|
||||||
[
|
[
|
||||||
'SMF',
|
'SMF',
|
||||||
{
|
{
|
||||||
request: (neId: string) => listSMFSubNum(neId),
|
request: (neId: string) => listSMFSubNum(neId),
|
||||||
process: (res: any) =>
|
process: (res: any) => {
|
||||||
res.code === RESULT_CODE_SUCCESS && (skimState.smfUeNum += res.data),
|
if (
|
||||||
|
res.code === RESULT_CODE_SUCCESS &&
|
||||||
|
typeof res.data === 'number'
|
||||||
|
) {
|
||||||
|
skimState.smfUeNum += res.data;
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@@ -201,7 +195,6 @@ async function fnGetSkim() {
|
|||||||
? {
|
? {
|
||||||
promise: handler.request(child.neId),
|
promise: handler.request(child.neId),
|
||||||
process: handler.process,
|
process: handler.process,
|
||||||
neId: child.neId, // 这里加上neId
|
|
||||||
}
|
}
|
||||||
: null;
|
: null;
|
||||||
})
|
})
|
||||||
@@ -212,7 +205,7 @@ async function fnGetSkim() {
|
|||||||
|
|
||||||
// 重置
|
// 重置
|
||||||
Object.assign(skimState, {
|
Object.assign(skimState, {
|
||||||
udmSubNum: 0,
|
// udmSubNum: 0,
|
||||||
smfUeNum: 0,
|
smfUeNum: 0,
|
||||||
imsUeNum: 0,
|
imsUeNum: 0,
|
||||||
gnbNum: 0,
|
gnbNum: 0,
|
||||||
@@ -220,47 +213,22 @@ async function fnGetSkim() {
|
|||||||
enbNum: 0,
|
enbNum: 0,
|
||||||
enbUeNum: 0,
|
enbUeNum: 0,
|
||||||
});
|
});
|
||||||
const processPromises = results.map((result, index) => {
|
results.forEach((result, index) => {
|
||||||
const req = requests[index];
|
|
||||||
if (result.status === 'fulfilled') {
|
if (result.status === 'fulfilled') {
|
||||||
return req.process(result.value, req.neId);
|
requests[index].process(result.value);
|
||||||
} else {
|
} else {
|
||||||
return req.process(0, req.neId);
|
requests[index].process(0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// 等待所有 process 执行完再赋值gNbSumNum等
|
|
||||||
await Promise.all(processPromises);
|
|
||||||
|
|
||||||
skimState.gNbSumNum = tempGnbSumNum;
|
|
||||||
skimState.eNbSumNum = tempEnbSumNum;
|
|
||||||
|
|
||||||
// UDM
|
// UDM
|
||||||
// UDM - 使用await确保同步处理
|
listUDMSub({ neId: udmNeId.value, pageNum: 1, pageSize: 1 }).then(res => {
|
||||||
// try {
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
// const udmRes = await listUDMSub({ neId: udmNeId.value, pageNum: 1, pageSize: 1 });
|
skimState.udmSubNum = res.data.total;
|
||||||
// if (udmRes.code === RESULT_CODE_SUCCESS) {
|
}
|
||||||
// skimState.udmSubNum = udmRes.total;
|
});
|
||||||
// } else {
|
|
||||||
// skimState.udmSubNum = 0;
|
|
||||||
// }
|
|
||||||
// } catch (error) {
|
|
||||||
// skimState.udmSubNum = 0;
|
|
||||||
// }
|
|
||||||
// UDM
|
|
||||||
// listUDMSub({ neId: udmNeId.value, pageNum: 1, pageSize: 1 }).then(res => {
|
|
||||||
// if (res.code === RESULT_CODE_SUCCESS) {
|
|
||||||
// skimState.udmSubNum = res.data.total;
|
|
||||||
// } else {
|
|
||||||
// skimState.udmSubNum = 0;
|
|
||||||
// }
|
|
||||||
// }).catch(() => {
|
|
||||||
// skimState.udmSubNum = 0;
|
|
||||||
// });
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**初始数据函数 */
|
/**初始数据函数 */
|
||||||
function loadData() {
|
function loadData() {
|
||||||
fnGetNeState(); // 获取网元状态
|
fnGetNeState(); // 获取网元状态
|
||||||
@@ -332,11 +300,15 @@ let onlineOtions = ref<Record<string, any>[]>([]);
|
|||||||
async function fnSelectUDM(e: any) {
|
async function fnSelectUDM(e: any) {
|
||||||
udmNeId.value = e.key;
|
udmNeId.value = e.key;
|
||||||
try {
|
try {
|
||||||
const res = await listUDMSub({ neId: udmNeId.value, pageNum: 1, pageSize: 1 });
|
const res = await listUDMSub({
|
||||||
|
neId: udmNeId.value,
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 1,
|
||||||
|
});
|
||||||
// listUDMSub({ neId: udmNeId.value, pageNum: 1, pageSize: 1 }).then(res => {
|
// listUDMSub({ neId: udmNeId.value, pageNum: 1, pageSize: 1 }).then(res => {
|
||||||
if (res.code === RESULT_CODE_SUCCESS && typeof res.data === 'number') {
|
if (res.code === RESULT_CODE_SUCCESS && typeof res.data === 'number') {
|
||||||
skimState.udmSubNum = res.data;
|
skimState.udmSubNum = res.data;
|
||||||
}else{
|
} else {
|
||||||
skimState.udmSubNum = 0;
|
skimState.udmSubNum = 0;
|
||||||
}
|
}
|
||||||
// }).catch(() => {
|
// }).catch(() => {
|
||||||
@@ -360,54 +332,21 @@ const getPopupContainer = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
neListStore
|
// 获取网元网元列表
|
||||||
.fnNelist()
|
neListStore.neCascaderOptions.forEach(item => {
|
||||||
.then(res => {
|
if (item.value === 'UPF') {
|
||||||
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) {
|
neOtions.value = JSON.parse(JSON.stringify(item.children));
|
||||||
if (res.data.length > 0) {
|
}
|
||||||
// UPF
|
if (item.value === 'UDM') {
|
||||||
let arr: Record<string, any>[] = [];
|
udmOtions.value = JSON.parse(JSON.stringify(item.children));
|
||||||
res.data.forEach(i => {
|
|
||||||
if (i.neType === 'UPF') {
|
|
||||||
arr.push({ value: i.neId, label: i.neName, rmUid: i.rmUid });
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
neOtions.value = arr;
|
if (neOtions.value.length > 0) {
|
||||||
if (arr.length > 0) {
|
fnSelectNe(neOtions.value[0].value, neOtions.value[0]);
|
||||||
//queryParams.neRealId = arr[0].value;
|
|
||||||
fnSelectNe(arr[0].value, arr[0]);
|
|
||||||
}
|
}
|
||||||
//online Ne
|
if (udmOtions.value.length > 0) {
|
||||||
let onlineArr: Record<string, any>[] = [];
|
fnSelectUDM({ key: udmOtions.value[0].value });
|
||||||
|
|
||||||
// UDM
|
|
||||||
let arr1: Record<string, any>[] = [];
|
|
||||||
res.data.forEach((v: any) => {
|
|
||||||
if (v.status && ['UDM', 'UPF', 'AUSF', 'PCF', 'SMF', 'AMF', 'OMC', 'SMSC', 'IMS', 'MME'].includes(v.neType)) {
|
|
||||||
onlineArr.push({ value: v.neType + '_' + v.neId, label: v.neName, rmUid: v.rmUid });
|
|
||||||
}
|
}
|
||||||
if (v.neType === 'UDM') {
|
|
||||||
arr1.push({ value: v.neId, label: v.neName, rmUid: v.rmUid });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
udmOtions.value = arr1;
|
|
||||||
onlineOtions.value = onlineArr;
|
|
||||||
// if (arr1.length > 0) {
|
|
||||||
// fnSelectUDM({ key: arr1[0].value });
|
|
||||||
// }
|
|
||||||
// 确保设置正确的udmNeId
|
|
||||||
if (arr1.length > 0) {
|
|
||||||
udmNeId.value = arr1[0].value;
|
|
||||||
}
|
|
||||||
// 移除单独的fnSelectUDM调用,让fnGetSkim统一处理
|
|
||||||
// if (arr1.length > 0) {
|
|
||||||
// fnSelectUDM({ key: arr1[0].value });
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (onlineArr.length > 0) {
|
|
||||||
fnSelectNeRe({ key: onlineArr[0].value });
|
|
||||||
}
|
|
||||||
|
|
||||||
// 过滤不可用的网元
|
// 过滤不可用的网元
|
||||||
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter(
|
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter(
|
||||||
(item: any) => {
|
(item: any) => {
|
||||||
@@ -421,20 +360,11 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
|
||||||
message.warning({
|
|
||||||
content: t('common.noData'),
|
|
||||||
duration: 2,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
initFlag = true;
|
initFlag = true;
|
||||||
fnGetSkim().then(() => {
|
fnGetSkim().then(() => {
|
||||||
loadData();
|
loadData();
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
@@ -449,7 +379,11 @@ onBeforeUnmount(() => {
|
|||||||
<template>
|
<template>
|
||||||
<div class="viewport" ref="viewportDom">
|
<div class="viewport" ref="viewportDom">
|
||||||
<div class="brand">
|
<div class="brand">
|
||||||
<div class="brand-title" @click="toggle" :title="t('views.dashboard.overview.fullscreen')">
|
<div
|
||||||
|
class="brand-title"
|
||||||
|
@click="toggle"
|
||||||
|
:title="t('views.dashboard.overview.fullscreen')"
|
||||||
|
>
|
||||||
{{ t('views.dashboard.overview.title') }}
|
{{ t('views.dashboard.overview.title') }}
|
||||||
<FullscreenExitOutlined v-if="isFullscreen" />
|
<FullscreenExitOutlined v-if="isFullscreen" />
|
||||||
<FullscreenOutlined v-else />
|
<FullscreenOutlined v-else />
|
||||||
@@ -458,7 +392,6 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
|
|
||||||
<div class="skim panel">
|
<div class="skim panel">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="leftright">
|
<h3 class="leftright">
|
||||||
@@ -468,20 +401,33 @@ onBeforeUnmount(() => {
|
|||||||
</span>
|
</span>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="data">
|
<div class="data">
|
||||||
<div class="item toRouter" :title="t('views.dashboard.overview.toRouter')" v-if="neListStore.fnHasNe(['udm'])">
|
<div
|
||||||
|
class="item toRouter"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
v-if="neListStore.fnHasNe(['udm'])"
|
||||||
|
>
|
||||||
<div @click="fnToRouter('UdmSub_2001')">
|
<div @click="fnToRouter('UdmSub_2001')">
|
||||||
<UserOutlined style="color: #4096ff; margin-right: 8px; font-size: 1.1rem" />
|
<UserOutlined
|
||||||
|
style="color: #4096ff; margin-right: 8px; font-size: 1.1rem"
|
||||||
|
/>
|
||||||
{{ skimState.udmSubNum || 0 }}
|
{{ skimState.udmSubNum || 0 }}
|
||||||
</div>
|
</div>
|
||||||
<span>
|
<span>
|
||||||
<a-dropdown :trigger="['click']" :get-Popup-Container="getPopupContainer">
|
<a-dropdown
|
||||||
|
:trigger="['click']"
|
||||||
|
:get-Popup-Container="getPopupContainer"
|
||||||
|
>
|
||||||
<div class="toDeep-text">
|
<div class="toDeep-text">
|
||||||
{{ t('views.dashboard.overview.skim.users') }}
|
{{ t('views.dashboard.overview.skim.users') }}
|
||||||
<DownOutlined style="margin-left: 12px; font-size: 12px" />
|
<DownOutlined style="margin-left: 12px; font-size: 12px" />
|
||||||
</div>
|
</div>
|
||||||
<template #overlay>
|
<template #overlay>
|
||||||
<a-menu @click="fnSelectUDM">
|
<a-menu @click="fnSelectUDM">
|
||||||
<a-menu-item v-for="v in udmOtions" :key="v.value" :disabled="udmNeId === v.value">
|
<a-menu-item
|
||||||
|
v-for="v in udmOtions"
|
||||||
|
:key="v.value"
|
||||||
|
:disabled="udmNeId === v.value"
|
||||||
|
>
|
||||||
{{ v.label }}
|
{{ v.label }}
|
||||||
</a-menu-item>
|
</a-menu-item>
|
||||||
</a-menu>
|
</a-menu>
|
||||||
@@ -489,8 +435,14 @@ onBeforeUnmount(() => {
|
|||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item toRouter" @click="fnToRouter('ImsSub_2004')" :title="t('views.dashboard.overview.toRouter')"
|
<div
|
||||||
style="margin: 0 12px" v-perms:has="['dashboard:overview:imsUeNum']" v-if="neListStore.fnHasNe(['ims'])">
|
class="item toRouter"
|
||||||
|
@click="fnToRouter('ImsSub_2004')"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
style="margin: 0 12px"
|
||||||
|
v-perms:has="['dashboard:overview:imsUeNum']"
|
||||||
|
v-if="neListStore.fnHasNe(['ims'])"
|
||||||
|
>
|
||||||
<div>
|
<div>
|
||||||
<img :src="svgUserIMS" style="width: 18px; margin-right: 8px" />
|
<img :src="svgUserIMS" style="width: 18px; margin-right: 8px" />
|
||||||
{{ skimState.imsUeNum || 0 }}
|
{{ skimState.imsUeNum || 0 }}
|
||||||
@@ -499,8 +451,13 @@ onBeforeUnmount(() => {
|
|||||||
{{ t('views.dashboard.overview.skim.imsUeNum') }}
|
{{ t('views.dashboard.overview.skim.imsUeNum') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item toRouter" @click="fnToRouter('SmfSub_2005')" :title="t('views.dashboard.overview.toRouter')"
|
<div
|
||||||
v-perms:has="['dashboard:overview:smfUeNum']" v-if="neListStore.fnHasNe(['smf'])">
|
class="item toRouter"
|
||||||
|
@click="fnToRouter('SmfSub_2005')"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
v-perms:has="['dashboard:overview:smfUeNum']"
|
||||||
|
v-if="neListStore.fnHasNe(['smf'])"
|
||||||
|
>
|
||||||
<div>
|
<div>
|
||||||
<img :src="svgUserSMF" style="width: 18px; margin-right: 8px" />
|
<img :src="svgUserSMF" style="width: 18px; margin-right: 8px" />
|
||||||
{{ skimState.smfUeNum || 0 }}
|
{{ skimState.smfUeNum || 0 }}
|
||||||
@@ -513,11 +470,13 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!--告警统计-->
|
<!--告警统计-->
|
||||||
<div class="alarmType panel">
|
<div class="alarmType panel">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="toRouter leftright" :title="t('views.dashboard.overview.toRouter')">
|
<h3
|
||||||
|
class="toRouter leftright"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<span class="title" @click="fnToRouter('HistoryAlarm_2097')">
|
<span class="title" @click="fnToRouter('HistoryAlarm_2097')">
|
||||||
<PieChartOutlined style="color: #68d8fe" />
|
<PieChartOutlined style="color: #68d8fe" />
|
||||||
{{ t('views.dashboard.overview.alarmTypeBar.alarmSum') }}
|
{{ t('views.dashboard.overview.alarmTypeBar.alarmSum') }}
|
||||||
@@ -546,24 +505,29 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="column" style="flex: 4; margin: 1.333rem 0.833rem 0">
|
<div class="column" style="flex: 4; margin: 1.333rem 0.833rem 0">
|
||||||
|
|
||||||
<!-- 实时流量 -->
|
<!-- 实时流量 -->
|
||||||
<div class="upfFlow panel">
|
<div class="upfFlow panel">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="centerStyle">
|
<h3 class="centerStyle">
|
||||||
<span class="title">
|
<span class="title">
|
||||||
<div class="toRouter" @click="fnToRouter('GoldTarget_2104')" :title="t('views.dashboard.overview.toRouter')">
|
<div
|
||||||
|
class="toRouter"
|
||||||
|
@click="fnToRouter('GoldTarget_2104')"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<AreaChartOutlined style="color: #68d8fe" />
|
<AreaChartOutlined style="color: #68d8fe" />
|
||||||
{{
|
{{ t('views.dashboard.overview.upfFlow.title') }}
|
||||||
t('views.dashboard.overview.upfFlow.title')
|
</div>
|
||||||
}}
|
|
||||||
</div>
|
|
||||||
<a-dropdown
|
<a-dropdown
|
||||||
:trigger="['click']"
|
:trigger="['click']"
|
||||||
:get-Popup-Container="getPopupContainer"
|
:get-Popup-Container="getPopupContainer"
|
||||||
>
|
>
|
||||||
<div class="toDeep-text">
|
<div class="toDeep-text">
|
||||||
{{ neOtions.find(item => item.value === upfWhoId)?.label || 'Select UPF' }}
|
{{
|
||||||
|
neOtions.find(item => item.value === upfWhoId)?.label ||
|
||||||
|
'Select UPF'
|
||||||
|
}}
|
||||||
<DownOutlined style="margin-left: -2px; font-size: 12px" />
|
<DownOutlined style="margin-left: -2px; font-size: 12px" />
|
||||||
</div>
|
</div>
|
||||||
<template #overlay>
|
<template #overlay>
|
||||||
@@ -574,11 +538,7 @@ onBeforeUnmount(() => {
|
|||||||
</a-menu>
|
</a-menu>
|
||||||
</template>
|
</template>
|
||||||
</a-dropdown>
|
</a-dropdown>
|
||||||
|
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div class="chart">
|
<div class="chart">
|
||||||
@@ -590,8 +550,11 @@ onBeforeUnmount(() => {
|
|||||||
<!-- 网络拓扑 -->
|
<!-- 网络拓扑 -->
|
||||||
<div class="topology panel">
|
<div class="topology panel">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="toRouter centerStyle" @click="fnToRouter('TopologyArchitecture_2128')"
|
<h3
|
||||||
:title="t('views.dashboard.overview.toRouter')">
|
class="toRouter centerStyle"
|
||||||
|
@click="fnToRouter('TopologyArchitecture_2128')"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<span class="title">
|
<span class="title">
|
||||||
<ApartmentOutlined style="color: #68d8fe" />
|
<ApartmentOutlined style="color: #68d8fe" />
|
||||||
{{ t('views.dashboard.overview.topology.title') }}
|
{{ t('views.dashboard.overview.topology.title') }}
|
||||||
@@ -606,35 +569,56 @@ onBeforeUnmount(() => {
|
|||||||
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<!-- 基站信息 -->
|
<!-- 基站信息 -->
|
||||||
<div class="skim panel base" v-perms:has="['dashboard:overview:gnbBase']" v-if="neListStore.fnHasNe(['amf'])">
|
<div
|
||||||
|
class="skim panel base"
|
||||||
|
v-perms:has="['dashboard:overview:gnbBase']"
|
||||||
|
v-if="neListStore.fnHasNe(['amf'])"
|
||||||
|
>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="leftright">
|
<h3 class="leftright">
|
||||||
<span class="title">
|
<span class="title">
|
||||||
<GlobalOutlined style="color: #68d8fe" />
|
<GlobalOutlined style="color: #68d8fe" />
|
||||||
{{t('views.dashboard.overview.skim.nodeBInfo')}}
|
{{ t('views.dashboard.overview.skim.nodeBInfo') }}
|
||||||
</span>
|
</span>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="data" style="margin-top: 20px;">
|
<div class="data" style="margin-top: 20px">
|
||||||
<div class="item toRouter" @click="fnToRouter('BaseStation_2007', { neType: 'AMF' })"
|
<div
|
||||||
:title="t('views.dashboard.overview.toRouter')">
|
class="item toRouter"
|
||||||
|
@click="fnToRouter('BaseStation_2007', { neType: 'AMF' })"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<div style="align-items: flex-start">
|
<div style="align-items: flex-start">
|
||||||
<img :src="svgBase" style="width: 18px; margin-right: 8px; height: 2rem" />
|
<img
|
||||||
|
:src="svgBase"
|
||||||
|
style="width: 18px; margin-right: 8px; height: 2rem"
|
||||||
|
/>
|
||||||
{{ skimState.gNbSumNum }}
|
{{ skimState.gNbSumNum }}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ t('views.dashboard.overview.skim.gnbSumBase') }}</span>
|
<span>{{ t('views.dashboard.overview.skim.gnbSumBase') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item toRouter" @click="fnToRouter('BaseStation_2007', { neType: 'AMF' })"
|
<div
|
||||||
:title="t('views.dashboard.overview.toRouter')">
|
class="item toRouter"
|
||||||
|
@click="fnToRouter('BaseStation_2007', { neType: 'AMF' })"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<div style="align-items: flex-start">
|
<div style="align-items: flex-start">
|
||||||
<img :src="svgBase" style="width: 18px; margin-right: 8px; height: 2rem" />
|
<img
|
||||||
|
:src="svgBase"
|
||||||
|
style="width: 18px; margin-right: 8px; height: 2rem"
|
||||||
|
/>
|
||||||
{{ skimState.gnbNum }}
|
{{ skimState.gnbNum }}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ t('views.dashboard.overview.skim.gnbBase') }}</span>
|
<span>{{ t('views.dashboard.overview.skim.gnbBase') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item toRouter" @click="fnToRouter('BaseStation_2096', { neType: 'AMF' })"
|
<div
|
||||||
:title="t('views.dashboard.overview.toRouter')">
|
class="item toRouter"
|
||||||
|
@click="fnToRouter('BaseStation_2096', { neType: 'AMF' })"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<div style="align-items: flex-start">
|
<div style="align-items: flex-start">
|
||||||
<UserOutlined style="color: #4096ff; margin-right: 8px; font-size: 1.1rem" />
|
<UserOutlined
|
||||||
|
style="color: #4096ff; margin-right: 8px; font-size: 1.1rem"
|
||||||
|
/>
|
||||||
{{ skimState.gnbUeNum }}
|
{{ skimState.gnbUeNum }}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ t('views.dashboard.overview.skim.gnbUeNum') }}</span>
|
<span>{{ t('views.dashboard.overview.skim.gnbUeNum') }}</span>
|
||||||
@@ -643,31 +627,51 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="skim panel base" v-perms:has="['dashboard:overview:enbBase']" v-if="neListStore.fnHasNe(['mme'])">
|
<div
|
||||||
|
class="skim panel base"
|
||||||
|
v-perms:has="['dashboard:overview:enbBase']"
|
||||||
|
v-if="neListStore.fnHasNe(['mme'])"
|
||||||
|
>
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3>
|
<h3></h3>
|
||||||
</h3>
|
<div class="data" style="margin-top: 40px">
|
||||||
<div class="data" style="margin-top: 40px;">
|
<div
|
||||||
<div class="item toRouter" @click="fnToRouter('BaseStation_2007', { neType: 'MME' })"
|
class="item toRouter"
|
||||||
:title="t('views.dashboard.overview.toRouter')">
|
@click="fnToRouter('BaseStation_2007', { neType: 'MME' })"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<div style="align-items: flex-start">
|
<div style="align-items: flex-start">
|
||||||
<img :src="svgBase" style="width: 18px; margin-right: 8px; height: 2rem" />
|
<img
|
||||||
|
:src="svgBase"
|
||||||
|
style="width: 18px; margin-right: 8px; height: 2rem"
|
||||||
|
/>
|
||||||
{{ skimState.eNbSumNum }}
|
{{ skimState.eNbSumNum }}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ t('views.dashboard.overview.skim.enbSumBase') }}</span>
|
<span>{{ t('views.dashboard.overview.skim.enbSumBase') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item toRouter" @click="fnToRouter('BaseStation_2007', { neType: 'MME' })"
|
<div
|
||||||
:title="t('views.dashboard.overview.toRouter')">
|
class="item toRouter"
|
||||||
|
@click="fnToRouter('BaseStation_2007', { neType: 'MME' })"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<div style="align-items: flex-start">
|
<div style="align-items: flex-start">
|
||||||
<img :src="svgBase" style="width: 18px; margin-right: 8px; height: 2rem" />
|
<img
|
||||||
|
:src="svgBase"
|
||||||
|
style="width: 18px; margin-right: 8px; height: 2rem"
|
||||||
|
/>
|
||||||
{{ skimState.enbNum }}
|
{{ skimState.enbNum }}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ t('views.dashboard.overview.skim.enbBase') }}</span>
|
<span>{{ t('views.dashboard.overview.skim.enbBase') }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item toRouter" @click="fnToRouter('BaseStation_2007', { neType: 'MME' })"
|
<div
|
||||||
:title="t('views.dashboard.overview.toRouter')">
|
class="item toRouter"
|
||||||
|
@click="fnToRouter('BaseStation_2007', { neType: 'MME' })"
|
||||||
|
:title="t('views.dashboard.overview.toRouter')"
|
||||||
|
>
|
||||||
<div style="align-items: flex-start">
|
<div style="align-items: flex-start">
|
||||||
<UserOutlined style="color: #4096ff; margin-right: 8px; font-size: 1.1rem" />
|
<UserOutlined
|
||||||
|
style="color: #4096ff; margin-right: 8px; font-size: 1.1rem"
|
||||||
|
/>
|
||||||
{{ skimState.enbUeNum }}
|
{{ skimState.enbUeNum }}
|
||||||
</div>
|
</div>
|
||||||
<span>{{ t('views.dashboard.overview.skim.enbUeNum') }}</span>
|
<span>{{ t('views.dashboard.overview.skim.enbUeNum') }}</span>
|
||||||
@@ -676,17 +680,21 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!-- 资源情况 -->
|
<!-- 资源情况 -->
|
||||||
<div class="resources panel">
|
<div class="resources panel">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="resources leftright">
|
<h3 class="resources leftright">
|
||||||
<span class="title">
|
<span class="title">
|
||||||
<DashboardOutlined style="color: #68d8fe;font-size: 20px;" />
|
<DashboardOutlined
|
||||||
<div style="margin-left: -3px">{{ t('views.dashboard.overview.resources.title') }}:</div>
|
style="color: #68d8fe; font-size: 20px"
|
||||||
<a-dropdown :trigger="['click']" :get-Popup-Container="getPopupContainer">
|
/>
|
||||||
|
<div style="margin-left: -3px">
|
||||||
|
{{ t('views.dashboard.overview.resources.title') }}:
|
||||||
|
</div>
|
||||||
|
<a-dropdown
|
||||||
|
:trigger="['click']"
|
||||||
|
:get-Popup-Container="getPopupContainer"
|
||||||
|
>
|
||||||
<div class="toDeep-text">
|
<div class="toDeep-text">
|
||||||
{{ graphNodeClickID }}
|
{{ graphNodeClickID }}
|
||||||
<DownOutlined style="margin-left: -2px; font-size: 12px" />
|
<DownOutlined style="margin-left: -2px; font-size: 12px" />
|
||||||
@@ -712,8 +720,10 @@ onBeforeUnmount(() => {
|
|||||||
<div class="inner">
|
<div class="inner">
|
||||||
<h3 class="leftright">
|
<h3 class="leftright">
|
||||||
<span class="title">
|
<span class="title">
|
||||||
<WhatsAppOutlined style="color: #68d8fe;font-size: 20px;" /> {{
|
<WhatsAppOutlined
|
||||||
t('views.dashboard.overview.userActivity.imsTitle') }}
|
style="color: #68d8fe; font-size: 20px"
|
||||||
|
/>
|
||||||
|
{{ t('views.dashboard.overview.userActivity.imsTitle') }}
|
||||||
</span>
|
</span>
|
||||||
</h3>
|
</h3>
|
||||||
<div class="chart">
|
<div class="chart">
|
||||||
@@ -733,7 +743,7 @@ onBeforeUnmount(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.toDeep :deep(.ant-select-selector) {
|
.toDeep :deep(.ant-select-selector) {
|
||||||
background-color: #050F23;
|
background-color: #050f23;
|
||||||
border: none;
|
border: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user