Commit 0ecd294cbf6397b4c652a79b1aed214f51d549f7
Merge branch 'fix/object-model-bool' into 'main_dev'
fix: TCP Modbus bool类型物模型取值范围变更 See merge request yunteng/thingskit-front!1224
Showing
4 changed files
with
33 additions
and
5 deletions
1 | 1 | import { useParseOriginalDataType } from './useParseOriginalDataType'; |
2 | 2 | import { OriginalDataTypeEnum } from '/@/enums/objectModelEnum'; |
3 | 3 | |
4 | +export function getBoolValueByStatus(status: boolean) { | |
5 | + return status ? parseInt('FF00', 16) : parseInt('0000', 16); | |
6 | +} | |
7 | + | |
4 | 8 | export function useBaseConversion() { |
5 | 9 | function DecTo32Float(number: number) { |
6 | 10 | const arr = new Uint8Array(4); |
... | ... | @@ -146,7 +150,7 @@ export function useBaseConversion() { |
146 | 150 | let result: number[]; |
147 | 151 | |
148 | 152 | if (type === OriginalDataTypeEnum.BOOLEAN) { |
149 | - result = [value]; | |
153 | + result = [getBoolValueByStatus(!!value)]; | |
150 | 154 | } else if (type === OriginalDataTypeEnum.STRING) { |
151 | 155 | let buffer = StringToHEXBuffer(value); |
152 | 156 | const { registerNumber = 0 } = additional || {}; | ... | ... |
... | ... | @@ -14,7 +14,7 @@ import { |
14 | 14 | TransportTypeEnum, |
15 | 15 | } from '/@/enums/deviceEnum'; |
16 | 16 | import { FunctionTypeEnum } from '/@/enums/objectModelEnum'; |
17 | -import { isFunction } from '/@/utils/is'; | |
17 | +import { isFunction, isNullOrUnDef } from '/@/utils/is'; | |
18 | 18 | import { getDeviceActiveTime } from '/@/api/alarm/position'; |
19 | 19 | import { useMessage } from '../web/useMessage'; |
20 | 20 | |
... | ... | @@ -152,7 +152,7 @@ export function useCommandDelivery() { |
152 | 152 | rpcCommand, |
153 | 153 | setupResult |
154 | 154 | ); |
155 | - rpcCommand = _rpcCommand; | |
155 | + !isNullOrUnDef(rpcCommand) && (rpcCommand = _rpcCommand); | |
156 | 156 | if (_way) way = _way; |
157 | 157 | } |
158 | 158 | ... | ... |
... | ... | @@ -135,6 +135,26 @@ export const useGenerateFormSchemasByObjectModel = () => { |
135 | 135 | const { valueRange } = specs as Specs; |
136 | 136 | const { max, min } = valueRange || {}; |
137 | 137 | |
138 | + if (extensionDesc?.originalDataType === OriginalDataTypeEnum.BOOLEAN) { | |
139 | + const options = [ | |
140 | + { label: '闭合', value: parseInt('FF00', 16) }, | |
141 | + { label: '断开', value: parseInt('0000', 16) }, | |
142 | + ]; | |
143 | + | |
144 | + return { | |
145 | + field: identifier, | |
146 | + label: name, | |
147 | + component: 'Select', | |
148 | + componentProps: () => { | |
149 | + return { | |
150 | + options, | |
151 | + placeholder: `请选择${name}`, | |
152 | + getPopupContainer: () => document.body, | |
153 | + }; | |
154 | + }, | |
155 | + }; | |
156 | + } | |
157 | + | |
138 | 158 | const isStringType = extensionDesc?.originalDataType === OriginalDataTypeEnum.STRING; |
139 | 159 | return { |
140 | 160 | field: identifier, | ... | ... |
... | ... | @@ -68,10 +68,13 @@ export const UINT32_VALUE_RANGE = { |
68 | 68 | }; |
69 | 69 | |
70 | 70 | function getValueRangeFromOriginDataType( |
71 | - originalDataType?: OriginalDataTypeEnum | |
71 | + originalDataType?: OriginalDataTypeEnum, | |
72 | + type: 'range' | 'defaultValue' = 'range' | |
72 | 73 | ): Record<'min' | 'max', number> { |
73 | 74 | switch (originalDataType) { |
74 | 75 | case OriginalDataTypeEnum.BOOLEAN: |
76 | + return type === 'defaultValue' ? BOOL_DEFAULT_VALUE_RANGE : UINT16_VALUE_RANGE; | |
77 | + | |
75 | 78 | case OriginalDataTypeEnum.BITS: |
76 | 79 | return BOOL_DEFAULT_VALUE_RANGE; |
77 | 80 | |
... | ... | @@ -216,7 +219,8 @@ export const getExtendDescFormSchemas = (): FormSchema[] => { |
216 | 219 | const { setFieldsValue } = formActionType; |
217 | 220 | setFieldsValue({ |
218 | 221 | [FormFieldsEnum.VALUE_RANGE]: getValueRangeFromOriginDataType( |
219 | - value as OriginalDataTypeEnum | |
222 | + value as OriginalDataTypeEnum, | |
223 | + 'defaultValue' | |
220 | 224 | ), |
221 | 225 | }); |
222 | 226 | }, | ... | ... |