增加审批组件

This commit is contained in:
dengqichen 2025-10-25 12:29:02 +08:00
parent a4ab7a6016
commit 9d0b28cdec
5 changed files with 38 additions and 4 deletions

View File

@ -354,10 +354,10 @@ const FormDesigner: React.FC<FormDesignerProps> = ({
if (over.id === 'canvas' || over.id === 'canvas-bottom' || overData?.isBottom) { if (over.id === 'canvas' || over.id === 'canvas-bottom' || overData?.isBottom) {
newFields.push(newField); newFields.push(newField);
} else { } else {
// 如果拖到某个字段上,插入到该字段之 // 如果拖到某个字段上,插入到该字段之修复拖拽插入位置bug
const overIndex = newFields.findIndex((f) => f.id === over.id); const overIndex = newFields.findIndex((f) => f.id === over.id);
if (overIndex >= 0) { if (overIndex >= 0) {
newFields.splice(overIndex + 1, 0, newField); // 插入到目标字段之 newFields.splice(overIndex, 0, newField); // 插入到目标字段之
} else { } else {
newFields.push(newField); newFields.push(newField);
} }

View File

@ -86,7 +86,20 @@ const FieldRenderer: React.FC<FieldRendererProps> = ({
// 布局组件特殊处理 // 布局组件特殊处理
if (field.type === 'divider') { if (field.type === 'divider') {
return <Divider>{field.label}</Divider>; const showText = field.showText !== false; // 默认显示文字
const dividerText = field.dividerText || field.label || '分割线';
const dividerColor = field.dividerColor || 'rgba(5, 5, 5, 0.06)';
return (
<Divider
style={{
borderColor: dividerColor,
color: dividerColor,
}}
>
{showText ? dividerText : null}
</Divider>
);
} }
if (field.type === 'text') { if (field.type === 'text') {

View File

@ -352,6 +352,20 @@ const PropertyPanel: React.FC<PropertyPanelProps> = ({
</> </>
)} )}
{selectedField.type === 'divider' && (
<>
<Form.Item label="显示文字" name="showText" valuePropName="checked">
<Switch />
</Form.Item>
<Form.Item label="分割线文字" name="dividerText">
<Input placeholder="请输入分割线文字" />
</Form.Item>
<Form.Item label="分割线颜色" name="dividerColor">
<Input type="color" style={{ width: '100%' }} />
</Form.Item>
</>
)}
{selectedField.type === 'grid' && ( {selectedField.type === 'grid' && (
<> <>
<Divider style={{ margin: '16px 0' }} /> <Divider style={{ margin: '16px 0' }} />

View File

@ -73,7 +73,11 @@ export const COMPONENT_LIST: ComponentMeta[] = [
label: '分割线', label: '分割线',
icon: MinusOutlined, icon: MinusOutlined,
category: '布局字段', category: '布局字段',
defaultConfig: {}, defaultConfig: {
showText: true, // 是否显示文字
dividerText: '分割线', // 分割线中间的文字
dividerColor: 'rgba(5, 5, 5, 0.06)', // 分割线颜色(默认为 Ant Design 的分割线颜色)
},
}, },
// 基础字段 // 基础字段
{ {

View File

@ -135,6 +135,9 @@ export interface FieldConfig {
textAlign?: 'left' | 'center' | 'right'; // 文字对齐方式(用于 text 组件) textAlign?: 'left' | 'center' | 'right'; // 文字对齐方式(用于 text 组件)
fontSize?: number; // 文字大小(用于 text 组件) fontSize?: number; // 文字大小(用于 text 组件)
textColor?: string; // 文字颜色(用于 text 组件) textColor?: string; // 文字颜色(用于 text 组件)
showText?: boolean; // 是否显示文字(用于 divider 组件)
dividerText?: string; // 分割线文字(用于 divider 组件)
dividerColor?: string; // 分割线颜色(用于 divider 组件)
checkboxLayout?: 'horizontal' | 'vertical'; // 多选框布局方式horizontal:行内vertical:块级) checkboxLayout?: 'horizontal' | 'vertical'; // 多选框布局方式horizontal:行内vertical:块级)
columns?: number; // 栅格列数(用于 grid 组件) columns?: number; // 栅格列数(用于 grid 组件)
columnSpans?: number[]; // 栅格每列宽度(用于 grid 组件,如 [2, 18, 2]总和不超过24 columnSpans?: number[]; // 栅格每列宽度(用于 grid 组件,如 [2, 18, 2]总和不超过24