告警修改

This commit is contained in:
geting 2024-12-20 14:04:09 +08:00
parent ff933c877c
commit 601df9c4a4
5 changed files with 110 additions and 27 deletions

View File

@ -40,6 +40,11 @@
<el-table-column prop="eventTimeFormate" :label="AlarmsFieldsEnums['alarmTime']" align="center"> </el-table-column> <el-table-column prop="eventTimeFormate" :label="AlarmsFieldsEnums['alarmTime']" align="center"> </el-table-column>
<el-table-column prop="deviceName" :label="AlarmsFieldsEnums['airBlowerName']" align="center"> </el-table-column> <el-table-column prop="deviceName" :label="AlarmsFieldsEnums['airBlowerName']" align="center"> </el-table-column>
<el-table-column prop="deviceCode" :label="AlarmsFieldsEnums['airBlowerNumber']" align="center"> </el-table-column> <el-table-column prop="deviceCode" :label="AlarmsFieldsEnums['airBlowerNumber']" align="center"> </el-table-column>
<el-table-column prop="codeDescriptions" :label="AlarmsFieldsEnums['deflautCode']" align="center">
<template #default="scope">
<div class="tableColumnClick" @click="openDefalt(scope.row)">{{ scope.row.codeDescriptions }}</div>
</template>
</el-table-column>
<el-table-column prop="eventText" :label="AlarmsFieldsEnums['faultDescription']" align="center"> <el-table-column prop="eventText" :label="AlarmsFieldsEnums['faultDescription']" align="center">
<template #default="{ row }"> <template #default="{ row }">
<span v-html="formatText(row.eventText)"></span> <span v-html="formatText(row.eventText)"></span>
@ -81,13 +86,17 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref, onMounted } from 'vue' import { reactive, ref, onMounted, computed } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { Search } from '@element-plus/icons-vue' import { Search } from '@element-plus/icons-vue'
import { AlarmsFieldsEnums, AlarmsTableType, GetAlarmsTableParam } from './type' import { AlarmsFieldsEnums, AlarmsTableType, GetAlarmsTableParam } from './type'
import { getAlarmListReq, eventComfirm } from '/@/api/backend/alarms/request' import { getAlarmListReq, eventComfirm } from '/@/api/backend/alarms/request'
import { queryfaultCodeDict, theoreticalpowerCurveList } from '/@/api/backend/theoreticalpowerCurve/request'
import { equipList } from '/@/api/backend/realData/request' import { equipList } from '/@/api/backend/realData/request'
import { useI18n } from 'vue-i18n' import { useI18n } from 'vue-i18n'
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const { t } = useI18n() const { t } = useI18n()
import { useAdminInfo } from '/@/stores/adminInfo' import { useAdminInfo } from '/@/stores/adminInfo'
const adminInfo = useAdminInfo() const adminInfo = useAdminInfo()
@ -194,29 +203,46 @@ const getcurrentPage = () => {
getalarmsList() getalarmsList()
} }
const getalarmsList = () => { const getalarmsList = async () => {
const transparams = searchalarms() const transparams = searchalarms()
getAlarmListReq(transparams) console.log('🚀 ~ getalarmsList ~ transparams:', transparams)
.then((res: any) => { getAlarmListReq(transparams).then((res: any) => {
isLoading.value = false isLoading.value = false
if (res.code == 200) { if (res.code == 200) {
paginationOptions.total = res.total paginationOptions.total = res.total
alarmsTableData.value = res.rows.map((item: any) => { alarmsTableData.value = res.rows.map((item: any) => {
return { const descriptions = descriptionMap.value[`${item.madeinfactory}_${item.model}`] || {}
...item, console.log('🚀 ~ alarmsTableData.value=res.rows.map ~ descriptions:', descriptions)
eventTimeFormate: timestampToTime(item.eventTime),
} return {
}) ...item,
} else { eventTimeFormate: timestampToTime(item.eventTime),
ElMessage.error(res.msg ?? '查询失败') codeDescriptions: descriptions['firstTriggeredCode'] || '-',
} }
}) })
.catch((err) => { } else {
isLoading.value = false ElMessage.error(res.msg ?? '查询失败')
ElMessage.error(err?.response?.data?.msg ?? '查询失败') }
}) })
// .catch((err) => {
// isLoading.value = false
// ElMessage.error(err ?? '')
// })
} }
const descriptionMap = computed(() => {
const map: any = {}
Object.keys(faultCodeMap).forEach((item: any) => {
map[item] = faultCodeMap[item].reduce((acc: any, desc: any) => {
acc[desc.code] = desc.description
return acc
}, {})
})
console.log('🚀 ~ map[item.key]=item.value.reduce ~ map:', map)
return map
})
const formatText = (text: any) => { const formatText = (text: any) => {
text = text.replace(/ 动作/g, '<span style="color:#a03b1d;"> 动作</span>') text = text.replace(/ 动作/g, '<span style="color:#a03b1d;"> 动作</span>')
text = text.replace(/复归/g, '<span style="color:#39baf4;">复归</span>') text = text.replace(/复归/g, '<span style="color:#39baf4;">复归</span>')
@ -295,6 +321,7 @@ const getDateRange = (type: 'week' | 'month') => {
} }
} }
const faultCodeMap: any = {}
onMounted(() => { onMounted(() => {
equipList({ equipList({
// orgId: adminInfo.orgid, // orgId: adminInfo.orgid,
@ -310,7 +337,49 @@ onMounted(() => {
getalarmsList() getalarmsList()
} }
}) })
theoreticalpowerCurveList()
.then((res: any) => {
if (res.code == 200) {
paginationOptions.total = res.total
res.rows.forEach((item: any, index: number) => {
getfaultCodeDict(item)
})
} else {
ElMessage.error(res.msg ?? '查询失败')
}
})
.catch((err) => {
ElMessage.error(err?.response?.data?.msg ?? '查询失败')
})
}) })
const getfaultCodeDict = (data: any) => {
queryfaultCodeDict({ madeinfactory: data.madeinfactory, model: data.model }).then((res: any) => {
if (res.code == 200) {
const deflautList: any = []
res.data.forEach((item: any) => {
deflautList.push({
code: item.code,
description: item.description,
})
})
faultCodeMap[`${data.madeinfactory}_${data.model}`] = deflautList
} else {
ElMessage.warning('查询失败')
}
})
}
const openDefalt = (row: any) => {
router.push({
name: 'faultRecord',
query: {
eventTime: row.eventTime,
deviceId: row.deviceId,
},
})
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -356,6 +425,11 @@ $paginationHeight: 32px;
.tabsPart { .tabsPart {
height: calc(100% - $paginationHeight); height: calc(100% - $paginationHeight);
padding-bottom: 5px; padding-bottom: 5px;
.tableColumnClick {
text-decoration: underline;
color: #00a4ff;
cursor: pointer;
}
:deep(.el-tabs__content) { :deep(.el-tabs__content) {
height: calc(100% - 55px); height: calc(100% - 55px);
.el-tab-pane { .el-tab-pane {

View File

@ -36,4 +36,5 @@ export enum AlarmsFieldsEnums {
'faultDescription' = '故障描述', 'faultDescription' = '故障描述',
'alarmGrade' = '报警等级', 'alarmGrade' = '报警等级',
'alarmType' = '报警类别', 'alarmType' = '报警类别',
'deflautCode' = '首触故障码',
} }

View File

@ -194,6 +194,9 @@ import { equipList } from '/@/api/backend/temperature/request'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import { tableItemData } from './type' import { tableItemData } from './type'
import ContextMenu from '/@/views/backend/auth/model/contextMenu.vue' import ContextMenu from '/@/views/backend/auth/model/contextMenu.vue'
import { useRouter, useRoute } from 'vue-router'
const route = useRoute()
const defaultProps = { const defaultProps = {
children: 'children', children: 'children',
@ -310,11 +313,14 @@ const getTreeDataList = () => {
}) })
}) })
} }
const initDatestart = route.query.eventTime ? dayjs(Number(route.query.eventTime)) : dayjs().startOf('month')
const initDateend = route.query.eventTime ? dayjs(Number(route.query.eventTime)) : dayjs()
const searchData = reactive<{ fileName: ''; date: Date[] }>({ const searchData = reactive<{ fileName: ''; date: Date[] }>({
fileName: '', fileName: '',
date: [dayjs().startOf('month').toDate(), dayjs().toDate()], date: [initDatestart.toDate(), initDateend.toDate()],
}) })
const shortcuts = [ const shortcuts = [
{ {
text: '本月', text: '本月',
@ -368,6 +374,7 @@ const getListForAirBlower = () => {
startTime: dayjs(searchData.date[0]).format('YYYY-MM-DD'), startTime: dayjs(searchData.date[0]).format('YYYY-MM-DD'),
endTime: dayjs(searchData.date[1]).format('YYYY-MM-DD'), endTime: dayjs(searchData.date[1]).format('YYYY-MM-DD'),
} }
console.log('🚀 ~ getListForAirBlower ~ data:', data)
if (activeName.value === 'malFunction') { if (activeName.value === 'malFunction') {
getMalFunctionListReq(data).then((res) => { getMalFunctionListReq(data).then((res) => {
@ -533,7 +540,7 @@ const readFile = (data: tableItemData) => {
isLeaf: true, isLeaf: true,
}) })
} }
}) })
previewTreeData.value = data previewTreeData.value = data
originPreviewTreeData = data originPreviewTreeData = data
}) })
@ -862,8 +869,9 @@ const checkTab = () => {
onMounted(() => { onMounted(() => {
getTreeDataList().then((data: any) => { getTreeDataList().then((data: any) => {
treeRef.value && treeRef.value.setCurrentKey(data.id, true) const queryId = route.query.deviceId ?? data.id
curTreeData.value = data treeRef.value && treeRef.value.setCurrentKey(queryId, true)
curTreeData.value = treeRef.value?.getCurrentNode()
getListForAirBlower() getListForAirBlower()
}) })
}) })

View File

@ -15,7 +15,7 @@
<el-table-column label="操作" width="400" align="center"> <el-table-column label="操作" width="400" align="center">
<template #default="scope"> <template #default="scope">
<div class="tableOperate"> <div class="tableOperate">
<a @click="viewDetails(scope.row)">查看 </a> <a @click="viewDetails(scope.row)">编辑 </a>
<a @click="deleteDetails(scope.row)">删除</a> <a @click="deleteDetails(scope.row)">删除</a>
</div> </div>
</template> </template>

View File

@ -2,5 +2,5 @@ export enum theoreticalEnums {
'index' = '序号', 'index' = '序号',
'madeinfactory' = '生产厂家', 'madeinfactory' = '生产厂家',
'model' = '规格型号', 'model' = '规格型号',
'nominalCapacity' = '额容量MW', 'nominalCapacity' = '额容量MW',
} }