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; 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) if (!useAutoGenerateRequired)
@ -177,6 +189,7 @@ const FormItemsRenderer = ({
FORM_ITEM_RENDER_ENUM.TEXTAREA, FORM_ITEM_RENDER_ENUM.TEXTAREA,
FORM_ITEM_RENDER_ENUM.INPUT_NUMBER, FORM_ITEM_RENDER_ENUM.INPUT_NUMBER,
FORM_ITEM_RENDER_ENUM.NUMBER, FORM_ITEM_RENDER_ENUM.NUMBER,
FORM_ITEM_RENDER_ENUM.INTEGER,
].includes(option.render); ].includes(option.render);
rules.push({ required: true, message: `${isBlurTrigger ? "请输入" : "请选择"}${option.label}` }); rules.push({ required: true, message: `${isBlurTrigger ? "请输入" : "请选择"}${option.label}` });
@ -245,7 +258,7 @@ const FormItemsRenderer = ({
const itemsFieldKey = getItemsFieldKey(option); const itemsFieldKey = getItemsFieldKey(option);
/** @type {string | Function} */ /** @type {string | Function} */
const render = option.render || FORM_ITEM_RENDER_ENUM.INPUT; 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) { switch (render) {
case FORM_ITEM_RENDER_ENUM.INPUT: case FORM_ITEM_RENDER_ENUM.INPUT:
@ -256,6 +269,7 @@ const FormItemsRenderer = ({
case FORM_ITEM_RENDER_ENUM.INPUT_NUMBER: case FORM_ITEM_RENDER_ENUM.INPUT_NUMBER:
case FORM_ITEM_RENDER_ENUM.NUMBER: case FORM_ITEM_RENDER_ENUM.NUMBER:
case FORM_ITEM_RENDER_ENUM.INTEGER:
return <InputNumber placeholder={placeholder} style={{ width: "100%" }} {...componentProps} />; return <InputNumber placeholder={placeholder} style={{ width: "100%" }} {...componentProps} />;
case FORM_ITEM_RENDER_ENUM.SELECT: case FORM_ITEM_RENDER_ENUM.SELECT:

View File

@ -19,6 +19,8 @@ export declare const FORM_ITEM_RENDER_ENUM: {
INPUT_NUMBER: "inputNumber"; INPUT_NUMBER: "inputNumber";
/** 映射为 antd InputNumber */ /** 映射为 antd InputNumber */
NUMBER: "number"; NUMBER: "number";
/** 映射为 antd InputNumber */
INTEGER: "number";
/** 映射为 antd Select */ /** 映射为 antd Select */
SELECT: "select"; SELECT: "select";
/** 映射为 antd Radio.Group */ /** 映射为 antd Radio.Group */

View File

@ -10,6 +10,8 @@ export const FORM_ITEM_RENDER_ENUM = {
INPUT_NUMBER: "inputNumber", INPUT_NUMBER: "inputNumber",
/** 映射为 antd InputNumber */ /** 映射为 antd InputNumber */
NUMBER: "number", NUMBER: "number",
/** 映射为 antd InputNumber */
INTEGER: "number",
/** 映射为 antd Select */ /** 映射为 antd Select */
SELECT: "select", SELECT: "select",
/** 映射为 antd Radio.Group */ /** 映射为 antd Radio.Group */