表单设计器
This commit is contained in:
parent
b2efb2ffa7
commit
93adb8e71e
@ -56,6 +56,7 @@ const FormPreview: React.FC<FormPreviewProps> = ({ fields, formConfig }) => {
|
|||||||
field={field}
|
field={field}
|
||||||
formData={formData}
|
formData={formData}
|
||||||
onFieldChange={(name, value) => setFormData(prev => ({ ...prev, [name]: value }))}
|
onFieldChange={(name, value) => setFormData(prev => ({ ...prev, [name]: value }))}
|
||||||
|
formConfig={formConfig}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -66,6 +67,7 @@ const FormPreview: React.FC<FormPreviewProps> = ({ fields, formConfig }) => {
|
|||||||
key={field.id}
|
key={field.id}
|
||||||
label={field.label}
|
label={field.label}
|
||||||
name={field.name}
|
name={field.name}
|
||||||
|
colon={true}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: field.required,
|
required: field.required,
|
||||||
|
|||||||
@ -5,19 +5,21 @@
|
|||||||
|
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Row, Col, Form } from 'antd';
|
import { Row, Col, Form } from 'antd';
|
||||||
import type { FieldConfig } from '../types';
|
import type { FieldConfig, FormConfig } from '../types';
|
||||||
import FieldRenderer from './FieldRenderer';
|
import FieldRenderer from './FieldRenderer';
|
||||||
|
|
||||||
interface GridFieldPreviewProps {
|
interface GridFieldPreviewProps {
|
||||||
field: FieldConfig;
|
field: FieldConfig;
|
||||||
formData?: Record<string, any>;
|
formData?: Record<string, any>;
|
||||||
onFieldChange?: (name: string, value: any) => void;
|
onFieldChange?: (name: string, value: any) => void;
|
||||||
|
formConfig?: FormConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
const GridFieldPreview: React.FC<GridFieldPreviewProps> = ({
|
const GridFieldPreview: React.FC<GridFieldPreviewProps> = ({
|
||||||
field,
|
field,
|
||||||
formData = {},
|
formData = {},
|
||||||
onFieldChange
|
onFieldChange,
|
||||||
|
formConfig
|
||||||
}) => {
|
}) => {
|
||||||
const columns = field.columns || 2;
|
const columns = field.columns || 2;
|
||||||
const children = field.children || Array(columns).fill([]);
|
const children = field.children || Array(columns).fill([]);
|
||||||
@ -40,13 +42,19 @@ const GridFieldPreview: React.FC<GridFieldPreviewProps> = ({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 根据表单配置决定布局方式
|
||||||
|
const isVertical = formConfig?.labelAlign === 'top';
|
||||||
|
|
||||||
// 普通表单字段用 Form.Item 包裹
|
// 普通表单字段用 Form.Item 包裹
|
||||||
|
// 栅格内字段:根据对齐方式使用不同的布局
|
||||||
return (
|
return (
|
||||||
<Form.Item
|
<Form.Item
|
||||||
key={childField.id}
|
key={childField.id}
|
||||||
label={childField.label}
|
label={childField.label}
|
||||||
name={childField.name}
|
name={childField.name}
|
||||||
colon={true}
|
colon={true}
|
||||||
|
labelCol={isVertical ? { span: 24 } : { span: 8 }}
|
||||||
|
wrapperCol={isVertical ? { span: 24 } : { span: 16 }}
|
||||||
rules={[
|
rules={[
|
||||||
{
|
{
|
||||||
required: childField.required,
|
required: childField.required,
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user