Commit 5f48324a95fdce1cfea50b2502c2fd8fc5575b68

Authored by xp.Huang
2 parents d14e54bf 3c3c3f3f

Merge branch 'fix/DEFECT-1835' into 'main_dev'

fix: 修复小程序告警记录中,设备全部为暂无数据,暂无数据,告警条件和值都为空

See merge request yunteng/thingskit-app!124
... ... @@ -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>
... ...
... ... @@ -216,4 +216,4 @@
216 216 /deep/ button {
217 217 background: rgba(0, 0, 0, 0);
218 218 }
219   -</style>
\ No newline at end of file
  219 +</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>
... ...
  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>
... ...