Commit ce1d11fc34af2f0d42982039d0fc75b803d83c7b

Authored by xp.Huang
2 parents 05950903 d0ef28c9

Merge branch 'fix/attribute-distribution' into 'main_dev'

fix: 修改属性下发数字精度问题

See merge request yunteng/thingskit-front!797
@@ -90,6 +90,14 @@ @@ -90,6 +90,14 @@
90 return array; 90 return array;
91 }; 91 };
92 92
  93 + // 获取小数
  94 + const getFloatPart = (number): any => {
  95 + number = number.toString();
  96 + const floatPartStartIndex = number.indexOf('.');
  97 + const value = ~floatPartStartIndex ? `0.${number.substring(floatPartStartIndex + 1)}` : '0';
  98 + return value;
  99 + };
  100 +
93 const { createMessage } = useMessage(); 101 const { createMessage } = useMessage();
94 const loading = ref(false); 102 const loading = ref(false);
95 const handleSend = async () => { 103 const handleSend = async () => {
@@ -110,8 +118,12 @@ @@ -110,8 +118,12 @@
110 const oldValue = getFieldsValue()[unref(formField)]; 118 const oldValue = getFieldsValue()[unref(formField)];
111 modBUSForm.value.registerNumber = 1; 119 modBUSForm.value.registerNumber = 1;
112 modBUSForm.value.registerValues = [oldValue]; 120 modBUSForm.value.registerValues = [oldValue];
  121 +
113 if (unref(isShowMultiply) && unref(modBUSForm).method == '06') { 122 if (unref(isShowMultiply) && unref(modBUSForm).method == '06') {
114 - if (String(oldValue * unref(zoomFactorValue)).indexOf('.') > -1) { 123 + const newValue =
  124 + Math.floor(oldValue) * unref(zoomFactorValue) +
  125 + getFloatPart(oldValue) * unref(zoomFactorValue);
  126 + if (newValue % 1 != 0) {
115 createMessage.warning(`属性下发类型必须是整数,缩放因子为${unref(zoomFactorValue)}`); 127 createMessage.warning(`属性下发类型必须是整数,缩放因子为${unref(zoomFactorValue)}`);
116 return; 128 return;
117 } 129 }
@@ -121,13 +133,19 @@ @@ -121,13 +133,19 @@
121 return; 133 return;
122 } 134 }
123 //bool类型的就不用去乘缩放因子了 135 //bool类型的就不用去乘缩放因子了
124 - modBUSForm.value.registerValues = [oldValue * unref(zoomFactorValue)]; 136 + modBUSForm.value.registerValues = [newValue];
125 } 137 }
126 138
127 if (unref(modBUSForm).method == '16' || unref(modBUSForm).method == '10') { 139 if (unref(modBUSForm).method == '16' || unref(modBUSForm).method == '10') {
128 - const newValue = getArray(  
129 - SingleToHex(unref(isShowMultiply) ? oldValue * unref(zoomFactorValue) : oldValue)  
130 - ); 140 + const regex = /^-?\d+(\.\d{0,2})?$/;
  141 + const values =
  142 + Math.floor(oldValue) * unref(zoomFactorValue) +
  143 + getFloatPart(oldValue) * unref(zoomFactorValue);
  144 + if (!regex.test(values as any)) {
  145 + createMessage.warning(`属性下发值精确到两位小数,缩放因子是${unref(zoomFactorValue)}`);
  146 + return;
  147 + }
  148 + const newValue = getArray(SingleToHex(unref(isShowMultiply) ? values : oldValue));
131 modBUSForm.value.registerValues = newValue; 149 modBUSForm.value.registerValues = newValue;
132 modBUSForm.value.registerNumber = 2; 150 modBUSForm.value.registerNumber = 2;
133 modBUSForm.value.method = '10'; 151 modBUSForm.value.method = '10';