/* eslint-disable */ /* eslint-disable prefer-destructuring,no-await-in-loop,radix,,no-loop-func */ import React, { useState, useCallback, useNodes } from 'react'; import { Button, Modal, Input } from 'antd-v4'; import ReactFlow, { addEdge, MiniMap, Controls, Background, useNodesState, useEdgesState, } from 'react-flow-renderer'; import * as commonutils from '../../../utils/utils' import './flows.less' import { MarkerType } from 'react-flow-renderer'; import { connect } from "umi" const getNodeId = () => `randomnode_${+new Date()}`; const OverviewFlow = (props) => { const { flowData} = props; let initialNodes =[]; let initialEdges =[]; if(commonutils.isNotEmptyObject(flowData)) { initialNodes = flowData.initialNodes; initialEdges = flowData.initialEdges; if (commonutils.isNotEmptyArr(initialNodes)) { initialNodes.forEach((item) =>{ const labelObj= ( ) if(!(commonutils.isNotEmptyObject(item) && commonutils.isNotEmptyObject(item.data) && commonutils.isNotEmptyObject(item.data.label) && commonutils.isNotEmptyObject(item.data.label.props) && item.data.label.props.dangerouslySetInnerHTML)) { item.data.label= labelObj; } }); } if (commonutils.isNotEmptyArr(initialEdges)) { initialEdges.forEach((item) => { if (commonutils.isNotEmptyStr(item.markerEnd)) { const markerObj = { type: MarkerType.ArrowClosed, } item.markerEnd = markerObj } }) } } // eslint-disable-next-line no-unused-vars const [nodes, setNodes, onNodesChange] = useNodesState(initialNodes); const [edges, setEdges, onEdgesChange] = useEdgesState(initialEdges); const [rfInstance, setRfInstance] = useState(null); const [label, setlabel, onsetlabelChange] = useState(''); const [value, setvalue, onsetvalueChange] = useState('') const [flowColor, setflowColor, onsetflowColor] = useState('') const [flowdata, delflowdata, ondelflowdata] = useState({}) const [isModalVisible, setIsModalVisible] = useState(false); const onConnect = useCallback((params) => setEdges((eds) => addEdge(params, eds)), [setEdges]); const onAdd = (e) => { //添加部件 setvalue('') setIsModalVisible(true); if (e.currentTarget.id === 'AddSole') { setflowColor('#f7b501') } else if (e.currentTarget.id === 'AddPortalBundle') { setflowColor('#fe7e83') } else if (e.currentTarget.id === 'AddClaim') { setflowColor('#00ff41') } }; const handleOk = () => { setIsModalVisible(false); const newNode = { id: getNodeId(), sourcePosition: 'right', targetPosition: 'left', type: 'step', data: { label: label }, style: { background: flowColor, width: '150px', height: '80px', fontWeight: 700, }, position: { x: Math.random() * window.innerWidth - 100, y: Math.random() * window.innerHeight, }, }; setNodes((nds) => nds.concat(newNode)); }; const handleCancel = () => { setIsModalVisible(false); }; const onSave = useCallback(() => { //保存部件 if (rfInstance) { const flow = rfInstance.toObject(); localStorage.setItem(flow, JSON.stringify(flow)); } }, [rfInstance]); const handleChangeValue = useCallback((e) => { setvalue(e.target.value) setlabel(e.target.value) }) const onNodeClick = (e, node) => { // delflowdata(node); } const onDel = () => { //删除部件 let newnodes = nodes.filter(item => item.id !== flowdata.id) setNodes(newnodes) } const onMadl = () => { alert('二期项目') } return ( onNodeClick(e, node)} >
handleChangeValue(e)} value={value} />
{ if (n.style?.background) return n.style.background; if (n.type === 'input') return '#0041d0'; if (n.type === 'output') return '#ff0072'; if (n.type === 'default') return '#1a192b'; return '#eee'; }} nodeColor={(n) => { if (n.style?.background) return n.style.background; return '#fff'; }} nodeBorderRadius={2} />
); }; export default connect()(OverviewFlow) // export default () => ( // // // // );