FlowModal.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import React, { useEffect, useState, useRef, useMemo } from 'react';
  2. import { Modal, Input, Select, List } from 'antd';
  3. import Flow from '@/components/Flow/index';
  4. import { connect } from 'dva';
  5. import { GetTokenFromUrl, getToken } from '@/utils/utils';
  6. import { MODELS, useXFlowApp, useModelAsync } from '@antv/xflow';
  7. const { TextArea } = Input;
  8. const localData = JSON.parse(localStorage.ggDetaiData || '{}');
  9. // 提交
  10. function FlowModal(props) {
  11. const { visible, onClose, onChangeVersion, form, loading, flowDetail, versionList } = props;
  12. const [data, setData] = useState([]);
  13. const graphData = useMemo(() => {
  14. let nodes = flowDetail.nodes.map(item => ({
  15. ...item,
  16. version: versionList.filter(version => version.template_node_id == item.Id) || [],
  17. }));
  18. return {
  19. nodes,
  20. edges: flowDetail.edges,
  21. };
  22. }, [flowDetail, versionList]);
  23. const handleSelectNode = node => {
  24. console.log(node);
  25. setData(node.version);
  26. };
  27. return (
  28. <Modal
  29. confirmLoading={loading}
  30. destroyOnClose
  31. title="流程图"
  32. visible={visible}
  33. onCancel={onClose}
  34. footer={false}
  35. width="80%"
  36. >
  37. <Flow meta={{ type: 'view' }} flowDetail={graphData} onSelectNode={handleSelectNode} />
  38. <List
  39. size="small"
  40. header={<div>版本列表</div>}
  41. bordered
  42. dataSource={data}
  43. style={{ marginTop: 20 }}
  44. renderItem={item => (
  45. <List.Item
  46. actions={[
  47. <a
  48. onClick={() => {
  49. onChangeVersion(item);
  50. onClose();
  51. }}
  52. >
  53. 切换
  54. </a>,
  55. ]}
  56. >
  57. {item.version_name}
  58. </List.Item>
  59. )}
  60. />
  61. </Modal>
  62. );
  63. }
  64. export default connect(({ xflow, detail }) => ({
  65. flowDetail: xflow.flowDetail,
  66. versionList: detail.versionList,
  67. }))(FlowModal);