// 根据状态获取颜色 export const getStatusColor = (status, type, thisFlow) => { // 如果data.thisFlow和flowItem的type相等,则显示红色 if (thisFlow && type === thisFlow) { return "#ff4d4f"; // 红色(正在审核) } // 根据状态设置颜色 switch (status) { case 0: return "#1890ff"; // 蓝色 case 1: return "#52c41a"; // 绿色 case 2: return "#52c41a"; // 绿色 default: return "#1890ff"; } }; // 获取节点标签 export const getNodeLabel = (flowItem) => { return (
{flowItem.flowList[0]}
{flowItem.flowList.slice(1).map((item, index) => (
{item}
))}
); }; export const getFlowData = (list, thisFlow) => { const nodes = []; const edges = []; // 计算节点位置以居中显示 const nodeWidth = 300; const nodeHeight = 200; const horizontalSpacing = 350; const verticalPosition = 100; // 创建节点 list.forEach((flowItem, index) => { nodes.push({ id: `node-${index}`, data: { label: getNodeLabel(flowItem), status: flowItem.status, }, style: { background: getStatusColor(flowItem.status, flowItem.type, thisFlow), color: "white", borderColor: getStatusColor(flowItem.status, flowItem.type, thisFlow), width: nodeWidth, minHeight: nodeHeight, padding: "10px", borderRadius: 5, wordBreak: "break-word", whiteSpace: "normal", display: "flex", alignItems: "center", justifyContent: "center", textAlign: "center", }, position: { x: index * horizontalSpacing, y: verticalPosition }, }); }); // 创建连接线 for (let i = 0; i < list.length - 1; i++) { edges.push({ id: `edge-${i}`, source: `node-${i}`, target: `node-${i + 1}`, type: "smoothstep", animated: true, style: { stroke: "#1890ff", strokeWidth: 2 }, markerEnd: { type: "arrowclosed", color: "#1890ff", }, }); } return { nodes, edges }; };