Commit e71f783da776d8336da7e554ade4002613cf181f
1 parent
d702b232
perf: tcp产品创建物模型时,只可创建布尔、浮点、整型、字符串结构的物模型
Showing
3 changed files
with
46 additions
and
12 deletions
| ... | ... | @@ -111,6 +111,19 @@ export const formSchemas = ({ |
| 111 | 111 | api: async (params: Recordable) => { |
| 112 | 112 | try { |
| 113 | 113 | const record = await findDictItemByCode(params); |
| 114 | + | |
| 115 | + if (isTcp) { | |
| 116 | + // TCP 产品 属性可创建范围 | |
| 117 | + return record.filter((item) => | |
| 118 | + [ | |
| 119 | + DataTypeEnum.BOOL, | |
| 120 | + DataTypeEnum.NUMBER_DOUBLE, | |
| 121 | + DataTypeEnum.NUMBER_INT, | |
| 122 | + DataTypeEnum.STRING, | |
| 123 | + ].includes(item.itemValue as DataTypeEnum) | |
| 124 | + ); | |
| 125 | + } | |
| 126 | + | |
| 114 | 127 | return hasStructForm |
| 115 | 128 | ? record.filter((item) => item.itemValue !== DataTypeEnum.STRUCT) |
| 116 | 129 | : record; | ... | ... |
| 1 | +import { StructJSON } from '/@/api/device/model/modelOfMatterModel'; | |
| 1 | 2 | import { FormSchema } from '/@/components/Form'; |
| 3 | +import { validateTCPCustomCommand } from '/@/components/Form/src/externalCompns/components/ThingsModelForm'; | |
| 4 | +import { DataTypeEnum } from '/@/enums/objectModelEnum'; | |
| 2 | 5 | |
| 3 | 6 | const InsertString = (t, c, n) => { |
| 4 | 7 | const r: string | number[] = []; |
| ... | ... | @@ -127,21 +130,33 @@ const SingleToHexBatch = (t) => { |
| 127 | 130 | return r.join('\r\n'); |
| 128 | 131 | }; |
| 129 | 132 | |
| 130 | -const formSchemasConfig = (schemas, actionType): FormSchema[] => { | |
| 131 | - const { identifier, functionName } = schemas; | |
| 133 | +const formSchemasConfig = (schemas: StructJSON, actionType: string): FormSchema[] => { | |
| 134 | + const { identifier, functionName, dataType } = schemas; | |
| 135 | + | |
| 136 | + if (dataType?.type === DataTypeEnum.STRING) { | |
| 137 | + return [ | |
| 138 | + { | |
| 139 | + field: identifier, | |
| 140 | + label: functionName!, | |
| 141 | + component: 'Input', | |
| 142 | + rules: [{ required: true, validator: validateTCPCustomCommand }], | |
| 143 | + componentProps: { | |
| 144 | + placeholder: `请输入${functionName}`, | |
| 145 | + }, | |
| 146 | + }, | |
| 147 | + ]; | |
| 148 | + } | |
| 149 | + | |
| 132 | 150 | if (actionType == '06') { |
| 133 | 151 | return [ |
| 134 | 152 | { |
| 135 | 153 | field: identifier, |
| 136 | - label: functionName, | |
| 154 | + label: functionName!, | |
| 137 | 155 | component: 'InputNumber', |
| 138 | 156 | rules: [{ required: true, message: '请输入正数' }], |
| 139 | 157 | componentProps: { |
| 140 | 158 | min: 0, |
| 141 | - formatter: (e) => { | |
| 142 | - const value = `${e}`.replace('-', '').replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); | |
| 143 | - return value; | |
| 144 | - }, | |
| 159 | + precision: 2, | |
| 145 | 160 | placeholder: `请输入正数`, |
| 146 | 161 | }, |
| 147 | 162 | }, |
| ... | ... | @@ -150,7 +165,7 @@ const formSchemasConfig = (schemas, actionType): FormSchema[] => { |
| 150 | 165 | return [ |
| 151 | 166 | { |
| 152 | 167 | field: identifier, |
| 153 | - label: functionName, | |
| 168 | + label: functionName!, | |
| 154 | 169 | component: 'InputNumber', |
| 155 | 170 | rules: [{ required: true, message: '请输入值' }], |
| 156 | 171 | componentProps: { |
| ... | ... | @@ -165,13 +180,12 @@ const formSchemasConfig = (schemas, actionType): FormSchema[] => { |
| 165 | 180 | return [ |
| 166 | 181 | { |
| 167 | 182 | field: identifier, |
| 168 | - label: functionName, | |
| 183 | + label: functionName!, | |
| 169 | 184 | component: 'InputNumber', |
| 170 | 185 | rules: [{ required: true, message: '请输入值' }], |
| 171 | 186 | componentProps: { |
| 172 | 187 | placeholder: `请输入数字`, |
| 173 | - formatter: (e) => | |
| 174 | - `${e}`.replace(/\B(?=(\d{3})+(?!\d))/g, '').replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3'), | |
| 188 | + precision: 2, | |
| 175 | 189 | }, |
| 176 | 190 | }, |
| 177 | 191 | ]; | ... | ... |
| ... | ... | @@ -35,6 +35,7 @@ |
| 35 | 35 | const zoomFactorValue = ref<number>(1); //缩放因子 |
| 36 | 36 | const isShowMultiply = ref<Boolean>(false); // 只有tcp --> int和double类型才相乘缩放因子 |
| 37 | 37 | const deviceTransportType = ref<string>(); |
| 38 | + const objectDataType = ref<DataTypeEnum>(); | |
| 38 | 39 | |
| 39 | 40 | const [register] = useModalInner(async (params: ModalParamsType<DeviceModelOfMatterAttrs>) => { |
| 40 | 41 | const { record } = params; |
| ... | ... | @@ -48,6 +49,7 @@ |
| 48 | 49 | zoomFactorValue.value = zoomFactor ? Number(zoomFactor) : 1; |
| 49 | 50 | isShowMultiply.value = type == 'INT' || type == 'DOUBLE' ? true : false; |
| 50 | 51 | deviceTransportType.value = transportType; |
| 52 | + objectDataType.value = type; | |
| 51 | 53 | |
| 52 | 54 | let schemas = [{ dataType: dataType, identifier, functionName: name } as StructJSON]; |
| 53 | 55 | |
| ... | ... | @@ -136,7 +138,12 @@ |
| 136 | 138 | |
| 137 | 139 | const sendValue = ref({}); |
| 138 | 140 | //判断tcp类型 标识符是自定义还是ModBus |
| 139 | - if (unref(isShowModBUS)) { | |
| 141 | + if (unref(objectDataType) === DataTypeEnum.STRING) { | |
| 142 | + const flag = await validate(); | |
| 143 | + if (!flag) return; | |
| 144 | + const value = getFieldsValue()[unref(formField)]; | |
| 145 | + sendValue.value = value; | |
| 146 | + } else if (unref(isShowModBUS)) { | |
| 140 | 147 | if (!unref(isShowActionType)) { |
| 141 | 148 | createMessage.warning('当前物模型扩展描述没有填写'); |
| 142 | 149 | return; | ... | ... |