Showing
1 changed file
with
5 additions
and
4 deletions
@@ -16274,10 +16274,11 @@ class HandleDataInteraction { | @@ -16274,10 +16274,11 @@ class HandleDataInteraction { | ||
16274 | } | 16274 | } |
16275 | 16275 | ||
16276 | const getNumberFloatPart = (number) => { | 16276 | const getNumberFloatPart = (number) => { |
16277 | + const isLessZero = number < 0 | ||
16277 | number = number.toString() | 16278 | number = number.toString() |
16278 | const floatIndex = number.indexOf('.') | 16279 | const floatIndex = number.indexOf('.') |
16279 | const floatPart = ~floatIndex ? `0.${number.substring(floatIndex + 1)}` : '0'; | 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 | if (commandType == enumCommandType.MODBUS) { | 16284 | if (commandType == enumCommandType.MODBUS) { |
@@ -16289,14 +16290,14 @@ class HandleDataInteraction { | @@ -16289,14 +16290,14 @@ class HandleDataInteraction { | ||
16289 | const validate = new Validate([ | 16290 | const validate = new Validate([ |
16290 | { value: deviceCode, required: true, message: '未找到设备地址码' }, | 16291 | { value: deviceCode, required: true, message: '未找到设备地址码' }, |
16291 | { value: method, required: true, message: '未找到Modbus命令操作类型' }, | 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 | ...(method == '05' ? [{ value, message: '下发类型必须为0或1', validator(value) { return value == 0 || value == 1 } }] : []), | 16294 | ...(method == '05' ? [{ value, message: '下发类型必须为0或1', validator(value) { return value == 0 || value == 1 } }] : []), |
16294 | ...(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 | ...(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 | ...(method == '16' ? [{ value, message: '下发类型精确到两位小数', validator(value) { return /^-?\d+(\.\d{0,2})?$/.test(Math.floor(Number(value)) * zoomFactor + getNumberFloatPart(Number(value)) * zoomFactor) } }] : []) | 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 | if (method == '06' || method == '16') { | 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 | if (method == '16') { | 16303 | if (method == '16') { |