1
This commit is contained in:
parent
d7c6af621b
commit
57f1a8d90f
@ -192,6 +192,11 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
minScale: 0.2,
|
minScale: 0.2,
|
||||||
maxScale: 2,
|
maxScale: 2,
|
||||||
},
|
},
|
||||||
|
edgeMovable: true, // 允许边移动
|
||||||
|
edgeLabelMovable: true, // 允许边标签移动
|
||||||
|
vertexAddable: true, // 允许添加顶点
|
||||||
|
vertexMovable: true, // 允许顶点移动
|
||||||
|
vertexDeletable: true, // 允许删除顶点
|
||||||
});
|
});
|
||||||
|
|
||||||
// 注册插件
|
// 注册插件
|
||||||
@ -273,7 +278,7 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
// 扩展 graph 对象,添加 history 属性
|
// 扩展 graph 对象,添加 history 属性
|
||||||
(graph as any).history = history;
|
(graph as any).history = history;
|
||||||
|
|
||||||
// 监听图形变化
|
// 监听图形化
|
||||||
graph.on('cell:added', ({cell}) => {
|
graph.on('cell:added', ({cell}) => {
|
||||||
const canUndo = history.canUndo();
|
const canUndo = history.canUndo();
|
||||||
const canRedo = history.canRedo();
|
const canRedo = history.canRedo();
|
||||||
@ -573,7 +578,7 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
// 合并节点定义和已保存的配置
|
// 合并节点定义和已保存的配置
|
||||||
const mergedNodeDefinition = {
|
const mergedNodeDefinition = {
|
||||||
...nodeDefinition, // 基础定义
|
...nodeDefinition, // 基础定义
|
||||||
...savedConfig, // 已保存的配置(从后端加载的)
|
...savedConfig, // 已保存的配置(从端加载的)
|
||||||
...node.getProp('graph') || {} // 当前会话中的修改(如果有)
|
...node.getProp('graph') || {} // 当前会话中的修改(如果有)
|
||||||
};
|
};
|
||||||
setSelectedNode(node);
|
setSelectedNode(node);
|
||||||
@ -656,10 +661,13 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 添加边的右键菜单
|
// 添加边的右键菜单
|
||||||
graph.on('edge:contextmenu', ({cell, view, e}) => {
|
graph.on('edge:contextmenu', ({cell: edge, view, e}) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
graph.cleanSelection();
|
graph.cleanSelection();
|
||||||
graph.select(cell);
|
graph.select(edge);
|
||||||
|
|
||||||
|
const sourceNode = graph.getCellById(edge.getSourceCellId());
|
||||||
|
const isFromGateway = sourceNode.getProp('nodeType') === 'GATEWAY_NODE';
|
||||||
|
|
||||||
const dropdownContainer = document.createElement('div');
|
const dropdownContainer = document.createElement('div');
|
||||||
dropdownContainer.style.position = 'absolute';
|
dropdownContainer.style.position = 'absolute';
|
||||||
@ -687,16 +695,27 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const items = [
|
const items = [
|
||||||
|
// 只有网关节点的出线才显示编辑条件选项
|
||||||
|
...(isFromGateway ? [{
|
||||||
|
key: 'edit',
|
||||||
|
label: '编辑条件',
|
||||||
|
onClick: () => {
|
||||||
|
closeMenu();
|
||||||
|
setSelectedEdge(edge);
|
||||||
|
setExpressionModalVisible(true);
|
||||||
|
}
|
||||||
|
}] : []),
|
||||||
{
|
{
|
||||||
key: '1',
|
key: 'delete',
|
||||||
label: '删除',
|
label: '删除',
|
||||||
|
danger: true,
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
closeMenu();
|
closeMenu();
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title: '确认删除',
|
title: '确认删除',
|
||||||
content: '确定要删除该连接线吗?',
|
content: '确定要删除该连接线吗?',
|
||||||
onOk: () => {
|
onOk: () => {
|
||||||
cell.remove();
|
edge.remove();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -835,7 +854,7 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 连线工具移除
|
// <EFBFBD><EFBFBD><EFBFBD>线工具移除
|
||||||
graph.on('edge:unselected', ({edge}) => {
|
graph.on('edge:unselected', ({edge}) => {
|
||||||
edge.removeTools();
|
edge.removeTools();
|
||||||
});
|
});
|
||||||
@ -872,13 +891,36 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// 添加边的双击事件
|
// 边选中时添加编辑工具
|
||||||
graph.on('edge:dblclick', ({ edge }) => {
|
graph.on('edge:selected', ({ edge }) => {
|
||||||
const sourceNode = graph.getCellById(edge.getSourceCellId());
|
edge.addTools([
|
||||||
if (sourceNode.getProp('nodeType') === 'GATEWAY_NODE') {
|
{
|
||||||
setSelectedEdge(edge);
|
name: 'vertices', // 顶点工具
|
||||||
setExpressionModalVisible(true);
|
args: {
|
||||||
|
padding: 4,
|
||||||
|
attrs: {
|
||||||
|
fill: '#fff',
|
||||||
|
stroke: '#5F95FF',
|
||||||
|
strokeWidth: 1,
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'segments', // 线段工具
|
||||||
|
args: {
|
||||||
|
attrs: {
|
||||||
|
fill: '#fff',
|
||||||
|
stroke: '#5F95FF',
|
||||||
|
strokeWidth: 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 边取消选中时移除工具
|
||||||
|
graph.on('edge:unselected', ({ edge }) => {
|
||||||
|
edge.removeTools();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -927,7 +969,7 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
setNodeDefinitions(data);
|
setNodeDefinitions(data);
|
||||||
setIsNodeDefinitionsLoaded(true);
|
setIsNodeDefinitionsLoaded(true);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('加载节点定义失败:', error);
|
console.error('加载节点定义<EFBFBD><EFBFBD><EFBFBD>败:', error);
|
||||||
message.error('加载节点定义失败');
|
message.error('加载节点定义失败');
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user