| | |
| | | return rule |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 解析表单组件的 field, title 等字段(递归,如果组件包含子组件) |
| | | * |
| | | * @param rule 组件的生成规则 https://www.form-create.com/v3/guide/rule |
| | | * @param fields 解析后表单组件字段 |
| | | * @param parentTitle 如果是子表单,子表单的标题,默认为空 |
| | | */ |
| | | export const parseFormFields = ( |
| | | rule: Record<string, any>, |
| | | fields: Array<Record<string, any>> = [], |
| | | parentTitle: string = '' |
| | | ) => { |
| | | const { type, field, $required, title: tempTitle, children } = rule |
| | | if (field && tempTitle) { |
| | | let title = tempTitle |
| | | if (parentTitle) { |
| | | title = `${parentTitle}.${tempTitle}` |
| | | } |
| | | let required = false |
| | | if ($required) { |
| | | required = true |
| | | } |
| | | fields.push({ |
| | | field, |
| | | title, |
| | | type, |
| | | required |
| | | }) |
| | | // TODO 子表单 需要处理子表单字段 |
| | | // if (type === 'group' && rule.props?.rule && Array.isArray(rule.props.rule)) { |
| | | // // 解析子表单的字段 |
| | | // rule.props.rule.forEach((item) => { |
| | | // parseFields(item, fieldsPermission, title) |
| | | // }) |
| | | // } |
| | | } |
| | | if (children && Array.isArray(children)) { |
| | | children.forEach((rule) => { |
| | | parseFormFields(rule, fields) |
| | | }) |
| | | } |
| | | } |