You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.3 KiB
57 lines
2.3 KiB
2 years ago
|
import { message } from 'ant-design-vue'
|
||
|
import { putDeviceProps, PutDevicePropsBody } from '/@/api/device-setting'
|
||
|
import { DeviceSettingKeyEnum, DeviceSettingFormModel, ObstacleAvoidanceStatusEnum, NightLightsStateEnum, DistanceLimitStatusEnum } from '/@/types/device-setting'
|
||
|
|
||
|
export function useDeviceSetting () {
|
||
|
// 生成参数
|
||
|
function genDevicePropsBySettingKey (key: DeviceSettingKeyEnum, fromModel: DeviceSettingFormModel) {
|
||
|
const body = {} as PutDevicePropsBody
|
||
|
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: string, body: PutDevicePropsBody) {
|
||
|
try {
|
||
|
const { code, message: msg } = await putDeviceProps(sn, body)
|
||
|
if (code === 0) {
|
||
|
// message.success('指令发送成功')
|
||
|
return true
|
||
|
}
|
||
|
throw (msg)
|
||
|
} catch (e) {
|
||
|
message.error('设备属性设置失败')
|
||
|
return false
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
genDevicePropsBySettingKey,
|
||
|
setDeviceProps
|
||
|
}
|
||
|
}
|