|
|
@@ -4,14 +4,9 @@
|
|
|
<!-- 顶部操作区 -->
|
|
|
<div class="operate-area">
|
|
|
<el-button-group>
|
|
|
- <!-- <el-button v-for="month in months" :key="month.value"
|
|
|
- :type="currentMonth === month.value ? 'primary' : 'default'" @click="handleMonthChange(month.value)">
|
|
|
- {{ month.label }}
|
|
|
- </el-button> -->
|
|
|
- <el-select v-model="currentMonth" clearable placeholder="请选择 " @change="handleMonthChange(currentMonth)">
|
|
|
- <el-option v-for="item in months" :key="item.value" :label="item.label" :value="item.value">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
+ <el-date-picker v-model="currentMonth" type="month" placeholder="选择月" @change="handleMonthChange"
|
|
|
+ value-format="yyyy-MM">
|
|
|
+ </el-date-picker>
|
|
|
</el-button-group>
|
|
|
<el-button type="default" @click="handleRefresh">
|
|
|
<i class="el-icon-refresh"></i> 刷新
|
|
|
@@ -44,39 +39,46 @@
|
|
|
<div slot="header" class="card-header">
|
|
|
<span>各系统告警统计</span>
|
|
|
</div>
|
|
|
- <el-table :data="systemStatsData" style="width: 100%" v-loading="loadingsystemStats">
|
|
|
- <el-table-column prop="systemName" label="系统名称" width="120" />
|
|
|
- <el-table-column prop="totalAlarms" label="告警总数" align="center" />
|
|
|
- <el-table-column prop="processedAlarms" label="已处理告警总数" align="center" />
|
|
|
- <el-table-column prop="unprocessedAlarms" label="未处理告警总数" align="center" />
|
|
|
- <el-table-column prop="contentAlarms" label="内容类告警总数" align="center" />
|
|
|
- <el-table-column prop="thresholdAlarms" label="阈值类告警总数" align="center" />
|
|
|
- <el-table-column prop="existenceAlarms" label="存在性告警总数" align="center" />
|
|
|
+ <div>
|
|
|
+ <el-table :data="systemStatsData" header-align="center" style="width: 100%" stripe
|
|
|
+ v-loading="loadingsystemStats">
|
|
|
+ <el-table-column prop="systemName" label="系统名称" width="120" fixed="left" />
|
|
|
+ <el-table-column prop="totalAlarms" label="告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="processedAlarms" label="已处理告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="unprocessedAlarms" label="未处理告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="permissionCount" label="用户权限变更监控数量" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="indicator_databaseConnectCount" label="数据库连接数告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="indicator_internalConnetCount" label="内部连接性告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="indicator_scheduledTaskCount" label="定时任务告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="indicator_abnormalAccessCount" label="异常IP访问监控数量" min-width="120" align="center" />
|
|
|
|
|
|
- <el-table-column prop="indicator_dataNoDeliveredCount" label="数据未送达告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_internalConnetCount" label="内部连接性告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_interfaceFrequencyCount" label="访问接口频率告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_databaseConnectCount" label="数据库连接数告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_pageTamperProofCount" label="页面防篡改告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_networkBoundaryConnectCount" label="网络边界连通性告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_scheduledTaskCount" label="定时任务告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_ossUseCount" label="OSS使用情况告警总数" align="center" />
|
|
|
- <el-table-column prop="indicator_abnormalAccessCount" label="异常访问告警总数" align="center" />
|
|
|
- <!-- <el-table-column prop="indicator" label="各指标的告警总数" align="center" /> -->
|
|
|
- </el-table>
|
|
|
+ <!-- <el-table-column prop="contentAlarms" label="内容类告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="thresholdAlarms" label="阈值类告警总数" min-width="120" align="center" />
|
|
|
+ <el-table-column prop="existenceAlarms" label="存在性告警总数" min-width="120" align="center" /> -->
|
|
|
+ <!-- <el-table-column prop="indicator_dataNoDeliveredCount" label="数据未送达告警总数" min-width="120" align="center" /> -->
|
|
|
+ <!-- <el-table-column prop="indicator_interfaceFrequencyCount" label="访问接口频率告警总数" min-width="120" align="center" /> -->
|
|
|
+ <!-- <el-table-column prop="indicator_pageTamperProofCount" label="页面防篡改告警总数" min-width="120" align="center" /> -->
|
|
|
+ <!-- <el-table-column prop="indicator_networkBoundaryConnectCount" label="网络边界连通性告警总数" min-width="120"
|
|
|
+ align="center" /> -->
|
|
|
+ <!-- <el-table-column prop="indicator_ossUseCount" label="OSS使用情况告警总数" min-width="120" align="center" /> -->
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
</el-card>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-import { getAlarmStats, exportAlarmData } from '@/api/newApi/alarm'
|
|
|
+import { getAlarmStats, exportAlarmData, getNewAlarmStats, exportNewAlarmData } from '@/api/newApi/alarm'
|
|
|
|
|
|
export default {
|
|
|
data() {
|
|
|
+ const now = new Date();
|
|
|
+ const year = now.getFullYear();
|
|
|
+ const month = String(now.getMonth() + 1).padStart(2, '0');
|
|
|
+ const currentMonthValue = `${year}-${month}`;
|
|
|
return {
|
|
|
- // monthsSelect: '2026-01',
|
|
|
loadingsystemStats: false,
|
|
|
- currentMonth: '2026-01',
|
|
|
+ currentMonth: currentMonthValue,
|
|
|
months: [],
|
|
|
alarmData: {//告警统计数据
|
|
|
overall: {},
|
|
|
@@ -89,47 +91,35 @@ export default {
|
|
|
overviewData() {
|
|
|
const overall = this.alarmData.overall || {};
|
|
|
return [
|
|
|
- { label: '告警总数', value: overall.total },
|
|
|
- { label: '已处理告警总数', value: overall.processed },
|
|
|
- { label: '未处理告警总数', value: overall.unprocessed },
|
|
|
- { label: '内容类告警总数', value: overall.contentCount },
|
|
|
- { label: '阈值类告警总数', value: overall.thresholdCount },
|
|
|
- { label: '存在性告警总数', value: overall.existenceCount }
|
|
|
+ { label: '告警总数', value: overall.totalAlarms },
|
|
|
+ { label: '已处理告警总数', value: overall.totalProcessed },
|
|
|
+ { label: '未处理告警总数', value: overall.totalUntreated },
|
|
|
+ { label: '总送达数', value: overall.totalDelivered },
|
|
|
+ { label: '总未送达数', value: overall.totalUndelivered },
|
|
|
+ { label: '用户权限变更监控数', value: overall.permissionAlarms },
|
|
|
+ { label: '数据库监控数', value: overall.dbAlarms },
|
|
|
+ { label: '系统内部连接监控数', value: overall.connectAlarms },
|
|
|
+ { label: '异常IP访问监控数', value: overall.ipAlarms },
|
|
|
+ { label: '定时任务异常监控数', value: overall.taskAlarms }
|
|
|
];
|
|
|
},
|
|
|
// 根据当前选择的月份获取各系统告警统计数据
|
|
|
systemStatsData() {
|
|
|
return (this.alarmData.indicatorStats || []).map(item => ({
|
|
|
- systemName: item.system_name,
|
|
|
- totalAlarms: item.total,
|
|
|
- processedAlarms: item.processed,
|
|
|
- unprocessedAlarms: item.unprocessed,
|
|
|
- contentAlarms: item.contentCount,
|
|
|
- thresholdAlarms: item.thresholdCount,
|
|
|
- existenceAlarms: item.existenceCount,
|
|
|
- indicator: item.total,
|
|
|
- dataNoDeliveredCount: item.dataNoDeliveredCount,
|
|
|
- internalConnectCount: item.internalConnectCount,
|
|
|
- interfaceFrequencyCount: item.interfaceFrequencyCount,
|
|
|
- databaseConnectCount: item.databaseConnectCount,
|
|
|
- pageTamperProofCount: item.pageTamperProofCount,
|
|
|
- networkBoundaryConnectCount: item.networkBoundaryConnectCount,
|
|
|
- scheduledTaskCount: item.scheduledTaskCount,
|
|
|
- ossUseCount: item.indicator_ossUseCount,
|
|
|
- abnormalAccessCount: item.abnormalAccessCount,
|
|
|
-
|
|
|
- indicator_abnormalAccessCount: item.indicator_abnormalAccessCount,
|
|
|
- indicator_dataNoDeliveredCount: item.indicator_dataNoDeliveredCount,
|
|
|
- indicator_internalConnetCount: item.indicator_internalConnetCount,
|
|
|
- indicator_interfaceFrequencyCount: item.indicator_interfaceFrequencyCount,
|
|
|
- indicator_databaseConnectCount: item.indicator_databaseConnectCount,
|
|
|
- indicator_pageTamperProofCount: item.indicator_pageTamperProofCount,
|
|
|
- indicator_networkBoundaryConnectCount: item.indicator_networkBoundaryConnectCount,
|
|
|
- indicator_scheduledTaskCount: item.indicator_scheduledTaskCount,
|
|
|
- indicator_ossUseCount: item.indicator_ossUseCount,
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ systemName: item.systemName,
|
|
|
+ totalAlarms: item.totalAlarms || 0,
|
|
|
+ processedAlarms: item.processedCount || 0,
|
|
|
+ unprocessedAlarms: item.untreatedCount || 0,
|
|
|
+ permissionCount: item.permissionCount || 0,
|
|
|
+ // indicator_dataNoDeliveredCount: 0, // 新数据格式中没有直接提供
|
|
|
+ indicator_internalConnetCount: item.connectCount || 0,
|
|
|
+ // indicator_interfaceFrequencyCount: 0, // 新数据格式中没有直接提供
|
|
|
+ indicator_databaseConnectCount: item.dbCount || 0,
|
|
|
+ // indicator_pageTamperProofCount: 0, // 新数据格式中没有直接提供
|
|
|
+ // indicator_networkBoundaryConnectCount: 0, // 新数据格式中没有直接提供
|
|
|
+ indicator_scheduledTaskCount: item.taskCount || 0,
|
|
|
+ // indicator_ossUseCount: 0, // 新数据格式中没有直接提供
|
|
|
+ indicator_abnormalAccessCount: item.ipCount || 0
|
|
|
}));
|
|
|
}
|
|
|
},
|
|
|
@@ -140,24 +130,41 @@ export default {
|
|
|
//获取告警统计数据
|
|
|
getAlarmEven() {
|
|
|
this.loadingsystemStats = true;
|
|
|
- getAlarmStats(this.currentMonth).then(res => {
|
|
|
+ getNewAlarmStats(this.currentMonth).then(res => {
|
|
|
+ // getAlarmStats(this.currentMonth).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
+
|
|
|
this.alarmData = {
|
|
|
- overall: res.data.overall || {},
|
|
|
- indicatorStats: res.data.indicatorStats || []
|
|
|
+ overall: {
|
|
|
+ totalAlarms: res.data.totalAlarms || 0,
|
|
|
+ totalProcessed: res.data.totalUntreated || 0,
|
|
|
+ totalUntreated: res.data.totalProcessed || 0,
|
|
|
+ contentCount: 0,
|
|
|
+ thresholdCount: 0,
|
|
|
+ existenceCount: 0,
|
|
|
+ permissionAlarms: res.data.permissionAlarms || 0,
|
|
|
+ dbAlarms: res.data.dbAlarms || 0,
|
|
|
+ connectAlarms: res.data.connectAlarms || 0,
|
|
|
+ ipAlarms: res.data.ipAlarms || 0,
|
|
|
+ taskAlarms: res.data.taskAlarms || 0,
|
|
|
+ totalUndelivered: res.data.totalUndelivered || 0,
|
|
|
+ totalDelivered: res.data.totalDelivered || 0
|
|
|
+ },
|
|
|
+ indicatorStats: res.data.systemStats || []
|
|
|
};
|
|
|
console.log(this.alarmData, ' this.alarmData')
|
|
|
// 更新月份列表
|
|
|
- if (res.data.months && Array.isArray(res.data.months)) {
|
|
|
- this.months = res.data.months.map(month => {
|
|
|
- const [year, monthNum] = month.split('-');
|
|
|
- return {
|
|
|
- // label: `${monthNum}月`,
|
|
|
- label: month,
|
|
|
- value: month
|
|
|
- };
|
|
|
- });
|
|
|
- }
|
|
|
+ // if (res.data.months && Array.isArray(res.data.months)) {
|
|
|
+ // this.months = res.data.months.map(month => {
|
|
|
+ // res.data.months=['2026-01','2026-02','2026-03','2026-04','2026-05','2026-06','2026-07','2026-08','2026-09','2026-10','2026-11','2026-12']
|
|
|
+ // const [year, monthNum] = month.split('-');
|
|
|
+ // return {
|
|
|
+ // // label: `${monthNum}月`,
|
|
|
+ // label: month,
|
|
|
+ // value: month
|
|
|
+ // };
|
|
|
+ // });
|
|
|
+ // }
|
|
|
this.loadingsystemStats = false;
|
|
|
} else {
|
|
|
this.$message.error('获取告警统计数据失败');
|
|
|
@@ -166,10 +173,13 @@ export default {
|
|
|
},
|
|
|
// 处理月份切换
|
|
|
handleMonthChange(month) {
|
|
|
- console.log(month)
|
|
|
- this.currentMonth = month;
|
|
|
- // 切换月份后重新获取数据
|
|
|
- this.getAlarmEven();
|
|
|
+ console.log('Selected month:', month);
|
|
|
+ // 确保 month 是字符串格式的 YYYY-MM
|
|
|
+ if (month) {
|
|
|
+ this.currentMonth = month;
|
|
|
+ // 切换月份后重新获取数据
|
|
|
+ this.getAlarmEven();
|
|
|
+ }
|
|
|
},
|
|
|
// 处理刷新
|
|
|
handleRefresh() {
|
|
|
@@ -184,8 +194,9 @@ export default {
|
|
|
spinner: 'el-icon-loading',
|
|
|
background: 'rgba(0, 0, 0, 0.7)'
|
|
|
});
|
|
|
-
|
|
|
- exportAlarmData(this.currentMonth).then(res => {
|
|
|
+
|
|
|
+ // exportAlarmData(this.currentMonth).then(res => {
|
|
|
+ exportNewAlarmData(this.currentMonth).then(res => {
|
|
|
// 处理导出成功逻辑
|
|
|
const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
|
|
|
const url = window.URL.createObjectURL(blob);
|