From fffc4e85513d3794316d607dbdc6eb2c6105bd93 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Mon, 20 Apr 2026 13:39:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=AE=BE=E5=A4=87=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devicemanagement/deviceinfo/index.vue | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue b/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue index 81b4b76..6218f04 100644 --- a/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue +++ b/apps/web-antd/src/views/devicemanagement/deviceinfo/index.vue @@ -1225,19 +1225,31 @@ const [ServiceCallModal, serviceCallModalApi] = useVbenModal({ const serviceCallModalState = serviceCallModalApi.useStore(); -/** 服务入参:部分字段需为数值(如 Quantity),避免以字符串提交 */ +/** 服务入参:部分字段需为数值,避免以字符串提交 */ function coerceServiceCallParamValue( fieldName: string, raw: string, + ctx: { isOperateBreakerService: boolean }, ): { ok: true; value: unknown } | { ok: false; message: string } { - const key = fieldName.trim(); - if (key.toLowerCase() === 'quantity') { + const key = fieldName.trim().toLowerCase(); + if (key === 'quantity') { const n = Number(raw); if (Number.isNaN(n)) { return { ok: false, message: '数量(Quantity)需填写有效数字' }; } return { ok: true, value: n }; } + // 拉合闸服务:操作类型(OperateType)须为数值,不能传字符串 + if (ctx.isOperateBreakerService && key === 'operatetype') { + const n = Number(raw); + if (Number.isNaN(n)) { + return { + ok: false, + message: '操作类型(OperateType)需为有效数字', + }; + } + return { ok: true, value: n }; + } return { ok: true, value: raw }; } @@ -1261,10 +1273,13 @@ async function submitDeviceServiceCall() { return; } const serviceParams: Record = {}; + const coerceCtx = { + isOperateBreakerService: isOperateBreakerServiceItem(item), + }; for (const f of serviceParamFields.value) { const v = (serviceCallFormValues.value[f.name] ?? '').trim(); if (v !== '') { - const coerced = coerceServiceCallParamValue(f.name, v); + const coerced = coerceServiceCallParamValue(f.name, v, coerceCtx); if (!coerced.ok) { Message.warning(coerced.message); return;