OaAuditDetail.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // 审批详情
  2. import React, { useEffect, useState, useRef, useMemo } from 'react';
  3. import { Steps, Button, Tooltip } from 'antd';
  4. import { useParams, useRequest, useNavigate, useModel } from 'umi';
  5. import AuditModal from './components/AuditModal';
  6. import FormAndFilesNode from './components/FormAndFilesNode';
  7. import { queryAuditDetail, audit } from '@/services/boom';
  8. import PageContent from '@/components/PageContent';
  9. function OaAuditDetail(props) {
  10. const [auditVisible, setAuditVisible] = useState(false);
  11. const { oaId, id } = useParams();
  12. const { data, loading, refresh } = useRequest(queryAuditDetail, {
  13. defaultParams: [{ id }],
  14. });
  15. const {
  16. current_seq,
  17. form,
  18. OaAuditList,
  19. Files = [],
  20. audit_status,
  21. AuditorInfo,
  22. } = data || {};
  23. const {
  24. initialState: { user },
  25. } = useModel('@@initialState');
  26. const getDescription = (node) => {
  27. let str = node?.AuditRoleInfo
  28. ? `审批人:${node?.AuditRoleInfo.Name || '-'}`
  29. : `审批人:${node?.AuditorUser.CName || '-'}`;
  30. if (node.desc) {
  31. return (
  32. <div>
  33. {str}
  34. <div>
  35. <Tooltip title={node.desc}>
  36. <span style={{ color: '#1A73E8', textDecoration: 'undeline' }}>
  37. 审批意见
  38. </span>
  39. </Tooltip>
  40. </div>
  41. </div>
  42. );
  43. }
  44. return str;
  45. };
  46. const btns = useMemo(() => {
  47. if (!user || !data) return;
  48. if (
  49. user.ID == AuditorInfo?.ID &&
  50. // 0 待审核; 1 上级审批通过
  51. (audit_status === 0 || audit_status === 1)
  52. ) {
  53. return [
  54. <Button
  55. key={1}
  56. style={{ marginRight: 10 }}
  57. type="primary"
  58. onClick={() => setAuditVisible(1)}
  59. >
  60. 审批通过
  61. </Button>,
  62. <Button key={2} onClick={() => setAuditVisible(2)} danger>
  63. 审批拒绝
  64. </Button>,
  65. ];
  66. }
  67. return [];
  68. }, [user, data]);
  69. return (
  70. <PageContent extra={btns} loading={loading}>
  71. <Steps
  72. style={{ marginBottom: 20 }}
  73. current={audit_status == 3 ? OaAuditList.length : current_seq - 1}
  74. status={audit_status == 2 ? 'error' : 'process'}
  75. items={OaAuditList?.map((item) => ({
  76. title: item.seq_name,
  77. description: getDescription(item),
  78. }))}
  79. ></Steps>
  80. <FormAndFilesNode formData={form} fileList={Files} />
  81. <AuditModal
  82. id={id}
  83. visible={auditVisible}
  84. onClose={() => setAuditVisible(false)}
  85. onOk={refresh}
  86. />
  87. </PageContent>
  88. );
  89. }
  90. export default OaAuditDetail;