42 lines
		
	
	
		
			812 B
		
	
	
	
		
			JavaScript
		
	
	
		
		
			
		
	
	
			42 lines
		
	
	
		
			812 B
		
	
	
	
		
			JavaScript
		
	
	
|  | import { Form, Row } from "antd"; | ||
|  | import FormItemsRenderer from "./FormItemsRenderer"; | ||
|  | 
 | ||
|  | /** | ||
|  |  * 表单构建器组件 | ||
|  |  */ | ||
|  | const FormBuilder = (props) => { | ||
|  |   const { | ||
|  |     values, | ||
|  |     options, | ||
|  |     gutter = 24, | ||
|  |     span = 12, | ||
|  |     labelCol = { span: 4 }, | ||
|  |     onFinish, | ||
|  |     useAutoGenerateRequired = true, | ||
|  |     ...restProps | ||
|  |   } = props; | ||
|  | 
 | ||
|  |   return ( | ||
|  |     <Form | ||
|  |       labelCol={labelCol} | ||
|  |       scrollToFirstError | ||
|  |       wrapperCol={{ span: 24 - labelCol.span }} | ||
|  |       onFinish={onFinish} | ||
|  |       initialValues={values} | ||
|  |       {...restProps} | ||
|  |     > | ||
|  |       <Row gutter={gutter}> | ||
|  |         <FormItemsRenderer | ||
|  |           options={options} | ||
|  |           span={span} | ||
|  |           useAutoGenerateRequired={useAutoGenerateRequired} | ||
|  |         /> | ||
|  |       </Row> | ||
|  |     </Form> | ||
|  |   ); | ||
|  | }; | ||
|  | 
 | ||
|  | FormBuilder.displayName = "FormBuilder"; | ||
|  | 
 | ||
|  | export default FormBuilder; |