1
This commit is contained in:
parent
9cf6dde2bd
commit
ad399901d5
@ -4,7 +4,6 @@ import { Row, Col, Menu, Tabs, Card, Button, message } from 'antd';
|
||||
import { BetaSchemaForm, ProForm, ProFormGroup, ProFormText, ProFormTextArea } from '@ant-design/pro-form';
|
||||
import type { NodeDesignData } from './types';
|
||||
import * as service from './service';
|
||||
import { useParams, useLocation } from 'react-router-dom';
|
||||
|
||||
// Tab 配置
|
||||
const TAB_CONFIG = [
|
||||
@ -16,7 +15,7 @@ const TAB_CONFIG = [
|
||||
|
||||
const NodeDesignForm: React.FC = () => {
|
||||
// 缓存节点定义数据
|
||||
const [nodeDesignData, setNodeDesignData] = useState<NodeDesignData[]>([]);
|
||||
const [nodeDefinitions, setNodeDefinitions] = useState<NodeDesignData[]>([]);
|
||||
const [loading, setLoading] = useState(false);
|
||||
// 当前选中的节点
|
||||
const [selectedNode, setSelectedNode] = useState<NodeDesignData | null>(null);
|
||||
@ -26,40 +25,39 @@ const NodeDesignForm: React.FC = () => {
|
||||
const formRef = useRef<any>();
|
||||
const uiFormRef = useRef<any>(); // 添加 UI 配置表单的 ref
|
||||
|
||||
const { nodeCode } = useParams();
|
||||
const location = useLocation();
|
||||
const nodeData = location.state?.nodeData;
|
||||
|
||||
// 加载节点定义数据
|
||||
useEffect(() => {
|
||||
const loadData = async () => {
|
||||
if (nodeCode && !nodeData) {
|
||||
const loadNodeDefinitions = async () => {
|
||||
try {
|
||||
const data = await service.getNodeDesign(nodeCode);
|
||||
setSelectedNode(data);
|
||||
} catch (error) {
|
||||
console.error('Failed to load node design:', error);
|
||||
message.error('加载节点设计失败');
|
||||
setLoading(true);
|
||||
const data = await service.getNodeDefinitionsDefined();
|
||||
setNodeDefinitions(data);
|
||||
// 默认选中第一个节点
|
||||
if (data.length > 0) {
|
||||
setSelectedNode(data[0]);
|
||||
}
|
||||
} else if (nodeData) {
|
||||
setSelectedNode(nodeData);
|
||||
} catch (error) {
|
||||
console.error('加载节点定义失败:', error);
|
||||
} finally {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
loadData();
|
||||
}, [nodeCode, nodeData]);
|
||||
|
||||
loadNodeDefinitions();
|
||||
}, []);
|
||||
|
||||
// 获取当前节点可用的 Tab 列表
|
||||
const getAvailableTabs = (node: NodeDesignData | null) => {
|
||||
const getAvailableTabs = (node: NodeDefinitionData | null) => {
|
||||
if (!node) return [];
|
||||
return TAB_CONFIG.filter(tab => {
|
||||
const value = node[tab.schemaKey as keyof NodeDesignData];
|
||||
const value = node[tab.schemaKey as keyof NodeDefinitionData];
|
||||
return value !== null && value !== undefined;
|
||||
});
|
||||
};
|
||||
|
||||
// 处理节点选择
|
||||
const handleNodeSelect = (nodeCode: string) => {
|
||||
const node = nodeDesignData.find(n => n.nodeCode === nodeCode);
|
||||
const node = nodeDefinitions.find(n => n.nodeCode === nodeCode);
|
||||
if (node) {
|
||||
setSelectedNode(node);
|
||||
// 获取可用的 tab 列表
|
||||
@ -349,7 +347,7 @@ const NodeDesignForm: React.FC = () => {
|
||||
<Menu
|
||||
mode="vertical"
|
||||
selectedKeys={[selectedNode?.nodeCode || '']}
|
||||
items={nodeDesignData.map(node => ({
|
||||
items={nodeDefinitions.map(node => ({
|
||||
key: node.nodeCode,
|
||||
label: `${node.nodeName}(${node.nodeCode})`,
|
||||
}))}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user