|
@@ -2,10 +2,10 @@
|
|
|
<div class="app-container">
|
|
|
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="0">
|
|
|
<el-form-item>
|
|
|
- <el-button type="primary" plain>今天</el-button>
|
|
|
- <el-button type="primary" plain>3天</el-button>
|
|
|
- <el-button type="primary" plain>7天</el-button>
|
|
|
- <el-button type="primary" plain>1月</el-button>
|
|
|
+ <el-button type="primary" plain @click="timeSelect(0)">今天</el-button>
|
|
|
+ <el-button type="primary" plain @click="timeSelect(3)">3天</el-button>
|
|
|
+ <el-button type="primary" plain @click="timeSelect(7)">7天</el-button>
|
|
|
+ <el-button type="primary" plain @click="timeSelect(30)">1月</el-button>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="" style="width: 308px;margin-right:10px">
|
|
|
<el-date-picker
|
|
@@ -22,28 +22,38 @@
|
|
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
- <el-card>
|
|
|
- <div ref="chartAccess" style="height: 600px;"></div>
|
|
|
- </el-card>
|
|
|
- <!-- <el-table v-loading="loading" :data="recordList" border>-->
|
|
|
- <!-- <el-table-column label="告警ID" align="center" prop="modelId" width="80"/>-->
|
|
|
- <!-- <el-table-column label="业务模型" align="center" prop="modelName"/>-->
|
|
|
- <!-- <el-table-column label="最近1小时系统压力值" align="center" prop="access"/>-->
|
|
|
- <!-- <el-table-column label="告警数量" align="center" prop="num" />-->
|
|
|
- <!-- <el-table-column label="操作" align="center" prop="alarmTime" width="180">-->
|
|
|
- <!-- <template #default="scope">-->
|
|
|
- <!-- <el-button type="text" plain icon="Position" @click="handleDetails(scope.row)">明细</el-button>-->
|
|
|
- <!-- </template>-->
|
|
|
- <!-- </el-table-column>-->
|
|
|
- <!-- </el-table>-->
|
|
|
-
|
|
|
- <!-- <pagination-->
|
|
|
- <!-- v-show="total>0"-->
|
|
|
- <!-- :total="total"-->
|
|
|
- <!-- v-model:page="queryParams.pageNum"-->
|
|
|
- <!-- v-model:limit="queryParams.pageSize"-->
|
|
|
- <!-- @pagination="getList"-->
|
|
|
- <!-- />-->
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card>
|
|
|
+ <div ref="chartAccess" style="height: 600px;"></div>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-card>
|
|
|
+ <template #header>
|
|
|
+ <Tickets style="width: 1em; height: 1em; vertical-align: middle;"/>
|
|
|
+ <span style="vertical-align: middle;">{{ title }}</span></template>
|
|
|
+ <el-table v-loading="loading" :data="leftList" v-show="sl" border style="height:555px;overflow-y: auto;">
|
|
|
+ <el-table-column label="序号" align="center" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ scope.$index + 1 }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="组件名称" align="left" prop="OBJ_NAME"/>
|
|
|
+ <el-table-column label="系统压力值" align="center" prop="TIMES" width="120"/>
|
|
|
+ </el-table>
|
|
|
+ <el-table v-loading="loading" :data="rightList" v-show="sr" border style="height:555px;overflow-y: auto;">
|
|
|
+ <el-table-column label="序号" align="center" width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{ scope.$index + 1 }}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="组件名称" align="left" prop="objName"/>
|
|
|
+ <el-table-column label="告警数量" align="center" prop="num" width="120"/>
|
|
|
+ </el-table>
|
|
|
+ </el-card>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -51,12 +61,17 @@
|
|
|
import {getBizAccess} from "@/api/alarm/record";
|
|
|
import {useRouter} from "vue-router";
|
|
|
import * as echarts from "echarts";
|
|
|
+import moment from "moment";
|
|
|
+import {getObjAccess, getObjAlarm} from "../../../api/alarm/record.js";
|
|
|
|
|
|
const {proxy} = getCurrentInstance();
|
|
|
const {alarm_level} = proxy.useDict('alarm_level');
|
|
|
|
|
|
-const recordList = ref([]);
|
|
|
+const leftList = ref([]);
|
|
|
+const rightList = ref([]);
|
|
|
const open = ref(false);
|
|
|
+const sl = ref(true);
|
|
|
+const sr = ref(false);
|
|
|
const loading = ref(true);
|
|
|
const showSearch = ref(true);
|
|
|
const ids = ref([]);
|
|
@@ -73,6 +88,7 @@ const data = reactive({
|
|
|
queryParams: {
|
|
|
start: null,
|
|
|
end: null,
|
|
|
+ modeId: null
|
|
|
},
|
|
|
});
|
|
|
|
|
@@ -94,8 +110,8 @@ function initChart(res) {
|
|
|
for (let i in res.data) {
|
|
|
let obj = res.data[i];
|
|
|
datas.push(obj.modelName);
|
|
|
- legendData1.push(obj.access);
|
|
|
- legendData2.push(obj.num);
|
|
|
+ legendData1.push({id:obj.modelId,value:obj.access});
|
|
|
+ legendData2.push({id:obj.modelId,value:obj.num});
|
|
|
if (obj.access > xMax1) {
|
|
|
xMax1 = obj.access;
|
|
|
}
|
|
@@ -103,7 +119,7 @@ function initChart(res) {
|
|
|
xMax2 = obj.num;
|
|
|
}
|
|
|
}
|
|
|
- let dataheng = [xMax1+2, xMax1+2, xMax1+2, xMax1+2, xMax1+2];
|
|
|
+ let dataheng = [xMax1 + 2, xMax1 + 2, xMax1 + 2, xMax1 + 2, xMax1 + 2];
|
|
|
let option = {
|
|
|
backgroundColor: '#fff',
|
|
|
tooltip: {
|
|
@@ -134,7 +150,7 @@ function initChart(res) {
|
|
|
},
|
|
|
{
|
|
|
left: '74%',
|
|
|
- right: '0%',
|
|
|
+ right: '10%',
|
|
|
top: 0,
|
|
|
bottom: '0%',
|
|
|
containLabel: true,
|
|
@@ -363,6 +379,50 @@ function initChart(res) {
|
|
|
};
|
|
|
// 3.配置项和数据给实例化对象
|
|
|
myChart.setOption(option);
|
|
|
+ myChart.on("click", function (param) {
|
|
|
+ if (param.seriesIndex == 0) {
|
|
|
+ dl(param.data.id,param.name);
|
|
|
+ } else {
|
|
|
+ dr(param.data.id,param.name);
|
|
|
+ }
|
|
|
+ console.log(param);
|
|
|
+ // console.error(param,param.data.id,param.data.value,param.name);
|
|
|
+ // let url = '/zabbix/zabbix.php?action=map.view&sysmapid=2&kiosk=1&line';
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+function dl(modelId, name) {
|
|
|
+ title.value = "[" + name + "] 组件压力排行";
|
|
|
+ sl.value=true;
|
|
|
+ sr.value=false;
|
|
|
+ queryParams.value.modelId = modelId;
|
|
|
+ queryParams.value.params = {};
|
|
|
+ if (null != daterangeAlarmTime && '' != daterangeAlarmTime) {
|
|
|
+ queryParams.value.start = daterangeAlarmTime.value[0];
|
|
|
+ queryParams.value.end = daterangeAlarmTime.value[1];
|
|
|
+ }
|
|
|
+ getObjAccess(queryParams.value).then(response => {
|
|
|
+ loading.value = false;
|
|
|
+ leftList.value = response.data;
|
|
|
+ });
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+function dr(modelId, name){
|
|
|
+ title.value = "[" + name + "] 组件告警数量排行";
|
|
|
+ sl.value=false;
|
|
|
+ sr.value=true;
|
|
|
+ queryParams.value.modelId = modelId;
|
|
|
+ queryParams.value.params = {};
|
|
|
+ if (null != daterangeAlarmTime && '' != daterangeAlarmTime) {
|
|
|
+ queryParams.value.start = daterangeAlarmTime.value[0];
|
|
|
+ queryParams.value.end = daterangeAlarmTime.value[1];
|
|
|
+ }
|
|
|
+ getObjAlarm(queryParams.value).then(response => {
|
|
|
+ loading.value = false;
|
|
|
+ rightList.value = response.data;
|
|
|
+ });
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/** 查询告警记录列表 */
|
|
@@ -388,6 +448,13 @@ function handleQuery() {
|
|
|
getList();
|
|
|
}
|
|
|
|
|
|
+function timeSelect(v) {
|
|
|
+ let end = new Date();
|
|
|
+ let start = new Date().setDate(end.getDate() - v);
|
|
|
+ daterangeAlarmTime.value[0] = moment(start).format('YYYY-MM-DD');
|
|
|
+ daterangeAlarmTime.value[1] = moment(end).format('YYYY-MM-DD');
|
|
|
+}
|
|
|
+
|
|
|
/** 重置按钮操作 */
|
|
|
function resetQuery() {
|
|
|
daterangeAlarmTime.value = [];
|