fix: 看板2用户数量显示不出

This commit is contained in:
TsMask
2025-08-05 19:51:06 +08:00
parent 1342a37d50
commit 48a4497c14

View File

@@ -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" />&nbsp;&nbsp; <PieChartOutlined style="color: #68d8fe" />&nbsp;&nbsp;
{{ 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" />&nbsp;&nbsp; <AreaChartOutlined style="color: #68d8fe" />&nbsp;&nbsp;
{{ {{ t('views.dashboard.overview.upfFlow.title') }}
t('views.dashboard.overview.upfFlow.title') </div>
}} &nbsp;&nbsp;&nbsp;&nbsp;
</div>&nbsp;&nbsp;&nbsp;&nbsp;
<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" />&nbsp;&nbsp; <ApartmentOutlined style="color: #68d8fe" />&nbsp;&nbsp;
{{ 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" />&nbsp;&nbsp; <GlobalOutlined style="color: #68d8fe" />&nbsp;&nbsp;
{{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;" />&nbsp;&nbsp; <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"> />&nbsp;&nbsp;
<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;" />&nbsp;&nbsp; {{ <WhatsAppOutlined
t('views.dashboard.overview.userActivity.imsTitle') }} style="color: #68d8fe; font-size: 20px"
/>&nbsp;&nbsp;
{{ 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;
} }