diff --git a/src/api/agentManage/callings.ts b/src/api/agentManage/callings.ts new file mode 100644 index 00000000..7cc23609 --- /dev/null +++ b/src/api/agentManage/callings.ts @@ -0,0 +1,16 @@ +import { request } from '@/plugins/http-fetch'; + + +/** + * 查询定时任务调度列表 + * @param query 查询参数 + * @returns object + */ +export function listCallings(query: Record) { + return request({ + url: '/psap/v1/mf/callings/list', + method: 'get', + params: query, + }); +} + diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index f26556af..baf42d8f 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -350,6 +350,16 @@ export default { description: "No data yet, try refreshing", }, }, + agentManage:{ + callings:{ + callerIdNumber:'Caller Number', + calleeIdNumber:'Callee Number', + startTime:'Start Time', + answeredTime:'Answered Time', + callDuration:'Call Duration', + msdData:'MSD Info', + } + }, dashboard: { overview:{ title: "Core Network Dashboard", diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index e5fdaaa8..a782356a 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -350,15 +350,25 @@ export default { description: "暂无数据,尝试刷新看看", }, }, + agentManage:{ + callings:{ + callerIdNumber:'主叫号码', + calleeIdNumber:'被叫号码', + startTime:'开始时间', + answeredTime:'接听时间', + callDuration:'通话时长', + msdData:'msd内容', + } + }, dashboard: { overview:{ title: "核心网系统看板", fullscreen: "点击全屏显示", toRouter: "点击跳转详情页面", psapTitle:'PSAP看板', - onlineUser:'在线用户', - totalUser:'总用户', - parallelUser:'并行用户', + onlineUser:'在线座席数', + totalUser:'总座席数', + parallelUser:'并行通话数', userTitle:'用户统计', sysTitle:'系统资源', skim: { diff --git a/src/views/agentManage/callings/index.vue b/src/views/agentManage/callings/index.vue new file mode 100644 index 00000000..9b9c4333 --- /dev/null +++ b/src/views/agentManage/callings/index.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/src/views/dashboard/overview/components/mfOverview/DashboardCards.vue b/src/views/dashboard/overview/components/mfOverview/DashboardCards.vue index 32df13d7..1b336831 100644 --- a/src/views/dashboard/overview/components/mfOverview/DashboardCards.vue +++ b/src/views/dashboard/overview/components/mfOverview/DashboardCards.vue @@ -10,6 +10,8 @@ import TrendChart from './TrendChart.vue'; import useI18n from '@/hooks/useI18n'; import { listNeInfo } from '@/api/ne/neInfo'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; +import { getNeConfigData } from '@/api/ne/neConfig'; +import { listCallings } from '@/api/agentManage/callings'; const { t } = useI18n(); @@ -17,9 +19,9 @@ const { t } = useI18n(); const interval10s = ref(null); // 模拟数据 -const activeCallsData = ref([10, 20, 30, 40, 30, 80, 100]); -const mosData = ref([40, 50, 60, 70, 80, 30, 70]); -const failedCallsData = ref([10, 10, 30, 20, 50, 40, 30]); +const activeCallsData = ref([]); +const mosData = ref([]); +const failedCallsData = ref([]); // 新增三个卡片的模拟数据 const networkCpuData = ref([]); @@ -28,11 +30,12 @@ const systemStorageData = ref([]); const systemMemData = ref([]); -// 是否是第一次加载数据 +// 是否是第一次加载资源数据 const isFirstLoad = ref(true); // 更新图表数据的函数 function updateChartData(newValue: number, dataArray: any) { + if (newValue == 23) { console.log('更新图表数据', newValue, dataArray); } // 如果是第一次加载,用当前值填充整个数组 if (isFirstLoad.value) { dataArray.value = Array(7).fill(newValue); @@ -45,6 +48,36 @@ function updateChartData(newValue: number, dataArray: any) { } } +// 是否是第一次加载用户数据 +const isFirstLoadUser = ref(true); +function updateUserChartData(newValue: number, dataArray: any) { + // 如果是第一次加载,用当前值填充整个数组 + if (isFirstLoad.value) { + dataArray.value = Array(7).fill(newValue); + } else { + // 非第一次加载,正常更新数据(移除第一个,添加新值) + const newData = [...dataArray.value]; + newData.shift(); + newData.push(newValue); + dataArray.value = newData; + } +} + +// 是否是第一次加载并行用户数据 +const isFirstLoadFailed = ref(true); +function updateFailedChartData(newValue: number, dataArray: any) { + // 如果是第一次加载,用当前值填充整个数组 + if (isFirstLoadFailed.value) { + dataArray.value = Array(7).fill(newValue); + } else { + // 非第一次加载,正常更新数据(移除第一个,添加新值) + const newData = [...dataArray.value]; + newData.shift(); + newData.push(newValue); + dataArray.value = newData; + } +} + // 当前资源使用率 const currentNfCpuUsage = ref(0); const currentSysCpuUsage = ref(0); @@ -63,6 +96,27 @@ const sysCpuChange = ref(0); const sysDiskChange = ref(0); const sysMemChange = ref(0); + +// 当前资源使用率 +const activeCalls = ref(0); +const onlineCount = ref(0); +const failedCallsCount = ref(0); + +// 上一次的资源使用率 +const prevActiveCalls = ref(0); +const prevOnlineCount = ref(0); +const prevFailedCallsCount = ref(0); + + + +// 用户数变化百分比 +const activeCallsChange = ref(0); +const onlineCountChange = ref(0); +const failedCallsCountChange = ref(0); + + + + /**解析网元状态携带的资源利用率 */ function parseResouresUsage(neState: Record) { let sysCpuUsage = 0; @@ -174,7 +228,63 @@ function fnGetList() { } }) + // 获取网元端的配置数据 + getNeConfigData({ + neType: 'MF', + neId: '001', + paramName: 'agents', + }).then(res => { + if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) { + const neData = res.data; + prevActiveCalls.value = activeCalls.value; + prevOnlineCount.value = onlineCount.value; + + + // 更新 activeCallsData 和 mosData + activeCalls.value = neData.length; // 数组长度 + onlineCount.value = neData.filter((item: any) => item.online).length; // online 为 true 的数量 + + activeCallsChange.value = prevActiveCalls.value ? prevActiveCalls.value - activeCalls.value : 0; + onlineCountChange.value = prevOnlineCount.value ? prevOnlineCount.value - onlineCount.value : 0; + + // 更新图表数据 + updateUserChartData(activeCalls.value, activeCallsData); + updateUserChartData(onlineCount.value, mosData); + + // 第一次加载完成后,设置标志为false + if (isFirstLoadUser.value) { + isFirstLoadUser.value = false; + } + + + } + }); + + + + + listCallings({ neId: '001' }).then(res => { + if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) { + const callData: any = res.data; + prevFailedCallsCount.value = failedCallsCount.value; + + + // 更新 activeCallsData 和 mosData + failedCallsCount.value = res.total; // 数组长度 + + failedCallsCountChange.value = prevFailedCallsCount.value ? prevFailedCallsCount.value - failedCallsCount.value : 0; + + // 更新图表数据 + updateFailedChartData(failedCallsCount.value, failedCallsData); + + // 第一次加载完成后,设置标志为false + if (isFirstLoadFailed.value) { + isFirstLoadFailed.value = false; + } + + } + }); } @@ -215,10 +325,11 @@ onBeforeUnmount(() => {
- 100 - + {{ activeCalls }} +
-
+20 last 5s
+
{{ activeCallsChange >= 0 ? '+' : '' }}{{ activeCallsChange }}% last 10s
@@ -233,10 +344,11 @@ onBeforeUnmount(() => {
- 70 - + {{ onlineCount }} +
-
+40 last 5s
+
{{ onlineCountChange >= 0 ? '+' : '' }}{{ onlineCountChange }} last 10s
@@ -253,9 +365,11 @@ onBeforeUnmount(() => {
- 30 + {{ failedCallsCount }} +
-
-10 last 5s
+
{{ failedCallsCountChange >= 0 ? '+' : '' }}{{ failedCallsCountChange }} last 10s