Merge remote-tracking branch 'origin/main'
This commit is contained in:
@@ -571,9 +571,7 @@ onBeforeUnmount(() => {
|
|||||||
<a-select
|
<a-select
|
||||||
v-model:value="recordTypes"
|
v-model:value="recordTypes"
|
||||||
mode="multiple"
|
mode="multiple"
|
||||||
:options="
|
:options="['MOC', 'MTC'].map(v => ({ value: v }))"
|
||||||
['MOC', 'MTC', 'MOSM', 'MTSM'].map(v => ({ value: v }))
|
|
||||||
"
|
|
||||||
:placeholder="t('common.selectPlease')"
|
:placeholder="t('common.selectPlease')"
|
||||||
@change="fnQueryRecordTypeChange"
|
@change="fnQueryRecordTypeChange"
|
||||||
></a-select>
|
></a-select>
|
||||||
@@ -756,7 +754,13 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ t('views.dashboard.cdr.time') }}: </span>
|
<span>{{ t('views.dashboard.cdr.time') }}: </span>
|
||||||
<span>{{ parseDateToStr(+record.timestamp * 1000) }}</span>
|
<span>
|
||||||
|
{{
|
||||||
|
typeof record.cdrJSON.releaseTime === 'number'
|
||||||
|
? parseDateToStr(+record.cdrJSON.releaseTime * 1000)
|
||||||
|
: record.cdrJSON.releaseTime
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :lg="6" :md="12" :xs="24">
|
<a-col :lg="6" :md="12" :xs="24">
|
||||||
@@ -800,11 +804,23 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ t('views.dashboard.cdr.seizureTime') }}: </span>
|
<span>{{ t('views.dashboard.cdr.seizureTime') }}: </span>
|
||||||
<span>{{ record.cdrJSON.seizureTime }}</span>
|
<span>
|
||||||
|
{{
|
||||||
|
typeof record.cdrJSON.seizureTime === 'number'
|
||||||
|
? parseDateToStr(+record.cdrJSON.seizureTime * 1000)
|
||||||
|
: record.cdrJSON.seizureTime
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ t('views.dashboard.cdr.releaseTime') }}: </span>
|
<span>{{ t('views.dashboard.cdr.releaseTime') }}: </span>
|
||||||
<span>{{ record.cdrJSON.releaseTime }}</span>
|
<span>
|
||||||
|
{{
|
||||||
|
typeof record.cdrJSON.releaseTime === 'number'
|
||||||
|
? parseDateToStr(+record.cdrJSON.releaseTime * 1000)
|
||||||
|
: record.cdrJSON.releaseTime
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ function loadData() {
|
|||||||
|
|
||||||
clearInterval(interval10s.value);
|
clearInterval(interval10s.value);
|
||||||
interval10s.value = setInterval(() => {
|
interval10s.value = setInterval(() => {
|
||||||
|
if (!interval10s.value) return
|
||||||
if (upfTFActive.value === '0') {
|
if (upfTFActive.value === '0') {
|
||||||
upfTFSend('7');
|
upfTFSend('7');
|
||||||
upfTFActive.value = '7';
|
upfTFActive.value = '7';
|
||||||
@@ -176,6 +177,7 @@ function loadData() {
|
|||||||
|
|
||||||
clearInterval(interval5s.value);
|
clearInterval(interval5s.value);
|
||||||
interval5s.value = setInterval(() => {
|
interval5s.value = setInterval(() => {
|
||||||
|
if (!interval5s.value) return
|
||||||
fnGetSkim(); // 获取概览信息
|
fnGetSkim(); // 获取概览信息
|
||||||
fnGetNeState(); // 获取网元状态
|
fnGetNeState(); // 获取网元状态
|
||||||
}, 5_000);
|
}, 5_000);
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import {
|
|||||||
exportSMFDataCDR,
|
exportSMFDataCDR,
|
||||||
listSMFDataCDR,
|
listSMFDataCDR,
|
||||||
} from '@/api/neData/smf';
|
} from '@/api/neData/smf';
|
||||||
import { parseDateToStr } from '@/utils/date-utils';
|
|
||||||
import { OptionsType, WS } from '@/plugins/ws-websocket';
|
import { OptionsType, WS } from '@/plugins/ws-websocket';
|
||||||
import PQueue from 'p-queue';
|
import PQueue from 'p-queue';
|
||||||
import saveAs from 'file-saver';
|
import saveAs from 'file-saver';
|
||||||
@@ -700,7 +699,7 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ t('views.dashboard.cdr.time') }}: </span>
|
<span>{{ t('views.dashboard.cdr.time') }}: </span>
|
||||||
<span>{{ parseDateToStr(+record.timestamp * 1000) }}</span>
|
<span>{{ record.cdrJSON.invocationTimestamp }}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-divider orientation="left">
|
<a-divider orientation="left">
|
||||||
{{ t('views.dashboard.cdr.rowInfo') }}
|
{{ t('views.dashboard.cdr.rowInfo') }}
|
||||||
|
|||||||
@@ -718,7 +718,13 @@ onBeforeUnmount(() => {
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<span>{{ t('views.dashboard.cdr.time') }}: </span>
|
<span>{{ t('views.dashboard.cdr.time') }}: </span>
|
||||||
<span>{{ parseDateToStr(+record.timestamp * 1000) }}</span>
|
<span>
|
||||||
|
{{
|
||||||
|
typeof record.cdrJSON.updateTime === 'number'
|
||||||
|
? parseDateToStr(+record.cdrJSON.updateTime * 1000)
|
||||||
|
: record.cdrJSON.updateTime
|
||||||
|
}}
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<a-divider orientation="left">
|
<a-divider orientation="left">
|
||||||
{{ t('views.dashboard.cdr.rowInfo') }}
|
{{ t('views.dashboard.cdr.rowInfo') }}
|
||||||
|
|||||||
@@ -30,11 +30,12 @@ function fnRanderData() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**网元状态调度器 */
|
/**网元状态调度器 */
|
||||||
const interval10s = ref<any>(null);
|
const interval = ref<boolean>(true);
|
||||||
|
|
||||||
/**查询网元状态 */
|
/**查询网元状态 */
|
||||||
async function fnGetState() {
|
async function fnGetState() {
|
||||||
for (const node of graphG6Data.nodes) {
|
for (const node of graphG6Data.nodes) {
|
||||||
|
if (!interval.value) return;
|
||||||
const ne = node.info;
|
const ne = node.info;
|
||||||
// if (ne.neType === 'OMC') continue;
|
// if (ne.neType === 'OMC') continue;
|
||||||
const result = await stateNeInfo(ne.neType, ne.neId);
|
const result = await stateNeInfo(ne.neType, ne.neId);
|
||||||
@@ -151,11 +152,21 @@ function fnGetList(refresh: boolean = false) {
|
|||||||
})
|
})
|
||||||
.then(randerGroph => {
|
.then(randerGroph => {
|
||||||
if (!randerGroph) return;
|
if (!randerGroph) return;
|
||||||
fnGetState().finally(() => {
|
repeatFn();
|
||||||
interval10s.value = setInterval(() => {
|
});
|
||||||
fnGetState(); // 获取网元状态
|
}
|
||||||
}, 10_000);
|
|
||||||
});
|
/**递归刷新网元状态 */
|
||||||
|
function repeatFn() {
|
||||||
|
if (!interval.value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
fnGetState()
|
||||||
|
.finally(() => {
|
||||||
|
repeatFn(); // 递归调用自己
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +176,7 @@ onMounted(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
onBeforeUnmount(() => {
|
onBeforeUnmount(() => {
|
||||||
clearInterval(interval10s.value);
|
interval.value = false;
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -294,7 +294,8 @@ function fnGraphDataLoad(reload: boolean = false) {
|
|||||||
Reflect.set(node, 'neState', { online: false });
|
Reflect.set(node, 'neState', { online: false });
|
||||||
// 图片路径处理
|
// 图片路径处理
|
||||||
if (node.img) node.img = parseBasePath(node.img);
|
if (node.img) node.img = parseBasePath(node.img);
|
||||||
if (node.icon.show && node.icon?.img) node.icon.img = parseBasePath(node.icon.img);
|
if (node.icon.show && node.icon?.img)
|
||||||
|
node.icon.img = parseBasePath(node.icon.img);
|
||||||
// 遍历是否有网元数据
|
// 遍历是否有网元数据
|
||||||
const nodeID: string = node.id;
|
const nodeID: string = node.id;
|
||||||
const hasNe = res.neList.some(ne => {
|
const hasNe = res.neList.some(ne => {
|
||||||
@@ -352,11 +353,11 @@ function fnGraphDataLoad(reload: boolean = false) {
|
|||||||
}
|
}
|
||||||
clearInterval(interval10s.value);
|
clearInterval(interval10s.value);
|
||||||
interval10s.value = null;
|
interval10s.value = null;
|
||||||
fnGetState().finally(() => {
|
fnGetState();
|
||||||
interval10s.value = setInterval(() => {
|
interval10s.value = setInterval(async () => {
|
||||||
fnGetState(); // 获取网元状态
|
if (!interval10s.value) return;
|
||||||
}, 10_000);
|
fnGetState(); // 获取网元状态
|
||||||
});
|
}, 20_000);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,7 +365,7 @@ function fnGraphDataLoad(reload: boolean = false) {
|
|||||||
const interval10s = ref<any>(null);
|
const interval10s = ref<any>(null);
|
||||||
|
|
||||||
/**查询网元状态 */
|
/**查询网元状态 */
|
||||||
async function fnGetState() {
|
function fnGetState() {
|
||||||
// 获取节点状态
|
// 获取节点状态
|
||||||
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;
|
||||||
|
|||||||
Reference in New Issue
Block a user