Commit d03e6d6154bac26818274da85e68c6762e3a7979

Authored by ww
1 parent c94952b5

fix: 修复但输入参数为负数时,下发值不对

... ... @@ -16274,10 +16274,11 @@ class HandleDataInteraction {
16274 16274 }
16275 16275
16276 16276 const getNumberFloatPart = (number) => {
  16277 + const isLessZero = number < 0
16277 16278 number = number.toString()
16278 16279 const floatIndex = number.indexOf('.')
16279 16280 const floatPart = ~floatIndex ? `0.${number.substring(floatIndex + 1)}` : '0';
16280   - return Number(floatPart)
  16281 + return isLessZero ? -Number(floatPart) : Number(floatPart)
16281 16282 }
16282 16283
16283 16284 if (commandType == enumCommandType.MODBUS) {
... ... @@ -16289,14 +16290,14 @@ class HandleDataInteraction {
16289 16290 const validate = new Validate([
16290 16291 { value: deviceCode, required: true, message: '未找到设备地址码' },
16291 16292 { value: method, required: true, message: '未找到Modbus命令操作类型' },
16292   - { value, message: '下发值不是一个数字', validator(value) { return value != '' && !isNaN(value) } },
  16293 + { value, message: '下发值不是一个数字', validator(value) { return value.toString().trim() && !isNaN(value) } },
16293 16294 ...(method == '05' ? [{ value, message: '下发类型必须为0或1', validator(value) { return value == 0 || value == 1 } }] : []),
16294 16295 ...(method == '06' ? [{ value, message: `下发类型必须为整型,缩放因子为${zoomFactor}`, validator(value) { return !isNaN(value) && getNumberFloatPart(Number(value)) * zoomFactor % 1 === 0 } }, { value: Number(value) * zoomFactor, message: `最大值不能超过65535,缩放因子为${zoomFactor}`, validator(value) { return Number(value) <= parseInt('ffff', 16) } }] : []),
16295 16296 ...(method == '16' ? [{ value, message: '下发类型精确到两位小数', validator(value) { return /^-?\d+(\.\d{0,2})?$/.test(Math.floor(Number(value)) * zoomFactor + getNumberFloatPart(Number(value)) * zoomFactor) } }] : [])
16296 16297 ])
16297   -
  16298 +
16298 16299 if (method == '06' || method == '16') {
16299   - value = Math.floor(value) * zoomFactor + getNumberFloatPart(value) * zoomFactor
  16300 + value = Math.trunc(value) * zoomFactor + getNumberFloatPart(value) * zoomFactor
16300 16301 }
16301 16302
16302 16303 if (method == '16') {
... ...