Audit.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. import React, { useEffect, useRef, useMemo, useState } from 'react';
  2. import { Button, Tabs } from 'antd';
  3. import { connect } from 'umi';
  4. import Flow from '@/components/Flow';
  5. import AuditForm from '@/components/AuditForm';
  6. import { useModel } from '@umijs/max';
  7. import PageContent from '@/components/PageContent';
  8. function Audit(props) {
  9. const {
  10. dispatch,
  11. formItems,
  12. formData,
  13. flowDetail,
  14. simpleFlowDteail,
  15. loading,
  16. } = props;
  17. const [tabActiveKey, setTabActiveKey] = useState('1');
  18. const ref = useRef();
  19. const { initialState } = useModel('@@initialState');
  20. const user = initialState?.user || {};
  21. const permission = user?.Permission || {};
  22. const curItem = useMemo(() => {
  23. let item = {};
  24. try {
  25. item = JSON.parse(localStorage.getItem('currentAudit'));
  26. } catch (e) {}
  27. return item;
  28. }, [1]);
  29. const editMode = useMemo(() => {
  30. // 判断是否有权限
  31. if (permission['func-01-point-bom-flow']) {
  32. return 1;
  33. }
  34. // 判断是否为创建者
  35. if (user?.IsSuper) {
  36. return 1;
  37. }
  38. return 2;
  39. }, [permission, flowDetail]);
  40. useEffect(() => {
  41. dispatch({
  42. type: 'flow/queryProcessFlows',
  43. payload: { ids: Number(curItem.id) },
  44. });
  45. dispatch({
  46. type: 'user/getRoleList',
  47. });
  48. dispatch({
  49. type: 'user/fetch',
  50. });
  51. dispatch({
  52. type: 'user/fetchDepV2',
  53. });
  54. }, []);
  55. const onChange = (values) => {
  56. dispatch({
  57. type: 'xflow/save',
  58. payload: {
  59. formData: values,
  60. },
  61. });
  62. };
  63. const handleSaveClick = async () => {
  64. //只修改表单不渲染xflow getGraphData方法找不到,保存接口返回的flowDetail数据
  65. if (!ref.current?.getGraphData) {
  66. let param = {
  67. // name: curItem.name,
  68. id: Number(curItem.id),
  69. form_json: JSON.stringify(formItems),
  70. process_json: JSON.stringify(flowDetail),
  71. process_simple_json: simpleFlowDteail,
  72. };
  73. dispatch({ type: 'flow/saveAuditFlowInfo', payload: param });
  74. return;
  75. }
  76. await ref.current?.getGraphData?.((data, simpleNodes) => {
  77. let param = {
  78. // name: curItem.name,
  79. id: Number(curItem.id),
  80. form_json: JSON.stringify(formItems),
  81. process_json: data,
  82. process_simple_json: simpleNodes,
  83. };
  84. dispatch({ type: 'flow/saveAuditFlowInfo', payload: param });
  85. });
  86. };
  87. return (
  88. <PageContent
  89. extra={[
  90. <Button
  91. key={1}
  92. loading={loading['flow/saveAuditFlowInfo']}
  93. type="primary"
  94. onClick={handleSaveClick}
  95. >
  96. 保存
  97. </Button>,
  98. ]}
  99. header={{
  100. title: curItem.name,
  101. }}
  102. tabActiveKey={tabActiveKey}
  103. onTabChange={setTabActiveKey}
  104. tabList={[
  105. {
  106. tab: '表单设计',
  107. key: '1',
  108. },
  109. {
  110. tab: '流程控制',
  111. key: '2',
  112. },
  113. ]}
  114. >
  115. {tabActiveKey === '1' && (
  116. <AuditForm value={formData} onChange={onChange} />
  117. )}
  118. {tabActiveKey === '2' && (
  119. <Flow
  120. meta={{ type: 'edit', editMode, flowId: curItem.id }}
  121. flowDetail={flowDetail}
  122. ref={ref}
  123. />
  124. )}
  125. </PageContent>
  126. );
  127. }
  128. export default connect(({ flow, loading, user, xflow }) => ({
  129. roleList: flow.roleList,
  130. loading: loading.effects,
  131. formItems: xflow.formData,
  132. flowDetail: flow.flowDetail,
  133. formData: flow.formData,
  134. simpleFlowDteail: flow.simpleFlowDteail,
  135. userList: user.list,
  136. }))(Audit);