AuditModal.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import React, { useEffect, useMemo } from 'react';
  2. import { Form } from '@ant-design/compatible';
  3. import '@ant-design/compatible/assets/index.css';
  4. import { Modal, Input } from 'antd';
  5. // 审批意见
  6. function AuditModal(props) {
  7. const { flow, version, flowDetail, visible, onClose, onOk, form, sheetRef, loading } = props;
  8. const handleOk = () => {
  9. form.validateFields((err, fieldsValue) => {
  10. if (err) return;
  11. onOk({
  12. ...fieldsValue,
  13. // 3 通过审批 2 拒绝审批
  14. audit_status: visible == 1 ? 3 : 2,
  15. });
  16. });
  17. };
  18. const content = useMemo(() => {
  19. let content = '';
  20. if (visible == 1) {
  21. let isSingle = false;
  22. let serviceNode;
  23. const flowNode = flow.currentNode;
  24. const getLastTemplateNodeId = data => {
  25. let result;
  26. const getFun = item => {
  27. if (item.flow_path?.length > 0) {
  28. getFun(item.flow_path[0]);
  29. } else {
  30. result = item.template_node_id;
  31. }
  32. };
  33. if (!data) return version.template_node_id;
  34. getFun(data[0]);
  35. return result;
  36. };
  37. let lastTemplateNodeId = version.template_node_id;
  38. if (version.flow_path) {
  39. //如果多节点审批 获取当前是否审批流程的最后一个审批节点
  40. let flowPathList = JSON.parse(version.flow_path);
  41. lastTemplateNodeId = getLastTemplateNodeId(flowPathList);
  42. }
  43. // 判断是否为最后一个审批节点
  44. if (
  45. lastTemplateNodeId == version.template_node_id &&
  46. flow.current == flow.list.FlowNodes.length - 1
  47. ) {
  48. serviceNode = flowDetail.nodes.find?.(item => item.Id == version.next_template_node_id);
  49. if (!serviceNode.muti_version) {
  50. //audit_status=4 表示为清单推进后留存的副本.不计入多清单计算
  51. isSingle = versionList.find(
  52. item => item.audit_status != 4 && item.template_node_id == serviceNode.Id
  53. );
  54. }
  55. }
  56. if (isSingle) {
  57. return `节点【${serviceNode.label}】只能拥有一个清单,是否覆盖?`;
  58. }
  59. }
  60. return '';
  61. }, [visible]);
  62. useEffect(() => {
  63. if (visible) {
  64. try {
  65. const comment = sheetRef.current.getComment();
  66. console.log(comment);
  67. let str = '';
  68. comment.forEach(item => {
  69. let col = String.fromCharCode(item.c + 65);
  70. str += `单元格${col}${item.r}:${item.value}\n`;
  71. });
  72. form.setFieldsValue({ audit_comment: str });
  73. } catch (error) {}
  74. }
  75. }, [visible]);
  76. return (
  77. <Modal
  78. confirmLoading={loading}
  79. destroyOnClose
  80. title={visible == 1 ? '是否确认通过审批?' : '是否确认拒绝审批?'}
  81. visible={visible}
  82. onCancel={onClose}
  83. onOk={handleOk}
  84. >
  85. <p>{content}</p>
  86. <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} label="审批意见">
  87. {form.getFieldDecorator('audit_comment')(<Input.TextArea />)}
  88. </Form.Item>
  89. </Modal>
  90. );
  91. }
  92. export default Form.create()(AuditModal);