constants.ts 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. import { isEmpty } from '@/utils/is'
  2. /** IoT 依赖注入 KEY */
  3. export const IOT_PROVIDE_KEY = {
  4. PRODUCT: 'IOT_PRODUCT'
  5. }
  6. /** IoT 产品物模型类型枚举类 */
  7. export const IoTThingModelTypeEnum = {
  8. PROPERTY: 1, // 属性
  9. SERVICE: 2, // 服务
  10. EVENT: 3 // 事件
  11. } as const
  12. /** IoT 设备消息的方法枚举 */
  13. export const IotDeviceMessageMethodEnum = {
  14. // ========== 设备状态 ==========
  15. STATE_UPDATE: {
  16. method: 'thing.state.update',
  17. name: '设备状态变更',
  18. upstream: true
  19. },
  20. // ========== 设备属性 ==========
  21. PROPERTY_POST: {
  22. method: 'thing.property.post',
  23. name: '属性上报',
  24. upstream: true
  25. },
  26. PROPERTY_SET: {
  27. method: 'thing.property.set',
  28. name: '属性设置',
  29. upstream: false
  30. },
  31. // ========== 设备事件 ==========
  32. EVENT_POST: {
  33. method: 'thing.event.post',
  34. name: '事件上报',
  35. upstream: true
  36. },
  37. // ========== 服务调用 ==========
  38. SERVICE_INVOKE: {
  39. method: 'thing.service.invoke',
  40. name: '服务调用',
  41. upstream: false
  42. },
  43. // ========== 设备配置 ==========
  44. CONFIG_PUSH: {
  45. method: 'thing.config.push',
  46. name: '配置推送',
  47. upstream: false
  48. }
  49. }
  50. // IoT 产品物模型类型枚举类
  51. export const IotThingModelTypeEnum = {
  52. PROPERTY: 1, // 属性
  53. SERVICE: 2, // 服务
  54. EVENT: 3 // 事件
  55. }
  56. // IoT 产品物模型服务调用方式枚举
  57. export const IoTThingModelServiceCallTypeEnum = {
  58. ASYNC: {
  59. label: '异步',
  60. value: 'async'
  61. },
  62. SYNC: {
  63. label: '同步',
  64. value: 'sync'
  65. }
  66. } as const
  67. export const getThingModelServiceCallTypeLabel = (value: string): string | undefined =>
  68. Object.values(IoTThingModelServiceCallTypeEnum).find((type) => type.value === value)?.label
  69. // IoT 产品物模型事件类型枚举
  70. export const IoTThingModelEventTypeEnum = {
  71. INFO: {
  72. label: '信息',
  73. value: 'info'
  74. },
  75. ALERT: {
  76. label: '告警',
  77. value: 'alert'
  78. },
  79. ERROR: {
  80. label: '故障',
  81. value: 'error'
  82. }
  83. } as const
  84. export const getEventTypeLabel = (value: string): string | undefined =>
  85. Object.values(IoTThingModelEventTypeEnum).find((type) => type.value === value)?.label
  86. // IoT 产品物模型参数是输入参数还是输出参数
  87. export const IoTThingModelParamDirectionEnum = {
  88. INPUT: 'input', // 输入参数
  89. OUTPUT: 'output' // 输出参数
  90. } as const
  91. // IoT 产品物模型访问模式枚举类
  92. export const IoTThingModelAccessModeEnum = {
  93. READ_WRITE: {
  94. label: '读写',
  95. value: 'rw'
  96. },
  97. READ_ONLY: {
  98. label: '只读',
  99. value: 'r'
  100. }
  101. } as const
  102. /** 属性值的数据类型 */
  103. export const IoTDataSpecsDataTypeEnum = {
  104. INT: 'int',
  105. FLOAT: 'float',
  106. DOUBLE: 'double',
  107. ENUM: 'enum',
  108. BOOL: 'bool',
  109. TEXT: 'text',
  110. DATE: 'date',
  111. STRUCT: 'struct',
  112. ARRAY: 'array'
  113. } as const
  114. export const getDataTypeOptions = () => {
  115. return [
  116. { value: IoTDataSpecsDataTypeEnum.INT, label: '整数型' },
  117. { value: IoTDataSpecsDataTypeEnum.FLOAT, label: '单精度浮点型' },
  118. { value: IoTDataSpecsDataTypeEnum.DOUBLE, label: '双精度浮点型' },
  119. { value: IoTDataSpecsDataTypeEnum.ENUM, label: '枚举型' },
  120. { value: IoTDataSpecsDataTypeEnum.BOOL, label: '布尔型' },
  121. { value: IoTDataSpecsDataTypeEnum.TEXT, label: '文本型' },
  122. { value: IoTDataSpecsDataTypeEnum.DATE, label: '时间型' },
  123. { value: IoTDataSpecsDataTypeEnum.STRUCT, label: '结构体' },
  124. { value: IoTDataSpecsDataTypeEnum.ARRAY, label: '数组' }
  125. ]
  126. }
  127. /** 获得物体模型数据类型配置项名称 */
  128. export const getDataTypeOptionsLabel = (value: string) => {
  129. if (isEmpty(value)) {
  130. return value
  131. }
  132. const dataType = getDataTypeOptions().find((option) => option.value === value)
  133. return dataType && `${dataType.value}(${dataType.label})`
  134. }