admin-vue3/src/views/iot/utils/constants.ts

206 lines
4.6 KiB
TypeScript

import { isEmpty } from '@/utils/is'
/** IoT 依赖注入 KEY */
export const IOT_PROVIDE_KEY = {
PRODUCT: 'IOT_PRODUCT'
}
/** IoT 产品物模型类型枚举类 */
export const IoTThingModelTypeEnum = {
PROPERTY: 1, // 属性
SERVICE: 2, // 服务
EVENT: 3 // 事件
} as const
/** IoT 设备消息的方法枚举 */
export const IotDeviceMessageMethodEnum = {
// ========== 设备状态 ==========
STATE_UPDATE: {
method: 'thing.state.update',
name: '设备状态变更',
upstream: true
},
// ========== 设备属性 ==========
PROPERTY_POST: {
method: 'thing.property.post',
name: '属性上报',
upstream: true
},
PROPERTY_SET: {
method: 'thing.property.set',
name: '属性设置',
upstream: false
},
// ========== 设备事件 ==========
EVENT_POST: {
method: 'thing.event.post',
name: '事件上报',
upstream: true
},
// ========== 服务调用 ==========
SERVICE_INVOKE: {
method: 'thing.service.invoke',
name: '服务调用',
upstream: false
},
// ========== 设备配置 ==========
CONFIG_PUSH: {
method: 'thing.config.push',
name: '配置推送',
upstream: false
}
}
// IoT 产品物模型类型枚举类
export const IotThingModelTypeEnum = {
PROPERTY: 1, // 属性
SERVICE: 2, // 服务
EVENT: 3 // 事件
}
// IoT 产品物模型服务调用方式枚举
export const IoTThingModelServiceCallTypeEnum = {
ASYNC: {
label: '异步',
value: 'async'
},
SYNC: {
label: '同步',
value: 'sync'
}
} as const
export const getThingModelServiceCallTypeLabel = (value: string): string | undefined =>
Object.values(IoTThingModelServiceCallTypeEnum).find((type) => type.value === value)?.label
// IoT 产品物模型事件类型枚举
export const IoTThingModelEventTypeEnum = {
INFO: {
label: '信息',
value: 'info'
},
ALERT: {
label: '告警',
value: 'alert'
},
ERROR: {
label: '故障',
value: 'error'
}
} as const
export const getEventTypeLabel = (value: string): string | undefined =>
Object.values(IoTThingModelEventTypeEnum).find((type) => type.value === value)?.label
// IoT 产品物模型参数是输入参数还是输出参数
export const IoTThingModelParamDirectionEnum = {
INPUT: 'input', // 输入参数
OUTPUT: 'output' // 输出参数
} as const
// IoT 产品物模型访问模式枚举类
export const IoTThingModelAccessModeEnum = {
READ_WRITE: {
label: '读写',
value: 'rw'
},
READ_ONLY: {
label: '只读',
value: 'r'
}
} as const
/** 属性值的数据类型 */
export const IoTDataSpecsDataTypeEnum = {
INT: 'int',
FLOAT: 'float',
DOUBLE: 'double',
ENUM: 'enum',
BOOL: 'bool',
TEXT: 'text',
DATE: 'date',
STRUCT: 'struct',
ARRAY: 'array'
} as const
export const getDataTypeOptions = () => {
return [
{ value: IoTDataSpecsDataTypeEnum.INT, label: '整数型' },
{ value: IoTDataSpecsDataTypeEnum.FLOAT, label: '单精度浮点型' },
{ value: IoTDataSpecsDataTypeEnum.DOUBLE, label: '双精度浮点型' },
{ value: IoTDataSpecsDataTypeEnum.ENUM, label: '枚举型' },
{ value: IoTDataSpecsDataTypeEnum.BOOL, label: '布尔型' },
{ value: IoTDataSpecsDataTypeEnum.TEXT, label: '文本型' },
{ value: IoTDataSpecsDataTypeEnum.DATE, label: '时间型' },
{ value: IoTDataSpecsDataTypeEnum.STRUCT, label: '结构体' },
{ value: IoTDataSpecsDataTypeEnum.ARRAY, label: '数组' }
]
}
/** 获得物体模型数据类型配置项名称 */
export const getDataTypeOptionsLabel = (value: string) => {
if (isEmpty(value)) {
return value
}
const dataType = getDataTypeOptions().find((option) => option.value === value)
return dataType && `${dataType.value}(${dataType.label})`
}
// IoT OTA 任务设备范围枚举
export const IoTOtaTaskDeviceScopeEnum = {
ALL: {
label: '全部设备',
value: 1
},
SELECT: {
label: '指定设备',
value: 2
}
} as const
// IoT OTA 任务状态枚举
export const IoTOtaTaskStatusEnum = {
IN_PROGRESS: {
label: '进行中',
value: 10
},
END: {
label: '已结束',
value: 20
},
CANCELED: {
label: '已取消',
value: 30
}
} as const
// IoT OTA 升级记录状态枚举
export const IoTOtaTaskRecordStatusEnum = {
PENDING: {
label: '待推送',
value: 0
},
PUSHED: {
label: '已推送',
value: 10
},
UPGRADING: {
label: '升级中',
value: 20
},
SUCCESS: {
label: '升级成功',
value: 30
},
FAILURE: {
label: '升级失败',
value: 40
},
CANCELED: {
label: '升级取消',
value: 50
}
} as const