From df8e23542b1bac105497c1d7342b2825ad0a4a94 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Thu, 21 May 2026 19:58:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(iot):=20=E4=BF=AE=E5=A4=8D=20scene=20?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=20vue-tsc=203=20=E5=A4=84=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ele device-control-config: - defaultParams 类型显式为 Record ; param.identifier 可能为 undefined 时跳过赋值 - ElOption :value="service.identifier" 改为非空断言 service.identifier! - ele json-params-input:getParamTypeTag 用 as const 让 TS 自动推断字面值 联合('primary' | 'success' | 'info' | 'warning' | 'danger'),传给 ElTag.type 不再报错 - antd value-input:handleNumberChange 参数改为 any 内部 String 转换 (AntD InputNumber @change 类型为 ValueType = string | number , 原 number | undefined 报错) --- .../src/views/iot/rule/scene/form/inputs/value-input.vue | 6 +++--- .../iot/rule/scene/form/configs/device-control-config.vue | 5 +++-- .../views/iot/rule/scene/form/inputs/json-params-input.vue | 6 +++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/apps/web-antd/src/views/iot/rule/scene/form/inputs/value-input.vue b/apps/web-antd/src/views/iot/rule/scene/form/inputs/value-input.vue index 5df6f1218..5f1cf6ed3 100644 --- a/apps/web-antd/src/views/iot/rule/scene/form/inputs/value-input.vue +++ b/apps/web-antd/src/views/iot/rule/scene/form/inputs/value-input.vue @@ -132,9 +132,9 @@ function handleDateChange(value: any) { localValue.value = value || ''; } -/** 处理数字变化事件 */ -function handleNumberChange(value: number | undefined) { - localValue.value = value?.toString() || ''; +/** 处理数字变化事件 ;InputNumber 回调值类型为 ValueType(string | number) */ +function handleNumberChange(value: any) { + localValue.value = value == null ? '' : String(value); } /** 监听操作符变化 */ diff --git a/apps/web-ele/src/views/iot/rule/scene/form/configs/device-control-config.vue b/apps/web-ele/src/views/iot/rule/scene/form/configs/device-control-config.vue index 4bb93a3c7..75198be1f 100644 --- a/apps/web-ele/src/views/iot/rule/scene/form/configs/device-control-config.vue +++ b/apps/web-ele/src/views/iot/rule/scene/form/configs/device-control-config.vue @@ -125,8 +125,9 @@ function handleServiceChange(serviceIdentifier?: any) { // 如果选择了服务且有输入参数,生成默认参数结构 if (service && service.inputParams && service.inputParams.length > 0) { - const defaultParams = {}; + const defaultParams: Record = {}; service.inputParams.forEach((param) => { + if (!param.identifier) return; defaultParams[param.identifier] = getDefaultValueForParam(param); }); // 将默认参数转换为 JSON 字符串保存 @@ -376,7 +377,7 @@ watch( v-for="service in serviceList" :key="service.identifier" :label="service.name" - :value="service.identifier" + :value="service.identifier!" >
{{ service.name }} diff --git a/apps/web-ele/src/views/iot/rule/scene/form/inputs/json-params-input.vue b/apps/web-ele/src/views/iot/rule/scene/form/inputs/json-params-input.vue index 6715d6f5b..39218020b 100644 --- a/apps/web-ele/src/views/iot/rule/scene/form/inputs/json-params-input.vue +++ b/apps/web-ele/src/views/iot/rule/scene/form/inputs/json-params-input.vue @@ -305,7 +305,7 @@ function getParamTypeName(dataType: string) { * @returns 标签样式 */ function getParamTypeTag(dataType: string) { - const tagMap: Record = { + const tagMap = { [IoTDataSpecsDataTypeEnum.INT]: 'primary', [IoTDataSpecsDataTypeEnum.FLOAT]: 'success', [IoTDataSpecsDataTypeEnum.DOUBLE]: 'success', @@ -315,8 +315,8 @@ function getParamTypeTag(dataType: string) { [IoTDataSpecsDataTypeEnum.DATE]: 'primary', [IoTDataSpecsDataTypeEnum.STRUCT]: 'info', [IoTDataSpecsDataTypeEnum.ARRAY]: 'warning', - }; - return tagMap[dataType] || 'info'; + } as const; + return tagMap[dataType as keyof typeof tagMap] || 'info'; } /**