优化FormItemsRenderer
parent
75b8214df0
commit
0d857f7600
|
|
@ -94,11 +94,39 @@ const FormItemsRenderer = ({
|
||||||
|
|
||||||
// 获取验证规则
|
// 获取验证规则
|
||||||
const getRules = (option) => {
|
const getRules = (option) => {
|
||||||
if (!useAutoGenerateRequired)
|
|
||||||
return option.rules ? (Array.isArray(option.rules) ? option.rules : [option.rules]) : [];
|
|
||||||
if (option.render === FORM_ITEM_RENDER_ENUM.DIVIDER)
|
if (option.render === FORM_ITEM_RENDER_ENUM.DIVIDER)
|
||||||
return [];
|
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
|
// 支持动态计算 required
|
||||||
const required = typeof option.required === "function"
|
const required = typeof option.required === "function"
|
||||||
? option.required(getFormValues())
|
? option.required(getFormValues())
|
||||||
|
|
@ -112,12 +140,7 @@ const FormItemsRenderer = ({
|
||||||
FORM_ITEM_RENDER_ENUM.NUMBER,
|
FORM_ITEM_RENDER_ENUM.NUMBER,
|
||||||
].includes(option.render);
|
].includes(option.render);
|
||||||
|
|
||||||
const rules = [
|
rules.push({ required: true, message: `${isBlurTrigger ? "请输入" : "请选择"}${option.label}` });
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: `${isBlurTrigger ? "请输入" : "请选择"}${option.label}`,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
if (option.rules) {
|
if (option.rules) {
|
||||||
if (Array.isArray(option.rules)) {
|
if (Array.isArray(option.rules)) {
|
||||||
|
|
@ -127,10 +150,11 @@ const FormItemsRenderer = ({
|
||||||
rules.push(option.rules);
|
rules.push(option.rules);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 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
|
// 获取key
|
||||||
|
|
@ -148,10 +172,10 @@ const FormItemsRenderer = ({
|
||||||
|
|
||||||
switch (render) {
|
switch (render) {
|
||||||
case FORM_ITEM_RENDER_ENUM.INPUT:
|
case FORM_ITEM_RENDER_ENUM.INPUT:
|
||||||
return <Input placeholder={placeholder} {...componentProps} />;
|
return <Input placeholder={placeholder} max={50} {...componentProps} />;
|
||||||
|
|
||||||
case FORM_ITEM_RENDER_ENUM.TEXTAREA:
|
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.INPUT_NUMBER:
|
||||||
case FORM_ITEM_RENDER_ENUM.NUMBER:
|
case FORM_ITEM_RENDER_ENUM.NUMBER:
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,7 @@ export const UPLOAD_FILE_TYPE_ENUM = {
|
||||||
144: 144, // safety_environmental_inspection_defense_signature - 安全环保检查-申辩签字
|
144: 144, // safety_environmental_inspection_defense_signature - 安全环保检查-申辩签字
|
||||||
146: 146, // safety_environmental_inspection_acceptance - 安全环保检查-验收
|
146: 146, // safety_environmental_inspection_acceptance - 安全环保检查-验收
|
||||||
145: 145, // qualified_list_inspection - 清单检查合格
|
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",
|
144: "safety_environmental_inspection_defense_signature",
|
||||||
145: "qualified_list_inspection",
|
145: "qualified_list_inspection",
|
||||||
146: "safety_environmental_inspection_acceptance",
|
146: "safety_environmental_inspection_acceptance",
|
||||||
|
147: "hidden_qualified_listInspection_signature",
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -325,3 +325,10 @@ export function processTreeDataForOnlyLastLevel(
|
||||||
/** 子节点 */
|
/** 子节点 */
|
||||||
[key: string]: any;
|
[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
|
* 获取文件url
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue