AuditProcessOneByOne.js 2.6 KB
/**
 * 批量审核一个一个的调接口 解决性能问题
 * */
import React, { useState, useEffect, useRef } from 'react';
import { Modal, Progress,message } from 'antd';
import { uaaRequest } from '@/webPublic/one_stop_public/utils/request';
import styles from './styles.less';

export default function AuditProcessOneByOne({
                                             payloadData = {},
                                             callBack = () => {
                                             },
                                             setShowProcessModal,
                                           }) {
  if (!Array.isArray(payloadData?.taskIds) || !payloadData.taskIds.length) {
    return null;
  }
  const [success, setS] = useState(0);
  const [error, setE] = useState(0);
  const resInfo = useRef();
  const taskIds = payloadData.taskIds;
  const total = taskIds.length;

  async function getData(){
    for (let g = 0; g < taskIds.length; g++) {
      const res = await returnPromise({
        ...payloadData,
        taskIds: [taskIds[g]],
      });
      if (res) {
        setS((v) => v + 1);
      } else {
        setE((v) => v + 1);
      }
      resInfo.current = res;
    }
  }

  useEffect(() => {
    getData();
  }, []);

  useEffect(() => {
    if (success + error === total) {
      callBack(resInfo.current);
    }
  }, [success, error]);


  const percent = Math.floor(((success + error) / total) * 100);
  return (
    <Modal title={'批量审核'}
           visible={true}
           width={1200}
           footer={null}
           onCancel={() => {
             if(success + error !== total){
               message.warning('审核正在进行中,请勿关闭');
             }else{
               setShowProcessModal(false);
             }
           }}
    >
      <div className={styles.juzhong}>
        <Progress percent={percent}
                  type='circle'
                  status={error === total ? 'exception' : success + error === total ? 'success ' : ''}
                  strokeColor={{
                    '0%': '#108ee9',
                    '100%': '#87d068',
                  }}
        />

        <div >
          {
            success + error === total ? `审核完成, 成功${success}条, 失败${error}条` : `正在进行审核 共${total}条数据, 成功${success}条, 失败${error}条`
          }
        </div>
      </div>


    </Modal>
  );
}

let i = 0;

function returnPromise(data) {
  // return new Promise((resolve, reject) => {
  //   i++;
  //   if (i % 2 > 0) {
  //     resolve(true);
  //   } else {
  //     resolve(false);
  //   }
  // });
  return uaaRequest('/UnifiedAppFormApi/examineProcess', data);
}