Commit ddadfbc5d6026a2e186307b54dadd349aceebe9f
1 parent
d62a76a0
feat: deivce list model of matter panel add unit
Showing
3 changed files
with
25 additions
and
13 deletions
| 1 | -import { DataType } from './modelOfMatterModel'; | 1 | +import { StructJSON } from './modelOfMatterModel'; |
| 2 | import { BasicPageParams } from '/@/api/model/baseModel'; | 2 | import { BasicPageParams } from '/@/api/model/baseModel'; |
| 3 | import { AlarmStatus } from '/@/views/alarm/log/config/detail.config'; | 3 | import { AlarmStatus } from '/@/views/alarm/log/config/detail.config'; |
| 4 | export enum DeviceState { | 4 | export enum DeviceState { |
| @@ -90,5 +90,5 @@ export interface DeviceRecord { | @@ -90,5 +90,5 @@ export interface DeviceRecord { | ||
| 90 | export interface DeviceModelOfMatterAttrs { | 90 | export interface DeviceModelOfMatterAttrs { |
| 91 | name: string; | 91 | name: string; |
| 92 | identifier: string; | 92 | identifier: string; |
| 93 | - detail: DataType; | 93 | + detail: StructJSON; |
| 94 | } | 94 | } |
| @@ -17,7 +17,7 @@ export interface Specs { | @@ -17,7 +17,7 @@ export interface Specs { | ||
| 17 | 17 | ||
| 18 | export interface DataType { | 18 | export interface DataType { |
| 19 | type: string; | 19 | type: string; |
| 20 | - specs?: Partial<Specs> | ModelOfMatterParams[]; | 20 | + specs?: Partial<Specs> | StructJSON[]; |
| 21 | } | 21 | } |
| 22 | 22 | ||
| 23 | export interface StructJSON { | 23 | export interface StructJSON { |
| @@ -16,6 +16,8 @@ | @@ -16,6 +16,8 @@ | ||
| 16 | import { getDeviceAttrs } from '/@/api/device/deviceManager'; | 16 | import { getDeviceAttrs } from '/@/api/device/deviceManager'; |
| 17 | import { DeviceModelOfMatterAttrs } from '/@/api/device/model/deviceModel'; | 17 | import { DeviceModelOfMatterAttrs } from '/@/api/device/model/deviceModel'; |
| 18 | import { computed } from '@vue/reactivity'; | 18 | import { computed } from '@vue/reactivity'; |
| 19 | + import { Specs, StructJSON } from '/@/api/device/model/modelOfMatterModel'; | ||
| 20 | + import { isObject } from '/@/utils/is'; | ||
| 19 | 21 | ||
| 20 | interface ReceiveMessage { | 22 | interface ReceiveMessage { |
| 21 | data: { | 23 | data: { |
| @@ -122,11 +124,21 @@ | @@ -122,11 +124,21 @@ | ||
| 122 | 124 | ||
| 123 | const { createMessage } = useMessage(); | 125 | const { createMessage } = useMessage(); |
| 124 | 126 | ||
| 127 | + const getUnit = (record: StructJSON) => { | ||
| 128 | + const { dataType } = record; | ||
| 129 | + const { specs } = dataType! || {}; | ||
| 130 | + | ||
| 131 | + return isObject(specs) | ||
| 132 | + ? (specs as Specs).unitName && (specs as Specs).unit | ||
| 133 | + ? `${(specs as Specs).unitName}/${(specs as Specs).unit}` | ||
| 134 | + : '' | ||
| 135 | + : ''; | ||
| 136 | + }; | ||
| 137 | + | ||
| 125 | const { send, close, data } = useWebSocket(socketInfo.origin, { | 138 | const { send, close, data } = useWebSocket(socketInfo.origin, { |
| 126 | async onConnected() { | 139 | async onConnected() { |
| 127 | const { id, profileId } = props.deviceDetail; | 140 | const { id, profileId } = props.deviceDetail; |
| 128 | const value = await getDeviceAttrs(profileId, id); | 141 | const value = await getDeviceAttrs(profileId, id); |
| 129 | - console.log(value); | ||
| 130 | socketInfo.attrKeys = value; | 142 | socketInfo.attrKeys = value; |
| 131 | send(JSON.stringify(unref(getSendValue))); | 143 | send(JSON.stringify(unref(getSendValue))); |
| 132 | }, | 144 | }, |
| @@ -140,11 +152,11 @@ | @@ -140,11 +152,11 @@ | ||
| 140 | socketInfo.message[key] = value.data[key]; | 152 | socketInfo.message[key] = value.data[key]; |
| 141 | }); | 153 | }); |
| 142 | 154 | ||
| 143 | - const allKeys = Object.keys(socketInfo.message); | ||
| 144 | - | ||
| 145 | - socketInfo.originData = socketInfo.dataSource = allKeys.map((key) => { | 155 | + socketInfo.originData = socketInfo.dataSource = socketInfo.attrKeys.map((item) => { |
| 156 | + const { identifier: key, name, detail } = item; | ||
| 157 | + const unit = getUnit(detail); | ||
| 146 | const [time, value] = socketInfo.message[key].at(0) || []; | 158 | const [time, value] = socketInfo.message[key].at(0) || []; |
| 147 | - return { key, value, time }; | 159 | + return { key, value, time, name, unit }; |
| 148 | }); | 160 | }); |
| 149 | 161 | ||
| 150 | await nextTick(); | 162 | await nextTick(); |
| @@ -153,7 +165,6 @@ | @@ -153,7 +165,6 @@ | ||
| 153 | } catch (error) {} | 165 | } catch (error) {} |
| 154 | }, | 166 | }, |
| 155 | onDisconnected() { | 167 | onDisconnected() { |
| 156 | - console.log('断开连接了'); | ||
| 157 | close(); | 168 | close(); |
| 158 | }, | 169 | }, |
| 159 | onError() { | 170 | onError() { |
| @@ -212,16 +223,17 @@ | @@ -212,16 +223,17 @@ | ||
| 212 | <List.Item> | 223 | <List.Item> |
| 213 | <Card class="shadow-md"> | 224 | <Card class="shadow-md"> |
| 214 | <template #title> | 225 | <template #title> |
| 215 | - <span class="text-base font-normal">{{ item.key }}</span> | 226 | + <span class="text-base font-normal">{{ item.name }}</span> |
| 216 | </template> | 227 | </template> |
| 217 | <template #extra> | 228 | <template #extra> |
| 218 | <Button type="link" class="!p-0" @click="handleShowDetail(item)">历史数据</Button> | 229 | <Button type="link" class="!p-0" @click="handleShowDetail(item)">历史数据</Button> |
| 219 | </template> | 230 | </template> |
| 220 | <section class="min-h-16 flex flex-col justify-between"> | 231 | <section class="min-h-16 flex flex-col justify-between"> |
| 221 | - <div class="flex font-bold text-lg mb-4"> | ||
| 222 | - <div>{{ item.value || '暂无数据' }}</div> | 232 | + <div class="flex font-bold text-lg mb-4 gap-2"> |
| 233 | + <div>{{ item.value || '--' }}</div> | ||
| 234 | + <div>{{ item.unit }}</div> | ||
| 223 | </div> | 235 | </div> |
| 224 | - <div class="text-dark-800 text-xs">{{ formatToDateTime(item.time) }}</div> | 236 | + <div class="text-dark-800 text-xs">{{ formatToDateTime(item.time) || '--' }}</div> |
| 225 | </section> | 237 | </section> |
| 226 | </Card> | 238 | </Card> |
| 227 | </List.Item> | 239 | </List.Item> |