Audit.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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 {
  16. roleList,
  17. currentItem,
  18. dispatch,
  19. formItems,
  20. formData,
  21. flowDetail,
  22. simpleFlowDteail,
  23. } = props;
  24. const ref = useRef();
  25. const curItem = useMemo(() => {
  26. let item = localStorage.getItem('currentAudit');
  27. return JSON.stringify(currentItem) == '{}' ? JSON.parse(item) : currentItem;
  28. }, [currentItem, localStorage.getItem('currentAudit')]);
  29. useEffect(() => {
  30. dispatch({
  31. type: 'flow/queryProcessFlows',
  32. payload: { ids: Number(curItem.id) },
  33. });
  34. dispatch({
  35. type: 'user/getRoleList',
  36. });
  37. dispatch({
  38. type: 'user/fetch',
  39. });
  40. dispatch({
  41. type: 'user/fetchDepV2',
  42. });
  43. }, []);
  44. const onChange = values => {
  45. dispatch({
  46. type: 'xflow/save',
  47. payload: {
  48. formData: values,
  49. },
  50. });
  51. };
  52. const handleSaveClick = async () => {
  53. //只修改表单不渲染xflow getGraphData方法找不到,保存接口返回的flowDetail数据
  54. if (!ref.current?.getGraphData) {
  55. let param = {
  56. // name: curItem.name,
  57. id: Number(curItem.id),
  58. form_json: JSON.stringify(formItems),
  59. process_json: JSON.stringify(flowDetail),
  60. process_simple_json: simpleFlowDteail,
  61. };
  62. dispatch({ type: 'flow/saveAuditFlowInfo', payload: param });
  63. return;
  64. }
  65. await ref.current?.getGraphData?.((data, simpleNodes) => {
  66. let param = {
  67. // name: curItem.name,
  68. id: Number(curItem.id),
  69. form_json: JSON.stringify(formItems),
  70. process_json: data,
  71. process_simple_json: simpleNodes,
  72. };
  73. dispatch({ type: 'flow/saveAuditFlowInfo', payload: param });
  74. });
  75. };
  76. return (
  77. <div style={{ position: 'relative' }}>
  78. <p>{curItem.name}</p>
  79. <Tabs defaultActiveKey="1">
  80. <TabPane tab="表单设计" key="1">
  81. <AuditForm value={formData} onChange={values => onChange(values)} />
  82. </TabPane>
  83. <TabPane tab="流程控制" key="2">
  84. <Flow meta={{ type: 'edit', flowId: curItem.id }} flowDetail={flowDetail} ref={ref} />
  85. </TabPane>
  86. </Tabs>
  87. <Button
  88. type="primary"
  89. onClick={handleSaveClick}
  90. style={{ position: 'absolute', right: 0, top: 0 }}
  91. >
  92. 保存
  93. </Button>
  94. </div>
  95. );
  96. }
  97. export default connect(({ flow, loading, xflow }) => ({
  98. roleList: flow.roleList,
  99. currentItem: flow.current,
  100. loading: loading.models.purchaseList2,
  101. formItems: xflow.formData,
  102. flowDetail: flow.flowDetail,
  103. formData: flow.formData,
  104. simpleFlowDteail: flow.simpleFlowDteail,
  105. }))(Audit);