Commit 3c3c3f3f8c1f5c585c68de6f74db9ad3a10133d1
Committed by
xp.Huang
1 parent
d14e54bf
fix: 修复小程序告警记录中,设备全部为暂无数据,暂无数据,告警条件和值都为空
Showing
6 changed files
with
69 additions
and
21 deletions
| ... | ... | @@ -94,6 +94,7 @@ |
| 94 | 94 | if (e.data !== null) { |
| 95 | 95 | let params = JSON.parse(decodeURIComponent(e.data)); |
| 96 | 96 | const {deviceName,severity,organizationName,details,type,createdTime,status,id} = params |
| 97 | + | |
| 97 | 98 | this.detailId = id |
| 98 | 99 | this.alarmDetail = [{label: '告警场景:',value: type},{label: '告警级别:',value: severity},{label: '所属组织:',value: organizationName},{label: '告警设备:',value: ''},{label: '告警条件:',value: ''},{label: '告警值:',value: ''},{label: '告警时间:',value: createdTime},{label: '告警状态:',value: status},] |
| 99 | 100 | this.formatAlarmDevice(details) |
| ... | ... | @@ -147,11 +148,13 @@ |
| 147 | 148 | const keys = Object.keys(e) |
| 148 | 149 | const dataFormat = await this.handleAlarmDetailFormat(keys); |
| 149 | 150 | const values = keys.reduce((acc, curr) => { |
| 151 | + const items = e[curr]?.triggerData | |
| 150 | 152 | dataFormat.forEach((dataItem => { |
| 151 | 153 | if (dataItem.tbDeviceId === curr) { |
| 152 | - const findAttribute = dataItem.attribute.find(findItem => findItem.identifier === e[curr].key) | |
| 154 | + const findAttribute = dataItem.attribute.find(findItem => findItem.identifier === items?.key) | |
| 155 | + if(!items?.realValue && !findAttribute.name) return | |
| 153 | 156 | acc.push( |
| 154 | - `${findAttribute.name}:${e[curr].realValue}${!findAttribute.detail?.dataType?.specs?.unit?.key?'':findAttribute.detail?.dataType?.specs?.unit?.key}` | |
| 157 | + `${findAttribute.name}:${items.realValue}${!findAttribute.detail?.dataType?.specs?.unit?.key?'':findAttribute.detail?.dataType?.specs?.unit?.key}` | |
| 155 | 158 | ) |
| 156 | 159 | } |
| 157 | 160 | })) |
| ... | ... | @@ -164,8 +167,8 @@ |
| 164 | 167 | const keys = Object.keys(e) |
| 165 | 168 | const values = keys.reduce((acc, curr) => { |
| 166 | 169 | acc.push({ |
| 167 | - login: e[curr].logic, | |
| 168 | - logicValue: e[curr].logicValue | |
| 170 | + login: e[curr]?.triggerData?.logic, | |
| 171 | + logicValue: e[curr]?.triggerData?.logicValue | |
| 169 | 172 | }) |
| 170 | 173 | return acc |
| 171 | 174 | }, []) |
| ... | ... | @@ -221,4 +224,4 @@ |
| 221 | 224 | background-color: #377dff !important; |
| 222 | 225 | border-color: #377dff !important; |
| 223 | 226 | } |
| 224 | -</style> | |
| \ No newline at end of file | ||
| 227 | +</style> | ... | ... |
| ... | ... | @@ -3,7 +3,7 @@ |
| 3 | 3 | <view @click="$emit('openAlertDetail',item)" class="list-item" v-for="(item, index) in list" :key="index"> |
| 4 | 4 | <view class="u-flex item"> |
| 5 | 5 | <view class="item-text text-clip"> |
| 6 | - <text class="text-bold">{{ item.deviceName == null ? '暂无数据' : item.deviceName }}</text> | |
| 6 | + <text class="text-bold">{{ item.deviceAlias || item.deviceName || '暂无数据' }}</text> | |
| 7 | 7 | </view> |
| 8 | 8 | <view class="item-text text-clip"> |
| 9 | 9 | <text class="text-muted">{{ item.details == null ? '暂无数据' : formatDetailText(item.details) }}</text> |
| ... | ... | @@ -36,6 +36,7 @@ |
| 36 | 36 | alarmSeverity, |
| 37 | 37 | alarmStatus |
| 38 | 38 | } from '../config/data.js'; |
| 39 | + import {findLogin} from './config' | |
| 39 | 40 | |
| 40 | 41 | export default { |
| 41 | 42 | props: { |
| ... | ... | @@ -67,11 +68,14 @@ |
| 67 | 68 | bindImageUrl(e) { |
| 68 | 69 | return this.alarmSeverity.find(item => item.value === e).icon |
| 69 | 70 | }, |
| 70 | - formatDetailText(e) { | |
| 71 | - const keys = Object.keys(e) | |
| 72 | - if(!keys) return | |
| 73 | - const values = keys.reduce((acc, curr) => { | |
| 74 | - acc.push(`${!e[curr].key?'暂无数据':e[curr].key}:${!e[curr].realValue?'暂无数据':e[curr].realValue}`) | |
| 71 | + formatDetailText(details) { | |
| 72 | + const deviceIdKeys = Object.keys(details) | |
| 73 | + if(!deviceIdKeys) return | |
| 74 | + const values = deviceIdKeys.reduce((acc, curr) => { | |
| 75 | + const items = details[curr]?.triggerData | |
| 76 | + if(items?.key && items?.logicValue && items.realValue){ | |
| 77 | + acc.push(`触发属性:${items.key ||'暂无数据'} 触发条件:${findLogin(items)+items.logicValue || '暂无数据'} 触发值:${items?.realValue || '暂无数据'} `) | |
| 78 | + } | |
| 75 | 79 | return acc |
| 76 | 80 | }, []) |
| 77 | 81 | return values.join(',') |
| ... | ... | @@ -103,10 +107,10 @@ |
| 103 | 107 | align-items: center; |
| 104 | 108 | height: 211rpx; |
| 105 | 109 | margin-top: 8rpx; |
| 106 | - margin-left: 37rpx; | |
| 110 | + margin-left: 20rpx; | |
| 107 | 111 | |
| 108 | 112 | .item-text { |
| 109 | - width: 400rpx; | |
| 113 | + width: 500rpx; | |
| 110 | 114 | text-align: left; |
| 111 | 115 | margin-top: 13rpx; |
| 112 | 116 | line-height: 40rpx; |
| ... | ... | @@ -149,4 +153,4 @@ |
| 149 | 153 | } |
| 150 | 154 | } |
| 151 | 155 | } |
| 152 | -</style> | |
| \ No newline at end of file | ||
| 156 | +</style> | ... | ... |
pages/alarm/components/config.js
0 → 100644
| 1 | + | |
| 2 | +export const StringOperationEnum = { | |
| 3 | + EQUAL : 'EQUAL', | |
| 4 | + NOT_EQUAL : 'NOT_EQUAL', | |
| 5 | + STARTS_WITH : 'STARTS_WITH', | |
| 6 | + ENDS_WITH : 'ENDS_WITH', | |
| 7 | + CONTAINS : 'CONTAINS', | |
| 8 | + NOT_CONTAINS : 'NOT_CONTAINS', | |
| 9 | +} | |
| 10 | +export const BooleanOperationEnum = { | |
| 11 | + EQUAL : 'EQUAL', | |
| 12 | + NOT_EQUAL : 'NOT_EQUAL', | |
| 13 | +} | |
| 14 | + | |
| 15 | +export const operationNumber_OR_TIME = [ | |
| 16 | + { label: '等于', value: 'EQUAL', symbol: '=' }, | |
| 17 | + { label: '不等于', value: 'NOT_EQUAL', symbol: '!=' }, | |
| 18 | + { label: '小于', value: 'LESS', symbol: '<' }, | |
| 19 | + { label: '小于等于', value: 'LESS_OR_EQUAL', symbol: '<=' }, | |
| 20 | + { label: '大于', value: 'GREATER', symbol: '>' }, | |
| 21 | + { label: '大于等于', value: 'GREATER_OR_EQUAL', symbol: '>=' }, | |
| 22 | +]; | |
| 23 | +export const operationString = [ | |
| 24 | + { label: '等于', value: StringOperationEnum.EQUAL, symbol: '=' }, | |
| 25 | + { label: '不等于', value: StringOperationEnum.NOT_EQUAL, symbol: '!=' }, | |
| 26 | + { label: '开始于', value: StringOperationEnum.STARTS_WITH, symbol: '开始于' }, | |
| 27 | + { label: '结束于', value: StringOperationEnum.ENDS_WITH, symbol: '结束于' }, | |
| 28 | + { label: '包含', value: StringOperationEnum.CONTAINS, symbol: '包含' }, | |
| 29 | + { label: '不包含', value: StringOperationEnum.NOT_CONTAINS, symbol: '不包含' }, | |
| 30 | +]; | |
| 31 | +export const operationBoolean = [ | |
| 32 | + { label: '等于', value: BooleanOperationEnum.EQUAL, symbol: '=' }, | |
| 33 | + { label: '不等于', value: BooleanOperationEnum.NOT_EQUAL, symbol: '!=' }, | |
| 34 | +]; | |
| 35 | + | |
| 36 | +export const findLogin = (curr) =>{ | |
| 37 | + return [...operationNumber_OR_TIME, ...operationString, ...operationBoolean].find( | |
| 38 | + (item) => item.value === curr?.logic | |
| 39 | + )?.symbol; | |
| 40 | +} | ... | ... |
| ... | ... | @@ -42,7 +42,7 @@ |
| 42 | 42 | }, |
| 43 | 43 | data() { |
| 44 | 44 | return { |
| 45 | - imageSrc:'/static/org.png', | |
| 45 | + imageSrc:'/static/camer.png', | |
| 46 | 46 | page: { |
| 47 | 47 | num: 0, |
| 48 | 48 | size: 10 |
| ... | ... | @@ -157,4 +157,4 @@ |
| 157 | 157 | |
| 158 | 158 | <style lang="scss" scoped> |
| 159 | 159 | @import '../../static/camera.scss'; |
| 160 | -</style> | |
| \ No newline at end of file | ||
| 160 | +</style> | ... | ... |
| 1 | 1 | <template> |
| 2 | - <view> | |
| 2 | + <view class="configuation-detail-page"> | |
| 3 | + <!-- 公共组件-每个页面必须引入 --> | |
| 4 | + <public-module></public-module> | |
| 3 | 5 | <web-view :src="visualBoardUrl"></web-view> |
| 4 | 6 | </view> |
| 5 | - | |
| 6 | 7 | </template> |
| 7 | 8 | |
| 8 | 9 | <script> |
| ... | ... | @@ -26,12 +27,12 @@ |
| 26 | 27 | async createShareUrl(record){ |
| 27 | 28 | const userInfo = uni.getStorageSync('userInfo') |
| 28 | 29 | const { id } = record; |
| 29 | - // http://192.168.10.131:8083 | |
| 30 | 30 | return `${config.baseVisualUrl}${this.getUrl(id,userInfo.userId)}`; |
| 31 | 31 | } |
| 32 | 32 | } |
| 33 | 33 | } |
| 34 | 34 | </script> |
| 35 | 35 | |
| 36 | -<style> | |
| 36 | +<style lang="scss" scoped> | |
| 37 | + @import '../../static/configuration.scss'; | |
| 37 | 38 | </style> | ... | ... |