CommitAuditModalNew.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. import React, { useEffect, useState, useRef, useMemo } from 'react';
  2. import { Form } from '@ant-design/compatible';
  3. import '@ant-design/compatible/assets/index.css';
  4. import { Modal, Input, Select, message } from 'antd';
  5. import { connect } from 'dva';
  6. const { TextArea } = Input;
  7. const { Option } = Select;
  8. // 提交
  9. function CommitAuditModal(props) {
  10. const { visible, onClose, onOk, form, loading, version, versionList, flowDetail } = props;
  11. const [auditId, setAuditId] = useState();
  12. const handleOk = () => {
  13. form.validateFields((err, fieldsValue) => {
  14. console.log("-------",fieldsValue )
  15. if (err) return;
  16. let approvalNode = flowDetail.nodes.find?.(item => item.Id == fieldsValue.node_id);
  17. let serviceNode = flowDetail.nodes.find?.(
  18. item => item.Id == fieldsValue.next_template_node_id
  19. );
  20. let params = {
  21. desc: fieldsValue.desc,
  22. // 审核流程id
  23. flow_id: approvalNode?.flow_id || 0,
  24. node_level_id: approvalNode?.flow_id ? 1 : 0,
  25. id: version.id,
  26. project_id: version.project_id,
  27. cur_template_node_id: version.template_node_id * 1, // 当前节点
  28. template_node_id: approvalNode?.Id, // 将要流转的节点审批节点
  29. next_template_node_id: serviceNode.Id * 1, // 审核完成后的业务节点
  30. // 模板id.一致就行
  31. template_id: version.template_id,
  32. cur_template_id: version.template_id,
  33. next_template_id: version.template_id,
  34. };
  35. if (approvalNode?.Id) {
  36. if (!approvalNode?.flow_id) {
  37. message.error('审批节点未绑定审批流程!请联系管理员。');
  38. return;
  39. }
  40. }
  41. // // 判断业务节点是否允许多清单
  42. // if (!serviceNode.muti_version) {
  43. // //audit_status=4 表示为清单推进后留存的副本.不计入多清单计算
  44. // let serviceVersion = versionList.find(
  45. // item => item.audit_status != 4 && item.template_node_id == serviceNode.Id
  46. // );
  47. // if (serviceVersion) {
  48. // message.error(
  49. // `流转失败!业务节点【${serviceNode.label}】为单清单节点。已存在清单【${serviceVersion.version_name}】。`
  50. // );
  51. // return;
  52. // }
  53. // }
  54. setAuditId();
  55. // onOk(params);
  56. });
  57. };
  58. const currentNodeId = useMemo(() => {
  59. let Id = version.template_node_id;
  60. return flowDetail.nodes.find?.(item => item.Id == Id)?.node_id;
  61. }, [flowDetail, version]);
  62. /**
  63. *
  64. * @param {*} currentId 当前节点
  65. * @param {*} type 下一个节点的类型 custom-circle: 审批节点 custom-rect: 业务节点
  66. * @returns
  67. */
  68. const getNextNodes = (currentId, type) => {
  69. const { edges, nodes } = flowDetail;
  70. if (!currentId) return [];
  71. let targetIds = edges
  72. .filter(edge => edge.source.cell == currentId)
  73. .map(item => item.target.cell);
  74. let auditNodes = nodes.filter(node => {
  75. if (type && node.name != type) {
  76. return false;
  77. }
  78. return targetIds.indexOf(node.id) != -1;
  79. });
  80. return auditNodes || [];
  81. };
  82. const changeAudit = id => {
  83. let node = flowDetail.nodes.find?.(item => item.Id == id);
  84. setAuditId(node.node_id);
  85. };
  86. return (
  87. <Modal
  88. confirmLoading={loading}
  89. destroyOnClose
  90. title="提交流转目标"
  91. visible={visible}
  92. onCancel={() => {
  93. setAuditId();
  94. onClose();
  95. }}
  96. onOk={handleOk}
  97. >
  98. <Form.Item labelCol={{ span: 7 }} wrapperCol={{ span: 15 }} label="审批节点">
  99. {form.getFieldDecorator('node_id')(
  100. <Select style={{ width: '100%' }} onChange={changeAudit}>
  101. {getNextNodes(currentNodeId, 'custom-circle').map(item => (
  102. <Option key={item.Id}>{item.label}</Option>
  103. ))}
  104. </Select>
  105. )}
  106. </Form.Item>
  107. {/* <Form.Item labelCol={{ span: 7 }} wrapperCol={{ span: 15 }} label="审批节点2">
  108. {form.getFieldDecorator('nod_id')(
  109. <Select style={{ width: '100%' }} onChange={changeAudit}>
  110. {getNextNodes(auditId || currentNodeId, 'custom-circle').map(item => (
  111. <Option key={item.Id}>{item.label}</Option>
  112. ))}
  113. </Select>
  114. )}
  115. </Form.Item> */}
  116. <Form.Item labelCol={{ span: 7 }} wrapperCol={{ span: 15 }} label="业务节点">
  117. {form.getFieldDecorator('next_template_node_id')(
  118. <Select style={{ width: '100%' }}>
  119. {getNextNodes(auditId || currentNodeId, auditId ? 'custom-rect' : '').map(item => (
  120. <Option key={item.Id}>{item.label}</Option>
  121. ))}
  122. </Select>
  123. )}
  124. </Form.Item>
  125. <Form.Item labelCol={{ span: 7 }} wrapperCol={{ span: 15 }} label="备注信息">
  126. {form.getFieldDecorator('desc')(<Input.TextArea />)}
  127. </Form.Item>
  128. </Modal>
  129. );
  130. }
  131. export default connect(({ xflow, detail }) => ({
  132. flowDetail: xflow.flowDetail,
  133. versionList: detail.versionList,
  134. }))(Form.create()(CommitAuditModal));