Commit e7e95849b7f720c381055c204cc7a072be394c19

Authored by ww
1 parent c259ba06

fix: 修复输入参数为0时,无法生成modbus指令

@@ -16281,17 +16281,17 @@ class HandleDataInteraction { @@ -16281,17 +16281,17 @@ class HandleDataInteraction {
16281 } 16281 }
16282 16282
16283 if (commandType == enumCommandType.MODBUS) { 16283 if (commandType == enumCommandType.MODBUS) {
16284 - value = Number(data[enumActionEl.CUSTOM_TCP_COMMAND]) 16284 + value = data[enumActionEl.CUSTOM_TCP_COMMAND]
16285 16285
16286 let { method, deviceCode, zoomFactor } = additional || {} 16286 let { method, deviceCode, zoomFactor } = additional || {}
16287 zoomFactor = zoomFactor ? zoomFactor : 1 16287 zoomFactor = zoomFactor ? zoomFactor : 1
  16288 +
16288 const validate = new Validate([ 16289 const validate = new Validate([
16289 { value: deviceCode, required: true, message: '未找到设备地址码' }, 16290 { value: deviceCode, required: true, message: '未找到设备地址码' },
16290 { value: method, required: true, message: '未找到Modbus命令操作类型' }, 16291 { value: method, required: true, message: '未找到Modbus命令操作类型' },
16291 - { value, required: true, message: '下发值不是一个数字', validator(value) { return !isNaN(value) } },  
16292 - { value, required: true, message: '下发值是必填项' }, 16292 + { value, message: '下发值不是一个数字', validator(value) { return value != '' && !isNaN(value) } },
16293 ...(method == '05' ? [{ value, message: '下发类型必须为0或1', validator(value) { return value == 0 || value == 1 } }] : []), 16293 ...(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(value) * zoomFactor % 1 === 0 } }, { value: Number(value) * zoomFactor, message: `最大值不能超过65535,缩放因子为${zoomFactor}`, validator(value) { return Number(value) <= parseInt('ffff', 16) } }] : []), 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 == '16' ? [{ value, message: '下发类型精确到两位小数', validator(value) { return /^-?\d+(\.\d{0,2})?$/.test(Math.floor(Number(value)) * zoomFactor + getNumberFloatPart(Number(value)) * zoomFactor) } }] : []) 16295 ...(method == '16' ? [{ value, message: '下发类型精确到两位小数', validator(value) { return /^-?\d+(\.\d{0,2})?$/.test(Math.floor(Number(value)) * zoomFactor + getNumberFloatPart(Number(value)) * zoomFactor) } }] : [])
16296 ]) 16296 ])
16297 16297
@@ -16301,7 +16301,7 @@ class HandleDataInteraction { @@ -16301,7 +16301,7 @@ class HandleDataInteraction {
16301 16301
16302 if (method == '16') { 16302 if (method == '16') {
16303 const hexValue = UseLayUi.numberToHex(value).split(' ').join('') 16303 const hexValue = UseLayUi.numberToHex(value).split(' ').join('')
16304 - value = [parseInt(hexValue.slice(0, 4), 16), parseInt(hexValue.slice(4, 8), 16)] 16304 + value = value ? [parseInt(hexValue.slice(0, 4), 16), parseInt(hexValue.slice(4, 8), 16)] : [0, 0]
16305 } 16305 }
16306 16306
16307 if (validate.begin()) flag = true 16307 if (validate.begin()) flag = true
@@ -17316,7 +17316,8 @@ class Validate { @@ -17316,7 +17316,8 @@ class Validate {
17316 begin() { 17316 begin() {
17317 for (const rule of this.list) { 17317 for (const rule of this.list) {
17318 const { required, value, message, validator } = rule 17318 const { required, value, message, validator } = rule
17319 - if (required && !value) { 17319 +
  17320 + if (required && (value === null || value === undefined || value === '')) {
17320 UseLayUi.topErrorMsg(message) 17321 UseLayUi.topErrorMsg(message)
17321 return false 17322 return false
17322 } 17323 }
  1 +<!DOCTYPE html>
  2 +<html lang="en">
  3 +
  4 +<head>
  5 + <meta charset="UTF-8">
  6 + <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7 + <title>Document</title>
  8 +</head>
  9 +
  10 +<body>
  11 + <script>
  12 + const value = /^-?\d+(\.\d{0,2})?$/.test(1.2)
  13 + console.log(value)
  14 + </script>
  15 +</body>
  16 +
  17 +</html>