|
|
@ -18,6 +18,8 @@
|
|
|
|
<!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
|
|
|
|
<!-- <el-tooltip content="文档地址" effect="dark" placement="bottom">-->
|
|
|
|
<!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
|
|
|
|
<!-- <ruo-yi-doc id="ruoyi-doc" class="right-menu-item hover-effect" />-->
|
|
|
|
<!-- </el-tooltip>-->
|
|
|
|
<!-- </el-tooltip>-->
|
|
|
|
|
|
|
|
<!-- 异常处理按钮 - 已注释,改用全局处理 -->
|
|
|
|
|
|
|
|
<!--
|
|
|
|
<el-tooltip content="异常处理" class="right-menu-item hover-effect">
|
|
|
|
<el-tooltip content="异常处理" class="right-menu-item hover-effect">
|
|
|
|
<span
|
|
|
|
<span
|
|
|
|
class="exceptionHandling"
|
|
|
|
class="exceptionHandling"
|
|
|
@ -29,6 +31,7 @@
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</el-tooltip>
|
|
|
|
</el-tooltip>
|
|
|
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- WebSocket连接状态指示器 - 已注释,改用全局管理 -->
|
|
|
|
<!-- WebSocket连接状态指示器 - 已注释,改用全局管理 -->
|
|
|
|
<!--
|
|
|
|
<!--
|
|
|
@ -73,7 +76,8 @@
|
|
|
|
</el-dropdown>
|
|
|
|
</el-dropdown>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 告警对话框 -->
|
|
|
|
<!-- 告警对话框 - 已注释,改用全局处理 -->
|
|
|
|
|
|
|
|
<!--
|
|
|
|
<el-dialog
|
|
|
|
<el-dialog
|
|
|
|
:title="alarmTitle"
|
|
|
|
:title="alarmTitle"
|
|
|
|
:visible.sync="alarmOpen"
|
|
|
|
:visible.sync="alarmOpen"
|
|
|
@ -81,7 +85,6 @@
|
|
|
|
append-to-body
|
|
|
|
append-to-body
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<el-tabs v-model="activeTab" type="card">
|
|
|
|
<el-tabs v-model="activeTab" type="card">
|
|
|
|
<!-- 告警列表标签页 -->
|
|
|
|
|
|
|
|
<el-tab-pane label="告警列表" name="alarmList">
|
|
|
|
<el-tab-pane label="告警列表" name="alarmList">
|
|
|
|
<el-table
|
|
|
|
<el-table
|
|
|
|
v-loading="alarmLoading"
|
|
|
|
v-loading="alarmLoading"
|
|
|
@ -125,7 +128,6 @@
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
</el-tab-pane>
|
|
|
|
</el-tab-pane>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 处置措施标签页 -->
|
|
|
|
|
|
|
|
<el-tab-pane label="处置措施" name="actionSteps" :disabled="!currentAlarmData">
|
|
|
|
<el-tab-pane label="处置措施" name="actionSteps" :disabled="!currentAlarmData">
|
|
|
|
<div v-if="currentAlarmData">
|
|
|
|
<div v-if="currentAlarmData">
|
|
|
|
<el-alert
|
|
|
|
<el-alert
|
|
|
@ -155,12 +157,10 @@
|
|
|
|
<span class="step-title">第{{ step.stepSequence }}步</span>
|
|
|
|
<span class="step-title">第{{ step.stepSequence }}步</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 步骤描述 -->
|
|
|
|
|
|
|
|
<div class="step-description">
|
|
|
|
<div class="step-description">
|
|
|
|
<p>{{ step.description }}</p>
|
|
|
|
<p>{{ step.description }}</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 步骤图片 -->
|
|
|
|
|
|
|
|
<div v-if="step.stepImages && step.stepImages.length > 0" class="step-images">
|
|
|
|
<div v-if="step.stepImages && step.stepImages.length > 0" class="step-images">
|
|
|
|
<div class="images-title">参考图片:</div>
|
|
|
|
<div class="images-title">参考图片:</div>
|
|
|
|
<div class="image-gallery">
|
|
|
|
<div class="image-gallery">
|
|
|
@ -176,7 +176,6 @@
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 步骤备注 -->
|
|
|
|
|
|
|
|
<div v-if="step.remark" class="step-remark">
|
|
|
|
<div v-if="step.remark" class="step-remark">
|
|
|
|
<el-tag type="info" size="small">备注:{{ step.remark }}</el-tag>
|
|
|
|
<el-tag type="info" size="small">备注:{{ step.remark }}</el-tag>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
@ -196,8 +195,10 @@
|
|
|
|
<el-button @click="closeDialog">关 闭</el-button>
|
|
|
|
<el-button @click="closeDialog">关 闭</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-dialog>
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 图片预览对话框 -->
|
|
|
|
<!-- 图片预览对话框 - 已注释,改用全局处理 -->
|
|
|
|
|
|
|
|
<!--
|
|
|
|
<el-dialog
|
|
|
|
<el-dialog
|
|
|
|
title="图片预览"
|
|
|
|
title="图片预览"
|
|
|
|
:visible.sync="imagePreviewVisible"
|
|
|
|
:visible.sync="imagePreviewVisible"
|
|
|
@ -209,6 +210,7 @@
|
|
|
|
<img :src="previewImageUrl" style="max-width: 100%; max-height: 70vh;"/>
|
|
|
|
<img :src="previewImageUrl" style="max-width: 100%; max-height: 70vh;"/>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-dialog>
|
|
|
|
</el-dialog>
|
|
|
|
|
|
|
|
-->
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 实时告警弹窗 - 已注释,使用全局弹窗代替 -->
|
|
|
|
<!-- 实时告警弹窗 - 已注释,使用全局弹窗代替 -->
|
|
|
|
<!--
|
|
|
|
<!--
|
|
|
@ -450,41 +452,42 @@ import Search from '@/components/HeaderSearch'
|
|
|
|
import RuoYiGit from '@/components/RuoYi/Git'
|
|
|
|
import RuoYiGit from '@/components/RuoYi/Git'
|
|
|
|
import RuoYiDoc from '@/components/RuoYi/Doc'
|
|
|
|
import RuoYiDoc from '@/components/RuoYi/Doc'
|
|
|
|
import settings from '@/settings'
|
|
|
|
import settings from '@/settings'
|
|
|
|
import {handleExceptions, listRecordAlarmData} from '@/api/ems/record/recordAlarmData'
|
|
|
|
// import {handleExceptions, listRecordAlarmData} from '@/api/ems/record/recordAlarmData' // 已注释,改用全局处理
|
|
|
|
import {getEmsAlarmActionStepsByRuleId, getEmsAlarmActionStepsByAlarmInfo} from '@/api/ems/base/emsAlarmActionStep'
|
|
|
|
// import {getEmsAlarmActionStepsByRuleId, getEmsAlarmActionStepsByAlarmInfo} from '@/api/ems/base/emsAlarmActionStep' // 已注释,改用全局处理
|
|
|
|
// import {saveWebSocketAlarmData} from '@/api/ems/record/recordAlarmData' // 已注释,改用全局处理
|
|
|
|
// import {saveWebSocketAlarmData} from '@/api/ems/record/recordAlarmData' // 已注释,改用全局处理
|
|
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
export default {
|
|
|
|
dicts: ['alarm_type', 'alarm_status'],
|
|
|
|
// dicts: ['alarm_type', 'alarm_status'], // 已注释,改用全局处理
|
|
|
|
data() {
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
poolNameList: [],
|
|
|
|
// 告警对话框相关 - 已注释,改用全局处理
|
|
|
|
poolName: '',
|
|
|
|
// poolNameList: [],
|
|
|
|
alarmTitle: '异常处理',
|
|
|
|
// poolName: '',
|
|
|
|
alarmOpen: false,
|
|
|
|
// alarmTitle: '异常处理',
|
|
|
|
alarmLoading: false,
|
|
|
|
// alarmOpen: false,
|
|
|
|
alarmDataList: [],
|
|
|
|
// alarmLoading: false,
|
|
|
|
alarmDataTotal: 0,
|
|
|
|
// alarmDataList: [],
|
|
|
|
|
|
|
|
// alarmDataTotal: 0,
|
|
|
|
// 选中数组
|
|
|
|
// 选中数组
|
|
|
|
objIds: [],
|
|
|
|
// objIds: [],
|
|
|
|
// 非单个禁用
|
|
|
|
// 非单个禁用
|
|
|
|
single: true,
|
|
|
|
// single: true,
|
|
|
|
// 非多个禁用
|
|
|
|
// 非多个禁用
|
|
|
|
multiple: true,
|
|
|
|
// multiple: true,
|
|
|
|
// 查询参数
|
|
|
|
// 查询参数
|
|
|
|
queryParams: {
|
|
|
|
// queryParams: {
|
|
|
|
pageNum: 1,
|
|
|
|
// pageNum: 1,
|
|
|
|
pageSize: 10,
|
|
|
|
// pageSize: 10,
|
|
|
|
alarmStatus: '1'
|
|
|
|
// alarmStatus: '1'
|
|
|
|
},
|
|
|
|
// },
|
|
|
|
// 措施步骤相关
|
|
|
|
// 措施步骤相关
|
|
|
|
currentAlarmData: null,
|
|
|
|
// currentAlarmData: null,
|
|
|
|
showActionSteps: false,
|
|
|
|
// showActionSteps: false,
|
|
|
|
actionSteps: [],
|
|
|
|
// actionSteps: [],
|
|
|
|
actionStepsLoading: false,
|
|
|
|
// actionStepsLoading: false,
|
|
|
|
activeTab: 'alarmList',
|
|
|
|
// activeTab: 'alarmList',
|
|
|
|
imagePreviewVisible: false,
|
|
|
|
// imagePreviewVisible: false,
|
|
|
|
previewImageUrl: '',
|
|
|
|
// previewImageUrl: '',
|
|
|
|
|
|
|
|
|
|
|
|
// WebSocket告警相关 - 实时告警弹窗已注释,改用全局弹窗
|
|
|
|
// WebSocket告警相关 - 实时告警弹窗已注释,改用全局弹窗
|
|
|
|
// realtimeAlarmDialog: false,
|
|
|
|
// realtimeAlarmDialog: false,
|
|
|
@ -508,7 +511,8 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
created() {
|
|
|
|
created() {
|
|
|
|
localStorage.setItem('this.alarmDataTotal', 0)
|
|
|
|
// 初始化告警数据 - 已注释,改用全局处理
|
|
|
|
|
|
|
|
// localStorage.setItem('this.alarmDataTotal', 0)
|
|
|
|
|
|
|
|
|
|
|
|
// 监听新的队列化WebSocket告警事件 - 已注释,改用全局弹窗
|
|
|
|
// 监听新的队列化WebSocket告警事件 - 已注释,改用全局弹窗
|
|
|
|
// this.$bus.$on('websocket-alarm-with-callback', this.handleQueuedRealtimeAlarm)
|
|
|
|
// this.$bus.$on('websocket-alarm-with-callback', this.handleQueuedRealtimeAlarm)
|
|
|
@ -534,8 +538,8 @@ export default {
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
},
|
|
|
|
},
|
|
|
|
mounted() {
|
|
|
|
mounted() {
|
|
|
|
// 初始获取告警数据,后续完全依赖WebSocket推送
|
|
|
|
// 初始获取告警数据 - 已注释,改用全局处理
|
|
|
|
this.getAlarmData()
|
|
|
|
// this.getAlarmData()
|
|
|
|
|
|
|
|
|
|
|
|
// 定期更新告警队列状态 - 已注释,改用全局管理
|
|
|
|
// 定期更新告警队列状态 - 已注释,改用全局管理
|
|
|
|
// this.queueStatusTimer = setInterval(() => {
|
|
|
|
// this.queueStatusTimer = setInterval(() => {
|
|
|
@ -576,6 +580,8 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
methods: {
|
|
|
|
|
|
|
|
// 告警数据处理相关方法 - 已注释,改用全局处理
|
|
|
|
|
|
|
|
/*
|
|
|
|
// 打开右下角异常
|
|
|
|
// 打开右下角异常
|
|
|
|
openAlarm() {
|
|
|
|
openAlarm() {
|
|
|
|
this.$notify({
|
|
|
|
this.$notify({
|
|
|
@ -594,7 +600,7 @@ export default {
|
|
|
|
)
|
|
|
|
)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/** 报警列表 */
|
|
|
|
// 报警列表
|
|
|
|
getAlarmData(open) {
|
|
|
|
getAlarmData(open) {
|
|
|
|
this.alarmOpen = open
|
|
|
|
this.alarmOpen = open
|
|
|
|
this.alarmLoading = true
|
|
|
|
this.alarmLoading = true
|
|
|
@ -611,7 +617,7 @@ export default {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
/** 跳转处理 */
|
|
|
|
// 跳转处理
|
|
|
|
jumpProcessing(row) {
|
|
|
|
jumpProcessing(row) {
|
|
|
|
if (this.objIds.length === 0) {
|
|
|
|
if (this.objIds.length === 0) {
|
|
|
|
this.$modal.msgWarning('请勾选设备进行异常处理!')
|
|
|
|
this.$modal.msgWarning('请勾选设备进行异常处理!')
|
|
|
@ -628,6 +634,7 @@ export default {
|
|
|
|
this.single = selection.length !== 1
|
|
|
|
this.single = selection.length !== 1
|
|
|
|
this.multiple = !selection.length
|
|
|
|
this.multiple = !selection.length
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
*/
|
|
|
|
toggleSideBar() {
|
|
|
|
toggleSideBar() {
|
|
|
|
this.$store.dispatch('app/toggleSideBar')
|
|
|
|
this.$store.dispatch('app/toggleSideBar')
|
|
|
|
},
|
|
|
|
},
|
|
|
@ -645,6 +652,8 @@ export default {
|
|
|
|
}).catch(() => {
|
|
|
|
}).catch(() => {
|
|
|
|
})
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
// 告警对话框交互方法 - 已注释,改用全局处理
|
|
|
|
|
|
|
|
/*
|
|
|
|
handleRowClick(row) {
|
|
|
|
handleRowClick(row) {
|
|
|
|
this.currentAlarmData = row
|
|
|
|
this.currentAlarmData = row
|
|
|
|
this.activeTab = 'actionSteps'
|
|
|
|
this.activeTab = 'actionSteps'
|
|
|
@ -673,6 +682,7 @@ export default {
|
|
|
|
this.alarmOpen = false
|
|
|
|
this.alarmOpen = false
|
|
|
|
this.activeTab = 'alarmList'
|
|
|
|
this.activeTab = 'alarmList'
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
*/
|
|
|
|
// 获取完整的图片URL
|
|
|
|
// 获取完整的图片URL
|
|
|
|
getFullImageUrl(relativePath) {
|
|
|
|
getFullImageUrl(relativePath) {
|
|
|
|
if (!relativePath) return '';
|
|
|
|
if (!relativePath) return '';
|
|
|
|