修改看板

boardTest
夜笙歌 3 weeks ago
parent 477f133b1d
commit 7985c17b18

@ -6,3 +6,8 @@ export function getByAlarmInfo(query) {
url: '/ems/base/emsAlarmActionStep/getByAlarmInfo', method: 'post', data: query
})
}
export function handleExceptions(data) {
return request({
url: '/ems/base/emsAlarmActionStep/handleExceptions/'+data, method: 'post',
})
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 25 KiB

@ -8,7 +8,7 @@
:close-on-click-modal="false"
:close-on-press-escape="false"
class="realtime-alarm-dialog"
@close="closeRealtimeAlarmDialog"
@close="closeRealtimeAlarmDialog1"
>
<el-tabs v-model="realtimeActiveTab" type="card">
<!-- 告警详情标签页 -->
@ -165,20 +165,75 @@
</div>
</el-dialog>
<div class="almReminder" @click="openAlm" v-if="almData.filter(e=>e.isWaiting).length>0"></div>
<div class="scTable1" style="width: 580px">
<!-- <span style="color:#fff">{{ almData }}</span>-->
<div style="background-color: #094170">
<div class="scrollTable" style="font-weight: bold;width:100px">
报警设备
</div>
<div class="scrollTable" style="font-weight: bold;width: 400px">
报警信息
</div>
<div class="scrollTable" style="font-weight: bold;width: 80px">
操作
</div>
</div>
<vue-seamless-scroll
:class-option="chart1TableOption"
:data="almTableData"
style="height: calc(100% - 33px);overflow:hidden; "
>
<div
v-for="(item, index) in almTableData"
:key="index"
>
<div :style='"background-color:" + ((index % 2 === 0)? "#053460":"#032d57") '>
<div class="scrollTable" style=" width:100px;font-size: 14px">
{{ item.monitorId }}
</div>
<div class="scrollTable" style="width: 400px;font-size: 14px">
<el-tooltip :content="item.alarmContents[0]" placement="bottom">
<span>{{ item.alarmContents[0] }}</span>
</el-tooltip>
</div>
<div class="scrollTable" style="width: 80px;font-size: 14px">
<el-button @click="openAlm(item)" type="primary" size="mini">处理</el-button>
</div>
</div>
</div>
</vue-seamless-scroll>
</div>
</div>
</template>
<script>
import {getByAlarmInfo} from "@/api/board";
import {getByAlarmInfo, handleExceptions} from "@/api/board";
import {saveWebSocketAlarmData} from "@/api/ems/record/recordAlarmData";
import icon5 from "@/assets/images/icon5.jpg";
import vueSeamlessScroll from 'vue-seamless-scroll'
export default {
components: {vueSeamlessScroll},
data() {
return {
icon5,
chart1TableOption: {
step: 0.5, //
limitMoveNum: 12, // this.dataList.length
hoverStop: true, // stop
direction: 1, // 0 1 2 3
openWatch: true, // dom
singleHeight: 0, // (0) direction => 0/1
singleWidth: 0, // (0) direction => 2/3
waitTime: 0,
autoPlay: true,
},
almData: [],
almTableData: [],
//
realtimeAlarmDialog: false,
@ -272,6 +327,7 @@ export default {
watch: {
almData: {
handler() {
this.almTableData = JSON.parse(JSON.stringify(this.almData.filter(e => e.isWaiting)))
if (this.almData.filter(e => !e.isWaiting).length > 0 && !this.realtimeAlarmDialog) {
let arr = this.almData.sort((a, b) => a.alarmRules[0].objid - b.alarmRules[0].objid)
let data = arr.filter(v => !v.isWaiting)
@ -286,13 +342,10 @@ export default {
}
},
methods: {
openAlm() {
let arr = this.almData.sort((a, b) => a.alarmRules[0].objid - b.alarmRules[0].objid)
if (arr.length > 0) {
this.currentRealtimeAlarm = arr[0]
openAlm(e) {
this.currentRealtimeAlarm = e
this.realtimeAlarmDialog = true
this.getAlm(arr[0])
}
this.getAlm(e)
},
//
@ -409,11 +462,11 @@ export default {
},
async processRealtimeAlarm() {
this.alarmProcessing = true
try {
// 0
const success = await this.saveRealtimeAlarmData(this.currentRealtimeAlarm, 0)
if (success) {
this.$message.success('告警已确认知晓并标记为已处理')
console.log(this.currentRealtimeAlarm.alarmRules[0])
handleExceptions(this.currentRealtimeAlarm.alarmRules[0].alarmId)
.then(res => {
this.$message.success('告警已确认知晓 ')
let data = this.currentRealtimeAlarm
let index = this.almData.findIndex(v => v.monitorId === data.monitorId && v.alarmRules[0].objid === data.alarmRules[0].objid)
@ -422,14 +475,13 @@ export default {
this.currentRealtimeAlarm = null
this.realtimeActiveTab = 'alarmDetail'
this.realtimeActionSteps = []
}
} catch (error) {
console.error('处理告警失败:', error)
})
.catch(err => {
this.$message.error('处理告警失败')
} finally {
})
.finally(() => {
this.alarmProcessing = false
}
})
},
getFieldName(fieldCode) {
const fieldMap = {
@ -457,6 +509,7 @@ export default {
},
closeRealtimeAlarmDialog() {
let data = this.currentRealtimeAlarm
console.log(data)
let index = this.almData.findIndex(v => v.monitorId === data.monitorId && v.alarmRules[0].objid === data.alarmRules[0].objid)
this.$set(this.almData[index], 'isWaiting', true)
@ -465,6 +518,18 @@ export default {
this.realtimeActiveTab = 'alarmDetail'
this.realtimeActionSteps = []
},
closeRealtimeAlarmDialog1(done) {
let data = this.currentRealtimeAlarm
console.log(data)
let index = this.almData.findIndex(v => v.monitorId === data.monitorId && v.alarmRules[0].objid === data.alarmRules[0].objid)
this.$set(this.almData[index], 'isWaiting', true)
this.realtimeAlarmDialog = false
this.currentRealtimeAlarm = null
this.realtimeActiveTab = 'alarmDetail'
this.realtimeActionSteps = []
done()
},
PredictionContent() {
if (this.currentRealtimeAlarm.monitorId === 'E0012_4300' && this.currentRealtimeAlarm.alarmRules[0].monitorField === 1) {
@ -535,6 +600,28 @@ export default {
animation: Zoom 2s infinite;
}
.scTable1 {
display: none;
position: absolute;
top: 16%;
right: 10%;
width: 20%;
height: 45%;
overflow: hidden;
}
.scrollTable {
color: rgb(185, 186, 192);
margin: auto 0px;
padding: 4px 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
display: inline-block;
}
@keyframes Zoom {
0% {
width: 3vw;

@ -87,7 +87,8 @@
<div class="id" style="top: 40%;left: 8%;">51.03</div>
</div>
<div v-if="isDevise">
<div class="icon2" style="top: 73%;left: 73%;">
<div :class="Object.values(deviceData.E0013).filter(e=>e.isAlm).length>0?'icon5':'icon2'"
style="top: 73%;left: 73%;">
<div class="deviceInfo2">
<div class="line"></div>
<div class="table1">
@ -116,7 +117,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 74%;left: 94%;">
<div :class="(deviceData.E0014.E0014_0200||{}).isAlm?'icon5':'icon2'" style="top: 74%;left: 94%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -140,7 +141,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 74%;left: 90%;">
<div :class="(deviceData.E0014.E0014_1600||{}).isAlm?'icon5':'icon2'" style="top: 74%;left: 90%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -164,7 +165,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 74%;left: 76%;">
<div :class="(deviceData.E0014.E0014_0100||{}).isAlm?'icon5':'icon2'" style="top: 74%;left: 76%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -188,7 +189,7 @@
</div>
</div>
</div>
<div class="icon4" style="top: 74%;left: 92.4%;">
<div :class="(deviceData.E0014.E0014_3500||{}).isAlm?'icon5':'icon4'" style="top: 74%;left: 92.4%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -212,7 +213,7 @@
</div>
</div>
</div>
<div class="icon4" style="top: 74%;left: 77.7%;">
<div :class="(deviceData.E0014.E0014_3700||{}).isAlm?'icon5':'icon4'" style="top: 74%;left: 77.7%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -236,7 +237,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 88%;left: 55%;">
<div :class="(deviceData.E0004.E0004_0800||{}).isAlm?'icon5':'icon2'" style="top: 88%;left: 55%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -260,7 +261,7 @@
</div>
</div>
</div>
<div class="icon4" style="top: 88.2%;left: 52.7%;">
<div :class="(deviceData.E0004.E0004_3800||{}).isAlm?'icon5':'icon4'" style="top: 88.2%;left: 52.7%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -284,7 +285,7 @@
</div>
</div>
</div>
<div class="icon4" style="top: 77.6%;left: 57.8%;">
<div :class="(deviceData.E0004.E0004_3400||{}).isAlm?'icon5':'icon4'" style="top: 77.6%;left: 57.8%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -308,7 +309,7 @@
</div>
</div>
</div>
<div class="icon4" style="top: 85.6%;left: 63.8%;">
<div :class="(deviceData.E0004.E0004_3600||{}).isAlm?'icon5':'icon4'" style="top: 85.6%;left: 63.8%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -332,7 +333,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 75%;left: 29%;">
<div :class="(deviceData.E0002.E0002_2400||{}).isAlm?'icon5':'icon2'" style="top: 75%;left: 29%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -356,7 +357,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 79%;left: 35%;">
<div :class="(deviceData.E0003.E0003_2900||{}).isAlm?'icon5':'icon2'" style="top: 79%;left: 35%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -380,7 +381,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 77%;left: 38%;">
<div :class="(deviceData.E0003.E0003_2700||{}).isAlm?'icon5':'icon2'" style="top: 77%;left: 38%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -404,7 +405,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 77%;left: 23%;">
<div :class="(deviceData.E0001.E0001_1900||{}).isAlm?'icon5':'icon2'" style="top: 77%;left: 23%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -428,7 +429,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 55%;left: 25.5%;">
<div :class="(deviceData.E0001.E0001_0400||{}).isAlm?'icon5':'icon2'" style="top: 55%;left: 25.5%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -452,7 +453,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 35.5%;left: 26.6%;">
<div :class="(deviceData.E0001.E0001_2100||{}).isAlm?'icon5':'icon2'" style="top: 35.5%;left: 26.6%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -476,7 +477,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 38.5%;left: 11.6%;">
<div :class="(deviceData.E0005.E0005_0300||{}).isAlm?'icon5':'icon2'" style="top: 38.5%;left: 11.6%;">
<div class="deviceInfo1">
<div class="line"></div>
<div class="table1">
@ -500,7 +501,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 38.5%;left: 18.6%;">
<div :class="(deviceData.E0006.E0006_0600||{}).isAlm?'icon5':'icon2'" style="top: 38.5%;left: 18.6%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -524,7 +525,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 82%;left: 80.8%;">
<div :class="(deviceData.E0014.E0014_1200||{}).isAlm?'icon5':'icon2'" style="top: 82%;left: 80.8%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -548,7 +549,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 82%;left: 84.3%;">
<div :class="(deviceData.E0014.E0014_2300||{}).isAlm?'icon5':'icon2'" style="top: 82%;left: 84.3%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -572,7 +573,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 82%;left: 91%;">
<div :class="(deviceData.E0014.E0014_3200||{}).isAlm?'icon5':'icon2'" style="top: 82%;left: 91%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -596,7 +597,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 82%;left: 94.3%;">
<div :class="(deviceData.E0014.E0014_1300||{}).isAlm?'icon5':'icon2'" style="top: 82%;left: 94.3%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -620,7 +621,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 85%;left: 66%;">
<div :class="(deviceData.E0004.E0004_0500||{}).isAlm?'icon5':'icon2'" style="top: 85%;left: 66%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -644,7 +645,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 86%;left: 34%;">
<div :class="(deviceData.E0002.E0002_1100||{}).isAlm?'icon5':'icon2'" style="top: 86%;left: 34%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -668,7 +669,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 79%;left: 32%;">
<div :class="(deviceData.E0002.E0002_1800||{}).isAlm?'icon5':'icon2'" style="top: 79%;left: 32%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -692,7 +693,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 50.5%;left: 26.2%;">
<div :class="(deviceData.E0001.E0001_0700||{}).isAlm?'icon5':'icon2'" style="top: 50.5%;left: 26.2%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -716,7 +717,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 46.5%;left: 26.7%;">
<div :class="(deviceData.E0001.E0001_1400||{}).isAlm?'icon5':'icon2'" style="top: 46.5%;left: 26.7%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -740,7 +741,7 @@
</div>
</div>
</div>
<div class="icon2" style="top: 42.5%;left: 27.2%;">
<div :class="(deviceData.E0001.E0001_2200||{}).isAlm?'icon5':'icon2'" style="top: 42.5%;left: 27.2%;">
<div class="deviceInfo">
<div class="line"></div>
<div class="table1">
@ -842,6 +843,7 @@ export default {
vibrationDisplacement: e.deviceParam.vibrationDisplacement || 0,
vibrationAcceleration: e.deviceParam.vibrationAcceleration || 0,
vibrationTemp: e.deviceParam.vibrationTemp || 0,
isAlm: e.alarmRules.length > 0
})
}
})
@ -1443,7 +1445,7 @@ export default {
</style>
<style>
.almReminder {
.scTable1 {
display: block;
}
</style>

Loading…
Cancel
Save