优化FormItemsRenderer
parent
75b8214df0
commit
0d857f7600
|
|
@ -94,11 +94,39 @@ const FormItemsRenderer = ({
|
|||
|
||||
// 获取验证规则
|
||||
const getRules = (option) => {
|
||||
if (!useAutoGenerateRequired)
|
||||
return option.rules ? (Array.isArray(option.rules) ? option.rules : [option.rules]) : [];
|
||||
if (option.render === FORM_ITEM_RENDER_ENUM.DIVIDER)
|
||||
return [];
|
||||
|
||||
const rules = [];
|
||||
|
||||
/** @type {string | Function} */
|
||||
const render = option.render || FORM_ITEM_RENDER_ENUM.INPUT;
|
||||
switch (render) {
|
||||
case FORM_ITEM_RENDER_ENUM.INPUT:
|
||||
rules.push({ max: 50, message: "最多输入50字符" });
|
||||
break;
|
||||
|
||||
case FORM_ITEM_RENDER_ENUM.TEXTAREA:
|
||||
rules.push({ max: 500, message: "最多输入500字符" });
|
||||
break;
|
||||
|
||||
case FORM_ITEM_RENDER_ENUM.INPUT_NUMBER:
|
||||
case FORM_ITEM_RENDER_ENUM.NUMBER:
|
||||
rules.push({ pattern: /^(\d+)(\.\d{1,2})?$/, message: "请输入正确的数字,最多保留两位小数" });
|
||||
rules.push({
|
||||
validator: (_, value) => {
|
||||
if (value && Math.abs(parseFloat(value)) > Number.MAX_SAFE_INTEGER) {
|
||||
return Promise.reject("输入数值超出安全范围");
|
||||
}
|
||||
return Promise.resolve();
|
||||
}
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
if (!useAutoGenerateRequired)
|
||||
return option.rules ? (Array.isArray(option.rules) ? [...option.rules, ...rules] : [option.rules, ...rules]) : [];
|
||||
|
||||
// 支持动态计算 required
|
||||
const required = typeof option.required === "function"
|
||||
? option.required(getFormValues())
|
||||
|
|
@ -112,12 +140,7 @@ const FormItemsRenderer = ({
|
|||
FORM_ITEM_RENDER_ENUM.NUMBER,
|
||||
].includes(option.render);
|
||||
|
||||
const rules = [
|
||||
{
|
||||
required: true,
|
||||
message: `${isBlurTrigger ? "请输入" : "请选择"}${option.label}`,
|
||||
},
|
||||
];
|
||||
rules.push({ required: true, message: `${isBlurTrigger ? "请输入" : "请选择"}${option.label}` });
|
||||
|
||||
if (option.rules) {
|
||||
if (Array.isArray(option.rules)) {
|
||||
|
|
@ -127,10 +150,11 @@ const FormItemsRenderer = ({
|
|||
rules.push(option.rules);
|
||||
}
|
||||
}
|
||||
|
||||
return rules;
|
||||
}
|
||||
|
||||
return option.rules ? (Array.isArray(option.rules) ? option.rules : [option.rules]) : [];
|
||||
return option.rules ? (Array.isArray(option.rules) ? [...option.rules, ...rules] : [option.rules, ...rules]) : [];
|
||||
};
|
||||
|
||||
// 获取key
|
||||
|
|
@ -148,10 +172,10 @@ const FormItemsRenderer = ({
|
|||
|
||||
switch (render) {
|
||||
case FORM_ITEM_RENDER_ENUM.INPUT:
|
||||
return <Input placeholder={placeholder} {...componentProps} />;
|
||||
return <Input placeholder={placeholder} max={50} {...componentProps} />;
|
||||
|
||||
case FORM_ITEM_RENDER_ENUM.TEXTAREA:
|
||||
return <TextArea placeholder={placeholder} rows={3} {...componentProps} />;
|
||||
return <TextArea placeholder={placeholder} max={500} showCount={true} rows={3} {...componentProps} />;
|
||||
|
||||
case FORM_ITEM_RENDER_ENUM.INPUT_NUMBER:
|
||||
case FORM_ITEM_RENDER_ENUM.NUMBER:
|
||||
|
|
|
|||
|
|
@ -76,6 +76,7 @@ export const UPLOAD_FILE_TYPE_ENUM = {
|
|||
144: 144, // safety_environmental_inspection_defense_signature - 安全环保检查-申辩签字
|
||||
146: 146, // safety_environmental_inspection_acceptance - 安全环保检查-验收
|
||||
145: 145, // qualified_list_inspection - 清单检查合格
|
||||
147: 147, // hidden_qualified_listInspection_signature - 隐患清单排查签字
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -153,4 +154,5 @@ export const UPLOAD_FILE_PATH_ENUM = {
|
|||
144: "safety_environmental_inspection_defense_signature",
|
||||
145: "qualified_list_inspection",
|
||||
146: "safety_environmental_inspection_acceptance",
|
||||
147: "hidden_qualified_listInspection_signature",
|
||||
};
|
||||
|
|
|
|||
|
|
@ -325,3 +325,10 @@ export function processTreeDataForOnlyLastLevel(
|
|||
/** 子节点 */
|
||||
[key: string]: any;
|
||||
}[];
|
||||
|
||||
/**
|
||||
* 验证结束时间是否大于开始时间
|
||||
*/
|
||||
export function validatorEndTime(timeStart: string): {
|
||||
validator: (_: any, value: any) => Promise<void | string>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -507,6 +507,22 @@ export const processTreeDataForOnlyLastLevel = (options) => {
|
|||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 验证结束时间是否大于开始时间
|
||||
*/
|
||||
export const validatorEndTime = (timeStart) => {
|
||||
return {
|
||||
validator: (_, value) => {
|
||||
if (value && timeStart && value < timeStart) {
|
||||
return Promise.reject("结束时间不能早于开始时间");
|
||||
}
|
||||
else {
|
||||
return Promise.resolve();
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件url
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in New Issue