CheckModal.tsx 3.86 KB
import { RESPONSE_CODE } from '@/constants/enum';
import {
  postServiceOrderCheckOrder,
  postServiceOrderFinanceCheckOrder,
} from '@/services';
import { ModalForm, ProFormTextArea } from '@ant-design/pro-components';
import { Button, Form, message } from 'antd';
import { CHECK_TYPE } from '../constant';
export default ({
  setCheckVisible,
  data,
  subOrders,
  orderCheckType,
  onClose,
}) => {
  const [form] = Form.useForm<{ name: string; company: string }>();
  let subOrderIds: any[] = [];
  //是单条子订单审核
  if (subOrders === undefined) {
    subOrderIds = [data.id];
  } else {
    subOrderIds = subOrders.map((subOrder) => subOrder.id);
  }

  async function doCheck(body: object) {
    const data = await postServiceOrderCheckOrder({
      data: body,
    });
    if (data.result === RESPONSE_CODE.SUCCESS) {
      message.success(data.message);
      onClose();
    }
  }

  /**
   *
   * @param body 财务审核
   */
  async function doFinancailCheck(body: object) {
    const data = await postServiceOrderFinanceCheckOrder({
      data: body,
    });
    if (data.result === RESPONSE_CODE.SUCCESS) {
      message.success(data.message);
      onClose();
    }
  }

  /**
   * 审核类型
   */
  function checkType(check: string) {
    if (orderCheckType === check) {
      return true;
    }
    return false;
  }

  return (
    <ModalForm<{
      name: string;
      company: string;
    }>
      width={500}
      open
      title="审核"
      form={form}
      autoFocusFirstInput
      modalProps={{
        okText: '通过',
        cancelText: '驳回',
        destroyOnClose: true,
        onCancel: () => {
          setCheckVisible(false);
        },
      }}
      submitter={{
        render: (props, defaultDoms) => {
          let myDoms = [];
          myDoms.push(
            <Button
              key="驳回"
              onClick={() => {
                if (checkType(CHECK_TYPE.NORMAL)) {
                  doCheck({
                    flag: false,
                    ids: subOrderIds,
                    externalProcurement: 0,
                    checkNotes: form.getFieldValue('name'),
                  });
                  return;
                }

                //财务审核
                doFinancailCheck({
                  checkNotes: form.getFieldValue('name'),
                  ids: subOrderIds,
                  checkPassOrReject: false,
                });
              }}
            >
              驳回
            </Button>,
          );

          //如果不是财务审核,那么显示这个外部采购
          if (checkType(CHECK_TYPE.NORMAL)) {
            myDoms.push(
              <Button
                key="外部采购"
                onClick={() => {
                  doCheck({
                    flag: false,
                    ids: subOrderIds,
                    externalProcurement: 1,
                    checkNotes: form.getFieldValue('name'),
                  });
                }}
              >
                外部采购
              </Button>,
            );
          }

          //确认
          myDoms.push(defaultDoms[1]);
          return myDoms;
        },
      }}
      submitTimeout={2000}
      onFinish={async (values) => {
        if (checkType(CHECK_TYPE.NORMAL)) {
          //审核通过
          return doCheck({
            flag: true,
            ids: subOrderIds,
            externalProcurement: 0,
            checkNotes: values.name,
          });
        }

        //财务审核
        return doFinancailCheck({
          checkNotes: values.name,
          ids: subOrderIds,
          checkPassOrReject: true,
        });
      }}
      onOpenChange={setCheckVisible}
    >
      <div>请特别注意订单总金额与订单金额。</div>
      <ProFormTextArea
        width="lg"
        name="name"
        placeholder="若驳回,请填写驳回理由"
      />
    </ModalForm>
  );
};