AddDrawer.tsx 3.8 KB
import { RESPONSE_CODE } from '@/constants/enum';
import {
  postOrderErpOrderStagesUpload,
  postProcureReturnBillAdd,
  postServiceConstStores,
} from '@/services';
import { enumToSelect } from '@/utils';
import {
  DrawerForm,
  ProFormSelect,
  ProFormText,
  ProFormTextArea,
  ProFormUploadDragger,
} from '@ant-design/pro-components';
import { Button, Form, message } from 'antd';
import { RcFile } from 'antd/es/upload';

export default ({ reloadTable }) => {
  const [form] = Form.useForm();
  return (
    <DrawerForm
      title="新增采购退货单"
      resize={{
        onResize() {
          console.log('resize!');
        },
        maxWidth: window.innerWidth * 0.8,
        minWidth: 300,
      }}
      form={form}
      trigger={<Button type="primary">新增</Button>}
      autoFocusFirstInput
      drawerProps={{
        destroyOnClose: true,
      }}
      submitTimeout={2000}
      onFinish={async (values) => {
        const res = await postProcureReturnBillAdd({
          data: values,
        });
        if (res.result === RESPONSE_CODE.SUCCESS) {
          message.success('新增成功');
          return true;
        }
        message.success('提交成功');
        reloadTable();
        // 不返回不会关闭弹框
        return true;
      }}
    >
      <ProFormText
        name="consignee"
        label="收货人"
        placeholder="请输入收货人"
        rules={[
          {
            required: true,
            message: '请输入收货人',
          },
        ]}
      />
      <ProFormText
        name="phoneNumber"
        label="联系电话"
        placeholder="请输入联系电话"
        rules={[
          {
            required: true,
            message: '请输入联系电话',
          },
        ]}
      />
      <ProFormText
        name="address"
        label="收货地址"
        placeholder="请输入收货地址"
        rules={[
          {
            required: true,
            message: '请输入联系电话',
          },
        ]}
      />
      <ProFormTextArea
        name="productDetail"
        label="产品明细"
        placeholder="请输入产品明细"
        rules={[
          {
            required: true,
            message: '请输入联系电话',
          },
        ]}
      ></ProFormTextArea>
      <ProFormSelect
        name="sendStoreCode"
        label="发货仓库"
        request={async () => {
          const res = await postServiceConstStores();
          return enumToSelect(res.data);
        }}
        rules={[
          {
            required: true,
            message: '请输入联系电话',
          },
        ]}
      ></ProFormSelect>
      <ProFormTextArea
        name="notes"
        label="备注"
        placeholder="请输入备注"
      ></ProFormTextArea>
      <ProFormUploadDragger
        label="附件"
        name="attachmentsFile"
        action="upload.do"
        onChange={(info) => {
          const uploadFile = async ({ fileList: newFileList }) => {
            if (newFileList.length > 0) {
              const formData = new FormData();
              formData.append('file', newFileList[0].originFileObj as RcFile);
              const res = await postOrderErpOrderStagesUpload({
                data: formData,
                headers: {
                  'Content-Type':
                    'multipart/form-data; boundary=----WebKitFormBoundarynl6gT1BKdPWIejNq',
                },
              });
              const url = res.data;
              console.log('attachments' + JSON.stringify(url));
              form.setFieldValue('attachments', url);
            } else {
              form.setFieldValue('attachments', null);
            }
          };
          uploadFile(info);
        }}
        max={1}
      />
      <ProFormText name="attachments" hidden></ProFormText>
    </DrawerForm>
  );
};