This commit is contained in:
dengqichen 2024-12-31 14:22:01 +08:00
parent c1ddcce3bc
commit fc88511544
5 changed files with 17 additions and 53 deletions

View File

@ -44,20 +44,11 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
}) => {
const [panelValues, setPanelValues] = React.useState<Variables>({});
const [localValues, setLocalValues] = React.useState<Variables>({});
const [formValues, setFormValues] = React.useState<Variables>({});
useEffect(() => {
if (nodeDefinition) {
console.log('nodeDefinition:', nodeDefinition);
// 使用 convertJsonSchemaToColumns 获取字段配置
console.log('nodeDefinition.panelVariablesSchema:', JSON.stringify(nodeDefinition.panelVariablesSchema, null, 2));
// 使用修改后的 schema 获取字段配置
const panelColumns = convertJsonSchemaToColumns(nodeDefinition.panelVariablesSchema || { type: 'object', properties: {} });
console.log('转换后的 panelColumns:', panelColumns);
const localColumns = convertJsonSchemaToColumns(nodeDefinition.localVariablesSchema || { type: 'object', properties: {} });
const formColumns = convertJsonSchemaToColumns(nodeDefinition.formVariablesSchema || { type: 'object', properties: {} });
// 初始化表单值,包括默认值
const initialPanelValues = panelColumns.reduce((acc, column) => {
if (column.initialValue !== undefined) {
@ -73,12 +64,6 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
return acc;
}, {} as Variables);
const initialFormValues = formColumns.reduce((acc, column) => {
if (column.initialValue !== undefined) {
acc[column.dataIndex] = column.initialValue;
}
return acc;
}, {} as Variables);
// 设置初始值
setPanelValues({
...initialPanelValues,
@ -93,10 +78,6 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
...initialLocalValues,
...(nodeDefinition.localVariables || {})
});
setFormValues({
...initialFormValues,
...(nodeDefinition.formVariables || {})
});
}
}, [nodeDefinition]);
@ -104,8 +85,7 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
const updatedNodeDefinition = {
...nodeDefinition,
panelVariables: panelValues,
localVariables: localValues,
formVariables: formValues
localVariables: localValues
};
onOk(updatedNodeDefinition);
};
@ -211,15 +191,6 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
{renderFormFields(nodeDefinition.localVariablesSchema, localValues, handleLocalChange)}
</div>
)
},
nodeDefinition?.formVariablesSchema && {
key: 'form',
label: '表单配置(预览)',
children: (
<div className="space-y-4">
{renderFormFields(nodeDefinition.formVariablesSchema, formValues, handleFormChange)}
</div>
)
}
].filter(Boolean) as TabsProps['items'];

View File

@ -1055,8 +1055,7 @@ const WorkflowDesign: React.FC = () => {
node.setProp('graph', {
uiVariables: existingNode.uiVariables,
panelVariables: existingNode.panelVariables,
localVariables: existingNode.localVariables,
formVariablesSchema: existingNode.formVariablesSchema
localVariables: existingNode.localVariables
});
nodeMap.set(existingNode.id, node);
});
@ -1194,7 +1193,7 @@ const WorkflowDesign: React.FC = () => {
};
// 首先添加合并 schema 的工具函数
const mergeFormVariablesSchemas = (schemas: any[]) => {
const mergeLocalVariablesSchemas = (schemas: any[]) => {
// 初始化合并后的 schema
const mergedSchema = {
type: 'object',
@ -1234,7 +1233,7 @@ const WorkflowDesign: React.FC = () => {
// 处理保存工作流
const handleSaveWorkflow = async () => {
if (!graph || !definitionData) return;
console.log(definitionData)
try {
// 校验流程图
const validationResult = validateWorkflow(graph);
@ -1247,14 +1246,16 @@ const WorkflowDesign: React.FC = () => {
const nodes = graph.getNodes().map(node => {
const nodeType = node.getProp('nodeType');
const graphData = node.getProp('graph') || {};
const nodeDefinition = nodeDefinitions.find(def => def.nodeType === nodeType);
const position = node.getPosition();
const {
uiVariables,
panelVariables,
localVariables,
formVariablesSchema,
...rest
} = graphData;
return {
id: node.id,
nodeCode: nodeType,
@ -1265,8 +1266,7 @@ const WorkflowDesign: React.FC = () => {
position: position
},
panelVariables,
localVariables,
formVariablesSchema
localVariables: nodeDefinition?.localVariablesSchema || {}
};
});
@ -1288,9 +1288,14 @@ const WorkflowDesign: React.FC = () => {
};
});
// 收集并合并所有节点的 formVariablesSchema
const allFormSchemas = nodes.map(node => node.formVariablesSchema).filter(schema => schema); // 过滤掉空值
const mergedFormSchema = mergeFormVariablesSchemas(allFormSchemas);
// 收集并合并所有节点的 localVariablesSchema
const allLocalSchemas = nodes
.map(node => {
const nodeDefinition = nodeDefinitions.find(def => def.nodeType === node.nodeType);
return nodeDefinition?.localVariablesSchema;
})
.filter(schema => schema); // 过滤掉空值
const mergedLocalSchema = mergeLocalVariablesSchemas(allLocalSchemas);
// 构建保存数据
const saveData = {
@ -1299,7 +1304,7 @@ const WorkflowDesign: React.FC = () => {
nodes,
edges
},
formVariablesSchema: mergedFormSchema
localVariablesSchema: mergedLocalSchema
};
// 调用保存接口

View File

@ -84,11 +84,3 @@ export interface NodeDefinition {
orderNum: number;
enabled: boolean;
}
// 节点列表响应
export interface NodeDefinitionResponse {
success: boolean;
message: string;
data: NodeDefinition[];
code: number;
}

View File

@ -46,7 +46,6 @@ export interface WorkflowDefinitionNode {
uiVariables: JSON;
panelVariables: JSON;
localVariables: JSON;
formVariables: JSON;
}
export interface WorkflowDefinitionQuery extends BaseQuery {

View File

@ -79,7 +79,6 @@ export interface NodeDesignDataResponse extends BaseResponse {
description: string;
panelVariablesSchema: NodeVariablesSchema | null;
localVariablesSchema: NodeVariablesSchema | null;
formVariablesSchema: NodeVariablesSchema | null;
uiVariables: UIVariables;
}
@ -106,8 +105,6 @@ export interface NodeDefinitionResponse extends BaseResponse {
panelVariablesSchema: NodeVariablesSchema | null;
uiVariables: UIVariables | null;
localVariablesSchema: NodeVariablesSchema | null;
formVariablesSchema: NodeVariablesSchema | null;
panelVariables?: Record<string, any>;
localVariables?: Record<string, any>;
formVariables?: Record<string, any>;
}