DataDefinition.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. <template>
  2. <!-- 属性 -->
  3. <template v-if="data.type === ThingModelType.PROPERTY">
  4. <!-- 非列表型:数值 -->
  5. <div
  6. v-if="
  7. [DataSpecsDataType.INT, DataSpecsDataType.DOUBLE, DataSpecsDataType.FLOAT].includes(
  8. data.property.dataType
  9. )
  10. "
  11. >
  12. 取值范围:{{ `${data.property.dataSpecs.min}~${data.property.dataSpecs.max}` }}
  13. </div>
  14. <!-- 非列表型:文本 -->
  15. <div v-if="DataSpecsDataType.TEXT === data.property.dataType">
  16. 数据长度:{{ data.property.dataSpecs.length }}
  17. </div>
  18. <!-- 列表型: 数组、结构、时间(特殊) -->
  19. <div
  20. v-if="
  21. [DataSpecsDataType.ARRAY, DataSpecsDataType.STRUCT, DataSpecsDataType.DATE].includes(
  22. data.property.dataType
  23. )
  24. "
  25. >
  26. -
  27. </div>
  28. <!-- 列表型: 布尔值、枚举 -->
  29. <div v-if="[DataSpecsDataType.BOOL, DataSpecsDataType.ENUM].includes(data.property.dataType)">
  30. <div> {{ DataSpecsDataType.BOOL === data.property.dataType ? '布尔值' : '枚举值' }}:</div>
  31. <div v-for="item in data.property.dataSpecsList" :key="item.value">
  32. {{ `${item.name}-${item.value}` }}
  33. </div>
  34. </div>
  35. </template>
  36. <!-- 服务 -->
  37. <div v-if="data.type === ThingModelType.SERVICE">
  38. 调用方式:{{ getCallTypeByValue(data.service!.callType) }}
  39. </div>
  40. <!-- 事件 -->
  41. <div v-if="data.type === ThingModelType.EVENT">
  42. 事件类型:{{ getEventTypeByValue(data.event!.type) }}
  43. </div>
  44. </template>
  45. <script lang="ts" setup>
  46. import {
  47. DataSpecsDataType,
  48. getCallTypeByValue,
  49. getEventTypeByValue,
  50. ThingModelType
  51. } from '@/views/iot/thingmodel/config'
  52. import { ThingModelData } from '@/api/iot/thingmodel'
  53. /** 数据定义展示组件 */
  54. defineOptions({ name: 'DataDefinition' })
  55. defineProps<{ data: ThingModelData }>()
  56. </script>
  57. <style lang="scss" scoped></style>