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 | 2 | import { BasicPageParams } from '/@/api/model/baseModel'; |
| 3 | 3 | import { AlarmStatus } from '/@/views/alarm/log/config/detail.config'; |
| 4 | 4 | export enum DeviceState { |
| ... | ... | @@ -90,5 +90,5 @@ export interface DeviceRecord { |
| 90 | 90 | export interface DeviceModelOfMatterAttrs { |
| 91 | 91 | name: string; |
| 92 | 92 | identifier: string; |
| 93 | - detail: DataType; | |
| 93 | + detail: StructJSON; | |
| 94 | 94 | } | ... | ... |
| ... | ... | @@ -16,6 +16,8 @@ |
| 16 | 16 | import { getDeviceAttrs } from '/@/api/device/deviceManager'; |
| 17 | 17 | import { DeviceModelOfMatterAttrs } from '/@/api/device/model/deviceModel'; |
| 18 | 18 | import { computed } from '@vue/reactivity'; |
| 19 | + import { Specs, StructJSON } from '/@/api/device/model/modelOfMatterModel'; | |
| 20 | + import { isObject } from '/@/utils/is'; | |
| 19 | 21 | |
| 20 | 22 | interface ReceiveMessage { |
| 21 | 23 | data: { |
| ... | ... | @@ -122,11 +124,21 @@ |
| 122 | 124 | |
| 123 | 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 | 138 | const { send, close, data } = useWebSocket(socketInfo.origin, { |
| 126 | 139 | async onConnected() { |
| 127 | 140 | const { id, profileId } = props.deviceDetail; |
| 128 | 141 | const value = await getDeviceAttrs(profileId, id); |
| 129 | - console.log(value); | |
| 130 | 142 | socketInfo.attrKeys = value; |
| 131 | 143 | send(JSON.stringify(unref(getSendValue))); |
| 132 | 144 | }, |
| ... | ... | @@ -140,11 +152,11 @@ |
| 140 | 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 | 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 | 162 | await nextTick(); |
| ... | ... | @@ -153,7 +165,6 @@ |
| 153 | 165 | } catch (error) {} |
| 154 | 166 | }, |
| 155 | 167 | onDisconnected() { |
| 156 | - console.log('断开连接了'); | |
| 157 | 168 | close(); |
| 158 | 169 | }, |
| 159 | 170 | onError() { |
| ... | ... | @@ -212,16 +223,17 @@ |
| 212 | 223 | <List.Item> |
| 213 | 224 | <Card class="shadow-md"> |
| 214 | 225 | <template #title> |
| 215 | - <span class="text-base font-normal">{{ item.key }}</span> | |
| 226 | + <span class="text-base font-normal">{{ item.name }}</span> | |
| 216 | 227 | </template> |
| 217 | 228 | <template #extra> |
| 218 | 229 | <Button type="link" class="!p-0" @click="handleShowDetail(item)">历史数据</Button> |
| 219 | 230 | </template> |
| 220 | 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 | 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 | 237 | </section> |
| 226 | 238 | </Card> |
| 227 | 239 | </List.Item> | ... | ... |