FormBuilder增加INTEGER类型支持

master
LiuJiaNan 2026-04-09 18:02:01 +08:00
parent 752a0004f0
commit 8dba2ca34a
3 changed files with 19 additions and 1 deletions

View File

@ -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 <InputNumber placeholder={placeholder} style={{ width: "100%" }} {...componentProps} />;
case FORM_ITEM_RENDER_ENUM.SELECT:

View File

@ -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 */

View File

@ -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 */