Commit e7e95849b7f720c381055c204cc7a072be394c19

Authored by ww
1 parent c259ba06

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

... ... @@ -16281,17 +16281,17 @@ class HandleDataInteraction {
16281 16281 }
16282 16282
16283 16283 if (commandType == enumCommandType.MODBUS) {
16284   - value = Number(data[enumActionEl.CUSTOM_TCP_COMMAND])
  16284 + value = data[enumActionEl.CUSTOM_TCP_COMMAND]
16285 16285
16286 16286 let { method, deviceCode, zoomFactor } = additional || {}
16287 16287 zoomFactor = zoomFactor ? zoomFactor : 1
  16288 +
16288 16289 const validate = new Validate([
16289 16290 { value: deviceCode, required: true, message: '未找到设备地址码' },
16290 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 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 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 16301
16302 16302 if (method == '16') {
16303 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 16307 if (validate.begin()) flag = true
... ... @@ -17316,7 +17316,8 @@ class Validate {
17316 17316 begin() {
17317 17317 for (const rule of this.list) {
17318 17318 const { required, value, message, validator } = rule
17319   - if (required && !value) {
  17319 +
  17320 + if (required && (value === null || value === undefined || value === '')) {
17320 17321 UseLayUi.topErrorMsg(message)
17321 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>
... ...