gaoluyang
2026-06-24 c0cb161bb52ce0fbdce5c66ec391d107c75e2452
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<script lang="ts" setup>
import type { ThingModelApi } from '#/api/iot/thingmodel';
 
import {
  getEventTypeLabel,
  getThingModelServiceCallTypeLabel,
  IoTDataSpecsDataTypeEnum,
  IoTThingModelTypeEnum,
} from '..\..\..\..\..\packages\constants\src';
 
defineProps<{ data: ThingModelApi.ThingModel }>();
const NUMBER_TYPES = new Set<string>([
  IoTDataSpecsDataTypeEnum.DOUBLE,
  IoTDataSpecsDataTypeEnum.FLOAT,
  IoTDataSpecsDataTypeEnum.INT,
]);
const PLACEHOLDER_TYPES = new Set<string>([
  IoTDataSpecsDataTypeEnum.ARRAY,
  IoTDataSpecsDataTypeEnum.DATE,
  IoTDataSpecsDataTypeEnum.STRUCT,
]);
const LIST_TYPES = new Set<string>([
  IoTDataSpecsDataTypeEnum.BOOL,
  IoTDataSpecsDataTypeEnum.ENUM,
]);
</script>
 
<template>
  <!-- 属性 -->
  <template v-if="data.type === IoTThingModelTypeEnum.PROPERTY">
    <div v-if="NUMBER_TYPES.has(data.property?.dataType as any)">
      取值范围:{{
        `${data.property?.dataSpecs?.min}~${data.property?.dataSpecs?.max}`
      }}
    </div>
    <div v-if="data.property?.dataType === IoTDataSpecsDataTypeEnum.TEXT">
      数据长度:{{ data.property?.dataSpecs?.length }}
    </div>
    <div v-if="PLACEHOLDER_TYPES.has(data.property?.dataType as any)">-</div>
    <div v-if="LIST_TYPES.has(data.property?.dataType as any)">
      <div>
        {{
          data.property?.dataType === IoTDataSpecsDataTypeEnum.BOOL
            ? '布尔值'
            : '枚举值'
        }}:
      </div>
      <div
        v-for="item in data.property?.dataSpecsList || []"
        :key="String(item.value)"
      >
        {{ item.name }}-{{ item.value }}
      </div>
    </div>
  </template>
  <!-- 服务 -->
  <div v-if="data.type === IoTThingModelTypeEnum.SERVICE">
    调用方式:
    {{ getThingModelServiceCallTypeLabel(data.service?.callType as any) }}
  </div>
  <!-- 事件 -->
  <div v-if="data.type === IoTThingModelTypeEnum.EVENT">
    事件类型:{{ getEventTypeLabel(data.event?.type as any) }}
  </div>
</template>