import { ElMessage } from 'element-plus'; import { putDeviceProps } from '@/api/device-setting'; import { DeviceSettingKeyEnum, ObstacleAvoidanceStatusEnum, NightLightsStateEnum, DistanceLimitStatusEnum, } from '@/types/device-setting'; import { messages } from '@/lang'; export function useDeviceSetting() { // 生成参数 function genDevicePropsBySettingKey(key, fromModel) { const body = {}; if (key === DeviceSettingKeyEnum.NIGHT_LIGHTS_MODE_SET) { body.night_lights_state = fromModel.nightLightsState ? NightLightsStateEnum.OPEN : NightLightsStateEnum.CLOSE; } else if (key === DeviceSettingKeyEnum.HEIGHT_LIMIT_SET) { body.height_limit = fromModel.heightLimit; } else if (key === DeviceSettingKeyEnum.DISTANCE_LIMIT_SET) { body.distance_limit_status = {}; if (fromModel.distanceLimitStatus.state) { body.distance_limit_status.state = DistanceLimitStatusEnum.SET; body.distance_limit_status.distance_limit = fromModel.distanceLimitStatus.distanceLimit; } else { body.distance_limit_status.state = DistanceLimitStatusEnum.UNSET; } } else if (key === DeviceSettingKeyEnum.OBSTACLE_AVOIDANCE_HORIZON) { body.obstacle_avoidance = { horizon: fromModel.obstacleAvoidanceHorizon ? ObstacleAvoidanceStatusEnum.OPEN : ObstacleAvoidanceStatusEnum.CLOSE, }; } else if (key === DeviceSettingKeyEnum.OBSTACLE_AVOIDANCE_UPSIDE) { body.obstacle_avoidance = { upside: fromModel.obstacleAvoidanceUpside ? ObstacleAvoidanceStatusEnum.OPEN : ObstacleAvoidanceStatusEnum.CLOSE, }; } else if (key === DeviceSettingKeyEnum.OBSTACLE_AVOIDANCE_DOWNSIDE) { body.obstacle_avoidance = { downside: fromModel.obstacleAvoidanceDownside ? ObstacleAvoidanceStatusEnum.OPEN : ObstacleAvoidanceStatusEnum.CLOSE, }; } return body; } // 设置设备属性 async function setDeviceProps(sn, workspaceId, body) { try { await putDeviceProps(sn, workspaceId, body).then(res => { if (res.data.code === 0) { ElMessage({ message: '设备属性设置成功!', type: 'success', }); } }); } catch (e) { return false; } } return { genDevicePropsBySettingKey, setDeviceProps, }; }