From 8dba2ca34a2bfdde2239c847a41a9bb4d70ca15f Mon Sep 17 00:00:00 2001 From: LiuJiaNan <15703339975@163.com> Date: Thu, 9 Apr 2026 18:02:01 +0800 Subject: [PATCH] =?UTF-8?q?FormBuilder=E5=A2=9E=E5=8A=A0INTEGER=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/FormBuilder/FormItemsRenderer.js | 16 +++++++++++++++- src/enum/formItemRender/index.d.ts | 2 ++ src/enum/formItemRender/index.js | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/components/FormBuilder/FormItemsRenderer.js b/src/components/FormBuilder/FormItemsRenderer.js index c371aab..62c9a5c 100644 --- a/src/components/FormBuilder/FormItemsRenderer.js +++ b/src/components/FormBuilder/FormItemsRenderer.js @@ -166,6 +166,18 @@ const FormItemsRenderer = ({ }, }); break; + + case FORM_ITEM_RENDER_ENUM.INTEGER: + option.useConstraints !== false && rules.push({ pattern: /^(\d+)$/, message: "请输入正确的整数" }); + option.useConstraints !== false && rules.push({ + validator: (_, value) => { + if (value && Math.abs(Number.parseFloat(value)) > 999999999) { + return Promise.reject("输入数值超出安全范围"); + } + return Promise.resolve(); + }, + }); + break; } if (!useAutoGenerateRequired) @@ -177,6 +189,7 @@ const FormItemsRenderer = ({ FORM_ITEM_RENDER_ENUM.TEXTAREA, FORM_ITEM_RENDER_ENUM.INPUT_NUMBER, FORM_ITEM_RENDER_ENUM.NUMBER, + FORM_ITEM_RENDER_ENUM.INTEGER, ].includes(option.render); rules.push({ required: true, message: `${isBlurTrigger ? "请输入" : "请选择"}${option.label}` }); @@ -245,7 +258,7 @@ const FormItemsRenderer = ({ const itemsFieldKey = getItemsFieldKey(option); /** @type {string | Function} */ const render = option.render || FORM_ITEM_RENDER_ENUM.INPUT; - const placeholder = option.placeholder || `请${[FORM_ITEM_RENDER_ENUM.INPUT, FORM_ITEM_RENDER_ENUM.TEXTAREA, FORM_ITEM_RENDER_ENUM.INPUT_NUMBER, FORM_ITEM_RENDER_ENUM.NUMBER].includes(render) ? "输入" : "选择"}${option.label}`; + const placeholder = option.placeholder || `请${[FORM_ITEM_RENDER_ENUM.INPUT, FORM_ITEM_RENDER_ENUM.TEXTAREA, FORM_ITEM_RENDER_ENUM.INPUT_NUMBER, FORM_ITEM_RENDER_ENUM.NUMBER, FORM_ITEM_RENDER_ENUM.INTEGER].includes(render) ? "输入" : "选择"}${option.label}`; switch (render) { case FORM_ITEM_RENDER_ENUM.INPUT: @@ -256,6 +269,7 @@ const FormItemsRenderer = ({ case FORM_ITEM_RENDER_ENUM.INPUT_NUMBER: case FORM_ITEM_RENDER_ENUM.NUMBER: + case FORM_ITEM_RENDER_ENUM.INTEGER: return ; case FORM_ITEM_RENDER_ENUM.SELECT: diff --git a/src/enum/formItemRender/index.d.ts b/src/enum/formItemRender/index.d.ts index 247bc20..decb2e3 100644 --- a/src/enum/formItemRender/index.d.ts +++ b/src/enum/formItemRender/index.d.ts @@ -19,6 +19,8 @@ export declare const FORM_ITEM_RENDER_ENUM: { INPUT_NUMBER: "inputNumber"; /** 映射为 antd InputNumber */ NUMBER: "number"; + /** 映射为 antd InputNumber */ + INTEGER: "number"; /** 映射为 antd Select */ SELECT: "select"; /** 映射为 antd Radio.Group */ diff --git a/src/enum/formItemRender/index.js b/src/enum/formItemRender/index.js index b2dc092..632c7e7 100644 --- a/src/enum/formItemRender/index.js +++ b/src/enum/formItemRender/index.js @@ -10,6 +10,8 @@ export const FORM_ITEM_RENDER_ENUM = { INPUT_NUMBER: "inputNumber", /** 映射为 antd InputNumber */ NUMBER: "number", + /** 映射为 antd InputNumber */ + INTEGER: "number", /** 映射为 antd Select */ SELECT: "select", /** 映射为 antd Radio.Group */