This commit is contained in:
dengqichen 2024-12-30 17:35:58 +08:00
parent a5e58d9e10
commit d02ad72d92

View File

@ -44,12 +44,14 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
}) => { }) => {
const [panelValues, setPanelValues] = React.useState<Variables>({}); const [panelValues, setPanelValues] = React.useState<Variables>({});
const [localValues, setLocalValues] = React.useState<Variables>({}); const [localValues, setLocalValues] = React.useState<Variables>({});
const [formValues, setFormValues] = React.useState<Variables>({});
useEffect(() => { useEffect(() => {
if (nodeDefinition) { if (nodeDefinition) {
// 使用 convertJsonSchemaToColumns 获取字段配置 // 使用 convertJsonSchemaToColumns 获取字段配置
const panelColumns = convertJsonSchemaToColumns(nodeDefinition.panelVariablesSchema || { type: 'object', properties: {} }); const panelColumns = convertJsonSchemaToColumns(nodeDefinition.panelVariablesSchema || { type: 'object', properties: {} });
const localColumns = convertJsonSchemaToColumns(nodeDefinition.localVariablesSchema || { type: 'object', properties: {} }); const localColumns = convertJsonSchemaToColumns(nodeDefinition.localVariablesSchema || { type: 'object', properties: {} });
const formColumns = convertJsonSchemaToColumns(nodeDefinition.formVariablesSchema || { type: 'object', properties: {} });
// 初始化表单值,包括默认值 // 初始化表单值,包括默认值
const initialPanelValues = panelColumns.reduce((acc, column) => { const initialPanelValues = panelColumns.reduce((acc, column) => {
@ -66,6 +68,13 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
return acc; return acc;
}, {} as Variables); }, {} as Variables);
const initialFormValues = formColumns.reduce((acc, column) => {
if (column.initialValue !== undefined) {
acc[column.dataIndex] = column.initialValue;
}
return acc;
}, {} as Variables);
// 设置初始值 // 设置初始值
setPanelValues({ setPanelValues({
...initialPanelValues, ...initialPanelValues,
@ -75,14 +84,21 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
...initialLocalValues, ...initialLocalValues,
...(nodeDefinition.localVariables || {}) ...(nodeDefinition.localVariables || {})
}); });
setFormValues({
...initialFormValues,
...(nodeDefinition.formVariables || {})
});
// 打印调试信息 // 打印调试信息
console.log('Panel Columns:', panelColumns); console.log('Panel Columns:', panelColumns);
console.log('Local Columns:', localColumns); console.log('Local Columns:', localColumns);
console.log('Form Columns:', formColumns);
console.log('Initial Panel Values:', initialPanelValues); console.log('Initial Panel Values:', initialPanelValues);
console.log('Initial Local Values:', initialLocalValues); console.log('Initial Local Values:', initialLocalValues);
console.log('Initial Form Values:', initialFormValues);
console.log('Node Definition Panel Variables:', nodeDefinition.panelVariables); console.log('Node Definition Panel Variables:', nodeDefinition.panelVariables);
console.log('Node Definition Local Variables:', nodeDefinition.localVariables); console.log('Node Definition Local Variables:', nodeDefinition.localVariables);
console.log('Node Definition Form Variables:', nodeDefinition.formVariables);
} }
}, [nodeDefinition]); }, [nodeDefinition]);
@ -90,7 +106,8 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
const updatedNodeDefinition = { const updatedNodeDefinition = {
...nodeDefinition, ...nodeDefinition,
panelVariables: panelValues, panelVariables: panelValues,
localVariables: localValues localVariables: localValues,
formVariables: formValues
}; };
onOk(updatedNodeDefinition); onOk(updatedNodeDefinition);
}; };
@ -168,6 +185,10 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
setLocalValues(prev => ({...prev, [key]: value})); setLocalValues(prev => ({...prev, [key]: value}));
}; };
const handleFormChange = (key: string, value: any) => {
setFormValues(prev => ({...prev, [key]: value}));
};
const items: TabsProps['items'] = [ const items: TabsProps['items'] = [
nodeDefinition?.panelVariablesSchema && { nodeDefinition?.panelVariablesSchema && {
key: 'panel', key: 'panel',
@ -186,6 +207,15 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
{renderFormFields(nodeDefinition.localVariablesSchema, localValues, handleLocalChange)} {renderFormFields(nodeDefinition.localVariablesSchema, localValues, handleLocalChange)}
</div> </div>
) )
},
nodeDefinition?.formVariablesSchema && {
key: 'form',
label: '表单配置(预览)',
children: (
<div className="space-y-4">
{renderFormFields(nodeDefinition.formVariablesSchema, formValues, handleFormChange)}
</div>
)
} }
].filter(Boolean) as TabsProps['items']; ].filter(Boolean) as TabsProps['items'];