Audit.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import React, { useState, useEffect, useRef, useMemo } from 'react';
  2. import { Form, Select, Button, Table, Input, Checkbox, Divider, Tabs } from 'antd';
  3. import { connect } from 'dva';
  4. import AuditNodeModal from './AuditNodeModal';
  5. import AuditModal from './AuditModal';
  6. import styles from './Audit.less';
  7. import router from 'umi/router';
  8. import Flow, { FLOW_TYPE } from '@/components/Flow';
  9. import AuditForm from '@/components/AuditForm';
  10. import { async } from '@antv/x6/lib/registry/marker/async';
  11. const { Option } = Select;
  12. const { TabPane } = Tabs;
  13. const FLOWID = 2;
  14. function Audit(props) {
  15. const { roleList, currentItem, dispatch, formItems, formData, flowDetail } = props;
  16. const ref = useRef();
  17. const curItem = useMemo(() => {
  18. return currentItem || localStorage.getItem('currentAudit');
  19. }, [currentItem, localStorage.getItem('currentAudit')]);
  20. useEffect(() => {
  21. dispatch({
  22. type: 'flow/queryProcessFlows',
  23. payload: { ids: Number(curItem.id) },
  24. });
  25. dispatch({
  26. type: 'flow/fetchDepV2',
  27. });
  28. // dispatch({
  29. // type: 'user/fetchDepV2',
  30. // });
  31. }, []);
  32. const onChange = values => {
  33. dispatch({
  34. type: 'xflow/save',
  35. payload: {
  36. formData: values,
  37. },
  38. });
  39. };
  40. const handleSaveClick = async () => {
  41. const data = await ref.current.getGraphData((data, simpleNodes) => {
  42. let param = {
  43. // name: curItem.name,
  44. id: Number(curItem.id),
  45. form_json: JSON.stringify(formItems),
  46. process_json: data,
  47. process_simple_json: simpleNodes,
  48. };
  49. dispatch({ type: 'flow/saveAuditFlowInfo', payload: param });
  50. });
  51. };
  52. return (
  53. <div style={{ position: 'relative' }}>
  54. <p>{curItem.name}</p>
  55. <Tabs defaultActiveKey="1">
  56. <TabPane tab="表单设计" key="1">
  57. <AuditForm value={formData} onChange={values => onChange(values)} />
  58. </TabPane>
  59. <TabPane tab="流程控制" key="2">
  60. <Flow meta={{ type: 'edit', flowId: curItem.id }} flowDetail={flowDetail} ref={ref} />
  61. </TabPane>
  62. </Tabs>
  63. <Button
  64. type="primary"
  65. onClick={handleSaveClick}
  66. style={{ position: 'absolute', right: 0, top: 0 }}
  67. >
  68. 保存
  69. </Button>
  70. </div>
  71. );
  72. }
  73. export default connect(({ flow, loading, xflow }) => ({
  74. roleList: flow.roleList,
  75. currentItem: flow.current,
  76. loading: loading.models.purchaseList2,
  77. formItems: xflow.formData,
  78. flowDetail: flow.flowDetail,
  79. formData: flow.formData,
  80. }))(Audit);