1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { InboxOutlined } from "@ant-design/icons";
  2. import { ModalForm } from "@ant-design/pro-components/es";
  3. import { Modal, Upload, message } from "antd";
  4. import React, { forwardRef, useRef, useState } from "react";
  5. export default (props) => {
  6. const { visible, setVisible, onFinish, onSuccess,uploadFile } = props;
  7. const [fileList, setFileList] = useState([]);
  8. const onChange = (info) => {
  9. const { status, response } = info.file;
  10. const newFileList = [...info.fileList];
  11. setFileList(newFileList);
  12. if (status === "done") {
  13. onFinish(true);
  14. setVisible(false);
  15. setFileList([]);
  16. onSuccess(response);
  17. } else if (status === "error") {
  18. onFinish(true);
  19. setVisible(false);
  20. setFileList([]);
  21. }
  22. };
  23. const beforeUpload = (file, fileList) => {
  24. let extension = file.name.split(".")[1] === "xlsx";
  25. if (!extension) {
  26. message.warning("导入文件只能是xlsx格式!");
  27. return false;
  28. }
  29. };
  30. const onCancel = (e) => {
  31. setFileList([]);
  32. setVisible(false);
  33. };
  34. return (
  35. <Modal
  36. title="模板导入"
  37. open={visible}
  38. onOpenChange={setVisible}
  39. footer={false}
  40. onCancel={onCancel}
  41. >
  42. <Upload.Dragger
  43. name="file"
  44. beforeUpload={beforeUpload}
  45. onChange={onChange}
  46. customRequest={uploadFile}
  47. fileList={fileList}
  48. >
  49. <p className="ant-upload-drag-icon">
  50. <InboxOutlined />
  51. </p>
  52. </Upload.Dragger>
  53. </Modal>
  54. );
  55. };