Commit eaf3b040 authored by 姬鋆屾's avatar 姬鋆屾

推,异常告警表对接接口

parent 7fd64a55
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -193,4 +193,12 @@ export function getImpossibleInfo(params) { ...@@ -193,4 +193,12 @@ export function getImpossibleInfo(params) {
*/ */
export function getKqalert(params) { export function getKqalert(params) {
return http.get(`${BASEURL}/admin/kqalert/list`, params); return http.get(`${BASEURL}/admin/kqalert/list`, params);
} }
\ No newline at end of file
/**
* 查询设备告警日志列表
*/
// 查询设备告警日志列表
export function getInfoList(params) {
return http.post(`${baseURL}/m/device/alarm/info/list`, params);
}
...@@ -2,19 +2,23 @@ ...@@ -2,19 +2,23 @@
<div class="PoliticsShow-Container"> <div class="PoliticsShow-Container">
<div class="header_box"> <div class="header_box">
<div> <div>
<a-button type="primary" class="addclass" @click="exportTable"> <a-button type="primary" class="addclass" @click="handleExportTable">
<span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span> <span>{{ tableSelectedRows.length ? "导出" : "导出全部" }}</span>
</a-button> </a-button>
<span>告警次数:<i>256次</i></span> <!-- <span>告警次数:<i>256次</i></span>
<span>危险:<i>200次</i></span> <span>危险:<i>200次</i></span>
<span>次要:<i>65次</i></span> <span>次要:<i>65次</i></span>
<span>一般:<i>0次</i></span> <span>一般:<i>0次</i></span> -->
</div> </div>
<span> <span>
<a-input allowClear v-model="searchName" placeholder="请输入设备名称查询"> <a-input
allowClear
v-model="searchName"
placeholder="请输入设备名称查询"
>
<a-icon slot="prefix" type="search" /> <a-icon slot="prefix" type="search" />
</a-input> </a-input>
<a-select default-value="001"> <a-select v-model="alarmType">
<!-- <a-select-option <!-- <a-select-option
v-for="(item, index) of selectOptions" v-for="(item, index) of selectOptions"
:key="index" :key="index"
...@@ -23,10 +27,10 @@ ...@@ -23,10 +27,10 @@
{{ item.label }} {{ item.label }}
</a-select-option> --> </a-select-option> -->
<a-select-option value="001"> 内容001 </a-select-option> <a-select-option value=""> 全部 </a-select-option>
<a-select-option value="002"> 内容002 </a-select-option> <a-select-option value="0"> 离线 </a-select-option>
</a-select> </a-select>
<a-select default-value="001"> <a-select v-model="status">
<!-- <a-select-option <!-- <a-select-option
v-for="(item, index) of selectOptions" v-for="(item, index) of selectOptions"
:key="index" :key="index"
...@@ -35,31 +39,48 @@ ...@@ -35,31 +39,48 @@
{{ item.label }} {{ item.label }}
</a-select-option> --> </a-select-option> -->
<a-select-option value="001"> 状态001 </a-select-option> <a-select-option value="">全部状态</a-select-option>
<a-select-option value="002"> 状态002 </a-select-option> <a-select-option value="0"> 未清除 </a-select-option>
<a-select-option value="1"> 清除未确认 </a-select-option>
<a-select-option value="2"> 清除已确认 </a-select-option>
</a-select> </a-select>
<a-range-picker format="YYYY年MM月DD日" class="range_picker_style" @change="rangePickerChange" <a-range-picker
v-model="BegindAndEndTime"> format="YYYY-MM-DD"
class="range_picker_style"
@change="rangePickerChange"
>
</a-range-picker> </a-range-picker>
<a-button type="primary" class="addclass" >搜索</a-button> <a-button type="primary" class="addclass" @click="search"
>搜索</a-button
>
</span> </span>
</div> </div>
<div class="main"> <div class="main">
<a-table size="small" bordered :row-key="(record) => record.id" :row-selection="{ <a-table
selectedRowKeys: tableSelectedKeys, size="small"
onChange: onSelectChange, bordered
}" :scroll="{ y: 590 }" :pagination="tablePagination" @change="pagTableChange" :loading="tableLoading" :row-key="(record) => record.id"
:columns="tableHeaders" :dataSource="tableSourceData"> :row-selection="{
<template slot="告警级别" slot-scope="text, record, index"> selectedRowKeys: tableSelectedKeys,
onChange: onSelectChange,
}"
:scroll="{ y: 490 }"
:pagination="tablePagination"
@change="pagTableChange"
:loading="tableLoading"
:columns="tableHeaders"
:dataSource="tableSourceData"
>
<template slot="alarmLevel" slot-scope="text, record, index">
<span class="levelState">{{ text }}</span> <span class="levelState">{{ text }}</span>
</template> </template>
<template slot="operation" slot-scope="text, record, index"> <template slot="operation" slot-scope="text, record, index">
<a-button type="link" @click="openDetails">查看详情{{ record.id }}</a-button> <a-button type="link" @click="openDetails(record)">查看详情</a-button>
</template> </template>
</a-table> </a-table>
<Details ref="Details" /> <Details ref="Details" :msg="detailInfo" />
</div> </div>
</div> </div>
</template> </template>
...@@ -67,11 +88,16 @@ ...@@ -67,11 +88,16 @@
<script> <script>
import table from "@/mixins/table"; import table from "@/mixins/table";
import Details from "./components/Details.vue"; import Details from "./components/Details.vue";
import { getInfoList } from "@/api/dataAdmin";
import { export2Excel } from "@/utils/js/exportExcel";
export default { export default {
mixins: [table], mixins: [table],
name: "PortalAdminVuePoliticsShow", name: "PortalAdminVuePoliticsShow",
data() { data() {
return { return {
detailInfo: {},
status: "",
alarmType: "",
BegindAndEndTime: [], BegindAndEndTime: [],
tableHeaders: [ tableHeaders: [
{ {
...@@ -85,42 +111,60 @@ export default { ...@@ -85,42 +111,60 @@ export default {
{ {
title: "告警时间", title: "告警时间",
align: "center", align: "center",
dataIndex: "告警时间", customRender: (record) => {
return record.alarmTime
? this.timestampToTime(record.alarmTime)
: "--";
},
}, },
{ {
title: "设备名称", title: "设备名称",
align: "center", align: "center",
dataIndex: "设备名称", customRender: (record) => {
return record.deviceName ? record.deviceName : "--";
},
}, },
{ {
title: "告警内容", title: "告警内容",
align: "center", align: "center",
dataIndex: "告警内容", dataIndex: "alarmContent",
}, },
{ {
title: "告警级别", title: "告警级别",
align: "center", align: "center",
dataIndex: "告警级别", customRender: (record) => {
scopedSlots: { return record.alarmLevel == 0
customRender: "告警级别", ? "危险"
: record.alarmLevel == 1
? "次要"
: record.alarmLevel == 2
? "一般"
: "--";
}, },
}, },
{ {
title: "接收人员", title: "接收人员",
align: "center", align: "center",
dataIndex: "接收人员", dataIndex: "alarmReceivePersonnel",
}, },
{ {
title: "告警状态", title: "告警状态",
align: "center", align: "center",
dataIndex: "告警状态", customRender: (record) => {
return record.alarmStatus == 0
? "未清除"
: record.alarmStatus == 1
? "清除未确认"
: record.alarmStatus == 1
? "清除已确认"
: "--";
},
}, },
{ {
title: "操作", title: "操作",
align: "center", align: "center",
width: "110px", width: "110px",
dataIndex: "operation",
scopedSlots: { scopedSlots: {
customRender: "operation", customRender: "operation",
}, },
...@@ -133,22 +177,58 @@ export default { ...@@ -133,22 +177,58 @@ export default {
Details, Details,
}, },
mounted() { mounted() {
console.log(this.tablePagination);
this.setMoment(); this.setMoment();
for (let key = 0; key < 20; key++) { this.getData();
this.tableSourceData.push({
id: `00${key + 1}`,
告警时间: `2022-06-16 10:00:00${key + 1}`,
设备名称: `一楼排队机${key + 1}`,
告警内容: `离线${key + 1}`,
告警级别: `危险${key + 1}`,
接收人员: `刘德华${key + 1}`,
告警状态: `清楚已确认${key + 1}`,
});
}
}, },
methods: { methods: {
rangePickerChange(val) { // 时间戳转换为日期
console.log(val); timestampToTime(timestamp) {
var date = new Date(timestamp);
var Y = date.getFullYear() + "-";
var M =
(date.getMonth() + 1 < 10
? "0" + (date.getMonth() + 1)
: date.getMonth() + 1) + "-";
var D =
(date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";
var h = date.getHours() + ":";
var m = date.getMinutes() + ":";
var s = date.getSeconds();
return Y + M + D + h + m + s;
},
// 获取数据源
getData() {
let data = {
page: this.tablePagination.current,
size: this.tablePagination.pageSize,
deviceName: this.searchName,
alarmTimeStart: this.BegindAndEndTime[0],
alarmTimeEnd: this.BegindAndEndTime[1],
alarmStatus: this.status ? Number(this.status) : "",
alarmType: this.alarmType ? Number(this.alarmType) : "",
};
getInfoList(data).then((res) => {
if (res.code == 1) {
this.tableSourceData = res.data.data;
this.tablePagination.total = res.data.total;
}
});
},
// 搜索
search() {
this.tablePagination.current = 1;
this.getData();
},
// 页面跳转
pagTableChange(pagination) {
this.tablePagination = pagination;
this.getData();
},
rangePickerChange(date, dateString) {
this.BegindAndEndTime = dateString;
}, },
QueueState(type) { QueueState(type) {
switch (type) { switch (type) {
...@@ -161,9 +241,32 @@ export default { ...@@ -161,9 +241,32 @@ export default {
return "type0"; return "type0";
} }
}, },
openDetails() { openDetails(val) {
this.$refs.Details.modalInfo.title = "告警详情"; this.$refs.Details.modalInfo.title = "告警详情";
this.$refs.Details.modalInfo.visible = true; this.$refs.Details.modalInfo.visible = true;
let obj = JSON.parse(JSON.stringify(val));
obj.alarmStatus =
obj.alarmStatus == 0
? "未清除"
: obj.alarmStatus == 1
? "清除未确认"
: obj.alarmStatus == 1
? "清除已确认"
: "--";
obj.alarmLevel =
obj.alarmLevel == 0
? "危险"
: obj.alarmLevel == 1
? "次要"
: obj.alarmLevel == 2
? "一般"
: "--";
obj.alarmTime = this.timestampToTime(obj.alarmTime);
obj.updateTime = obj.updateTime
? this.timestampToTime(obj.updateTime)
: "--";
obj.updateUserId = obj.updateUserId ? obj.updateUserId : "--";
this.detailInfo = obj;
}, },
// 导出 // 导出
async handleExportTable() { async handleExportTable() {
...@@ -174,25 +277,98 @@ export default { ...@@ -174,25 +277,98 @@ export default {
data = this.$_.cloneDeep(this.tableSelectedRows); data = this.$_.cloneDeep(this.tableSelectedRows);
} else { } else {
let datas = this.$_.cloneDeep( let datas = this.$_.cloneDeep(
await getImpossible({ await getInfoList({
...this.queryform, deviceName: this.searchName,
alarmTimeStart: this.BegindAndEndTime[0],
alarmTimeEnd: this.BegindAndEndTime[1],
alarmStatus: this.status ? Number(this.status) : "",
alarmType: this.alarmType ? Number(this.alarmType) : "",
page: 1, page: 1,
size: -1 size: -1,
}) })
); );
this.btnLoading = false this.btnLoading = false;
data = datas.data.data data = datas.data.data;
if (!data.length) return; if (!data.length) return;
} }
const tHeader = [] const tHeader = [];
const filterVal = [] const filterVal = [];
this.tableHeaders.forEach(v=>{ data.forEach((v, i) => {
if(v.dataIndex){ v.index = i + 1;
tHeader.push(v.title) v.alarmTime = this.timestampToTime(v.alarmTime);
filterVal.push(v.dataIndex) v.alarmStatus =
v.alarmStatus == 0
? "未清除"
: v.alarmStatus == 1
? "清除未确认"
: v.alarmStatus == 1
? "清除已确认"
: "--";
v.alarmLevel =
v.alarmLevel == 0
? "危险"
: v.alarmLevel == 1
? "次要"
: v.alarmLevel == 2
? "一般"
: "--";
});
let tableHeaders = [
{
title: "序号",
dataIndex: "index",
width: "60px",
key: "index",
align: "center",
customRender: (text, record, index) => `${index + 1}`,
},
{
title: "告警时间",
align: "center",
dataIndex: "alarmTime",
},
{
title: "设备名称",
align: "center",
dataIndex: "deviceName",
},
{
title: "告警内容",
align: "center",
dataIndex: "alarmContent",
},
{
title: "告警级别",
align: "center",
dataIndex: "alarmLevel",
},
{
title: "接收人员",
align: "center",
dataIndex: "alarmReceivePersonnel",
},
{
title: "告警状态",
align: "center",
dataIndex: "alarmStatus",
},
{
title: "操作",
align: "center",
width: "110px",
scopedSlots: {
customRender: "operation",
},
},
];
tableHeaders.forEach((v) => {
if (v.dataIndex) {
tHeader.push(v.title);
filterVal.push(v.dataIndex);
} }
}) });
export2Excel( export2Excel(
tHeader, tHeader,
filterVal, filterVal,
...@@ -216,15 +392,15 @@ export default { ...@@ -216,15 +392,15 @@ export default {
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
&>div { & > div {
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
&>span { & > span {
margin-left: 10px; margin-left: 10px;
&>i { & > i {
margin: 0 5px; margin: 0 5px;
font-style: normal; font-style: normal;
} }
...@@ -258,6 +434,3 @@ export default { ...@@ -258,6 +434,3 @@ export default {
} }
} }
</style> </style>
...@@ -8,42 +8,47 @@ ...@@ -8,42 +8,47 @@
> >
<a-form-model <a-form-model
ref="ruleForm" ref="ruleForm"
:model="detailsForm" :model="msg"
:rules="detailsRules" :rules="detailsRules"
:label-col="{ span: 4 }" :label-col="{ span: 4 }"
:wrapper-col="{ span: 20 }" :wrapper-col="{ span: 20 }"
> >
<a-form-model-item label="告警设备" prop="告警设备"> <a-form-model-item label="告警设备" prop="告警设备">
<a-input v-model="detailsForm.告警设备" placeholder="请输入" disabled /> <a-input v-model="msg.deviceName" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警时间" prop="告警时间"> <a-form-model-item label="告警时间" prop="告警时间">
<a-input v-model="detailsForm.告警时间" placeholder="请输入" disabled /> <a-input v-model="msg.alarmTime" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警内容" prop="告警内容"> <a-form-model-item label="告警内容" prop="告警内容">
<a-input v-model="detailsForm.告警内容" placeholder="请输入" disabled /> <a-input v-model="msg.alarmContent" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警程度" prop="告警程度"> <a-form-model-item label="告警程度" prop="告警程度">
<a-input v-model="detailsForm.告警程度" placeholder="请输入" disabled /> <a-input v-model="msg.alarmLevel" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警状态" prop="告警状态"> <a-form-model-item label="告警状态" prop="告警状态">
<a-input v-model="detailsForm.告警状态" placeholder="请输入" disabled /> <a-input v-model="msg.alarmStatus" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="接收人员" prop="接收人员"> <a-form-model-item label="接收人员" prop="接收人员">
<a-input v-model="detailsForm.接收人员" placeholder="请输入" disabled /> <a-input
v-model="msg.alarmReceivePersonnel"
placeholder="请输入"
disabled
/>
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="告警详情" prop="告警详情"> <a-form-model-item label="告警详情" prop="告警详情">
<a-textarea <a-textarea
v-model="detailsForm.告警详情" v-model="msg.alarmContent"
placeholder="请输入" placeholder="请输入"
:rows="4" :rows="4"
disabled
/> />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="清楚时间" prop="清楚时间"> <a-form-model-item label="清楚时间" prop="清楚时间">
<a-input v-model="detailsForm.清楚时间" placeholder="请输入" disabled /> <a-input v-model="msg.updateTime" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
<a-form-model-item label="清楚人员" prop="清楚人员"> <a-form-model-item label="清楚人员" prop="清楚人员">
<a-input v-model="detailsForm.清楚人员" placeholder="请输入" disabled /> <a-input v-model="msg.updateUserId" placeholder="请输入" disabled />
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
</a-drawer> </a-drawer>
...@@ -54,7 +59,9 @@ import modal from "../mixins/modal"; ...@@ -54,7 +59,9 @@ import modal from "../mixins/modal";
export default { export default {
mixins: [modal], mixins: [modal],
name: "PortalAdminVuePicWorks", name: "PortalAdminVuePicWorks",
props: {
msg: Object,
},
data() { data() {
return { return {
detailsForm: { detailsForm: {
...@@ -84,5 +91,3 @@ export default { ...@@ -84,5 +91,3 @@ export default {
overflow-x: hidden !important; overflow-x: hidden !important;
} }
</style> </style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment