feat: 看板统计UPF总量10s/避免重复请求
This commit is contained in:
@@ -6,6 +6,8 @@ type TFType = {
|
|||||||
up: string;
|
up: string;
|
||||||
/**下行 N6 */
|
/**下行 N6 */
|
||||||
down: string;
|
down: string;
|
||||||
|
/**请求标记 */
|
||||||
|
requestFlag: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**UPF-总流量数 */
|
/**UPF-总流量数 */
|
||||||
@@ -14,14 +16,17 @@ export const upfTotalFlow = ref<TFType[]>([
|
|||||||
{
|
{
|
||||||
up: '0 B',
|
up: '0 B',
|
||||||
down: '0 B',
|
down: '0 B',
|
||||||
|
requestFlag: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
up: '0 B',
|
up: '0 B',
|
||||||
down: '0 B',
|
down: '0 B',
|
||||||
|
requestFlag: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
up: '0 B',
|
up: '0 B',
|
||||||
down: '0 B',
|
down: '0 B',
|
||||||
|
requestFlag: false,
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -75,16 +75,19 @@ export default function useWS() {
|
|||||||
const v0 = upfTFParse(data);
|
const v0 = upfTFParse(data);
|
||||||
upfTotalFlow.value[0].up = v0.up;
|
upfTotalFlow.value[0].up = v0.up;
|
||||||
upfTotalFlow.value[0].down = v0.down;
|
upfTotalFlow.value[0].down = v0.down;
|
||||||
|
upfTotalFlow.value[0].requestFlag = false;
|
||||||
break;
|
break;
|
||||||
case '1030_7':
|
case '1030_7':
|
||||||
const v7 = upfTFParse(data);
|
const v7 = upfTFParse(data);
|
||||||
upfTotalFlow.value[1].up = v7.up;
|
upfTotalFlow.value[1].up = v7.up;
|
||||||
upfTotalFlow.value[1].down = v7.down;
|
upfTotalFlow.value[1].down = v7.down;
|
||||||
|
upfTotalFlow.value[1].requestFlag = false;
|
||||||
break;
|
break;
|
||||||
case '1030_30':
|
case '1030_30':
|
||||||
const v30 = upfTFParse(data);
|
const v30 = upfTFParse(data);
|
||||||
upfTotalFlow.value[2].up = v30.up;
|
upfTotalFlow.value[2].up = v30.up;
|
||||||
upfTotalFlow.value[2].down = v30.down;
|
upfTotalFlow.value[2].down = v30.down;
|
||||||
|
upfTotalFlow.value[2].requestFlag = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,6 +129,20 @@ export default function useWS() {
|
|||||||
|
|
||||||
/**UPF-总流量数 发消息*/
|
/**UPF-总流量数 发消息*/
|
||||||
function upfTFSend(day: 0 | 7 | 30) {
|
function upfTFSend(day: 0 | 7 | 30) {
|
||||||
|
// 请求标记检查避免重复发送
|
||||||
|
let index = 0;
|
||||||
|
if (day === 0) {
|
||||||
|
index = 0;
|
||||||
|
} else if (day === 7) {
|
||||||
|
index = 1;
|
||||||
|
} else if (day === 30) {
|
||||||
|
index = 2;
|
||||||
|
}
|
||||||
|
if (upfTotalFlow.value[index].requestFlag) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
upfTotalFlow.value[index].requestFlag = true;
|
||||||
|
|
||||||
ws.send({
|
ws.send({
|
||||||
requestId: `1030_${day}`,
|
requestId: `1030_${day}`,
|
||||||
type: 'upf_tf',
|
type: 'upf_tf',
|
||||||
|
|||||||
@@ -28,24 +28,24 @@ const appStore = useAppStore();
|
|||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const { wsSend, cdrEventSend, ueEventSend, upfTFSend } = useWS();
|
const { wsSend, cdrEventSend, ueEventSend, upfTFSend } = useWS();
|
||||||
|
|
||||||
/**用户在线信息 */
|
/**概览状态类型 */
|
||||||
let onlineInfo: {
|
type SkimStateType = {
|
||||||
/**签约用户数量 */
|
/**UDM签约用户数量 */
|
||||||
subNum: number;
|
udmSubNum: number;
|
||||||
/**SMF在线用户数 */
|
/**SMF在线用户数 */
|
||||||
smfUeNum: number;
|
smfUeNum: number;
|
||||||
/**IMS在线用户数 */
|
/**IMS在线用户数 */
|
||||||
imsUeNum: number;
|
imsUeNum: number;
|
||||||
/**基站数量 */
|
/**基站数量 */
|
||||||
nbNum: number;
|
nbNum: number;
|
||||||
/**原始严重程度 */
|
};
|
||||||
activeAlarmSeverity: DictType[];
|
|
||||||
} = reactive({
|
/**概览状态信息 */
|
||||||
subNum: 0,
|
let skimState: SkimStateType = reactive({
|
||||||
|
udmSubNum: 0,
|
||||||
smfUeNum: 0,
|
smfUeNum: 0,
|
||||||
imsUeNum: 0,
|
imsUeNum: 0,
|
||||||
nbNum: 0,
|
nbNum: 0,
|
||||||
activeAlarmSeverity: [],
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**总览节点 */
|
/**总览节点 */
|
||||||
@@ -107,11 +107,9 @@ function InitData() {
|
|||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
Promise.allSettled([
|
Promise.allSettled([
|
||||||
listSub({
|
listSub({
|
||||||
neid: '003',
|
neid: '001',
|
||||||
sortField: 'imsi',
|
pageNum: 1,
|
||||||
sortOrder: 'asc',
|
pageSize: 1,
|
||||||
pageNum: '1',
|
|
||||||
pageSize: '20',
|
|
||||||
}),
|
}),
|
||||||
listBase5G({
|
listBase5G({
|
||||||
neType: ['AMF', '001'],
|
neType: ['AMF', '001'],
|
||||||
@@ -125,7 +123,10 @@ onMounted(() => {
|
|||||||
])
|
])
|
||||||
.then(resArr => {
|
.then(resArr => {
|
||||||
if (resArr[0].status === 'fulfilled') {
|
if (resArr[0].status === 'fulfilled') {
|
||||||
onlineInfo.subNum = resArr[0].value.total;
|
const res = resArr[0].value;
|
||||||
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
|
skimState.udmSubNum = res.total;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -133,20 +134,20 @@ onMounted(() => {
|
|||||||
resArr[1].value.code === RESULT_CODE_SUCCESS &&
|
resArr[1].value.code === RESULT_CODE_SUCCESS &&
|
||||||
Array.isArray(resArr[1].value.rows)
|
Array.isArray(resArr[1].value.rows)
|
||||||
) {
|
) {
|
||||||
onlineInfo.nbNum = resArr[1].value.rows.length;
|
skimState.nbNum = resArr[1].value.rows.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resArr[2].status === 'fulfilled') {
|
if (resArr[2].status === 'fulfilled') {
|
||||||
const res = resArr[2].value;
|
const res = resArr[2].value;
|
||||||
if (res.code === RESULT_CODE_SUCCESS) {
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
onlineInfo.smfUeNum = res.data;
|
skimState.smfUeNum = res.data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (resArr[3].status === 'fulfilled') {
|
if (resArr[3].status === 'fulfilled') {
|
||||||
const res = resArr[3].value;
|
const res = resArr[3].value;
|
||||||
if (res.code === RESULT_CODE_SUCCESS) {
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
onlineInfo.imsUeNum = res.data;
|
skimState.imsUeNum = res.data;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@@ -181,28 +182,28 @@ onBeforeUnmount(() => {
|
|||||||
<div class="skim panel">
|
<div class="skim panel">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<h4>{{ onlineInfo.subNum }}</h4>
|
<h4>{{ skimState.udmSubNum }}</h4>
|
||||||
<span>
|
<span>
|
||||||
<UserOutlined style="color: #006cff" />
|
<UserOutlined style="color: #006cff" />
|
||||||
{{ t('views.dashboard.overview.skim.users') }}
|
{{ t('views.dashboard.overview.skim.users') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<h4>{{ onlineInfo.nbNum }}</h4>
|
<h4>{{ skimState.nbNum }}</h4>
|
||||||
<span>
|
<span>
|
||||||
<GlobalOutlined style="color: #edcb35" />
|
<GlobalOutlined style="color: #edcb35" />
|
||||||
{{ t('views.dashboard.overview.skim.base') }}
|
{{ t('views.dashboard.overview.skim.base') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<h4>{{ onlineInfo.imsUeNum }}</h4>
|
<h4>{{ skimState.imsUeNum }}</h4>
|
||||||
<span>
|
<span>
|
||||||
<UserSwitchOutlined style="color: #6acca3" />
|
<UserSwitchOutlined style="color: #6acca3" />
|
||||||
IMS {{ t('views.dashboard.overview.skim.session') }}
|
IMS {{ t('views.dashboard.overview.skim.session') }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<h4>{{ onlineInfo.smfUeNum }}</h4>
|
<h4>{{ skimState.smfUeNum }}</h4>
|
||||||
<span>
|
<span>
|
||||||
<UserSwitchOutlined style="color: #6acca3" />
|
<UserSwitchOutlined style="color: #6acca3" />
|
||||||
Data {{ t('views.dashboard.overview.skim.session') }}
|
Data {{ t('views.dashboard.overview.skim.session') }}
|
||||||
|
|||||||
Reference in New Issue
Block a user