88 lines
1.9 KiB
JavaScript
88 lines
1.9 KiB
JavaScript
import { Button, Form, Modal } from "antd";
|
||
import { getFileUrl } from "../../utils";
|
||
import Upload from "../Upload";
|
||
|
||
/**
|
||
* 导入文件组件
|
||
*/
|
||
const ImportFile = (props) => {
|
||
const {
|
||
visible,
|
||
onCancel,
|
||
onConfirm,
|
||
title = "导入",
|
||
templateUrl,
|
||
labelCol = { span: 4 },
|
||
children,
|
||
...restProps
|
||
} = props;
|
||
|
||
const [form] = Form.useForm();
|
||
|
||
// 关闭弹窗
|
||
const handleClose = () => {
|
||
form.resetFields();
|
||
onCancel();
|
||
};
|
||
|
||
// 提交表单
|
||
const handleSubmit = (values) => {
|
||
onConfirm(values);
|
||
handleClose();
|
||
};
|
||
|
||
// 导出模板
|
||
const handleExportTemplate = () => {
|
||
Modal.confirm({
|
||
title: "提示",
|
||
content: "确定要下载excel模板吗?",
|
||
okText: "确定",
|
||
cancelText: "取消",
|
||
onOk: () => {
|
||
const fileUrl = getFileUrl();
|
||
window.open(fileUrl + templateUrl);
|
||
},
|
||
});
|
||
};
|
||
|
||
return (
|
||
<Modal
|
||
title={title}
|
||
open={visible}
|
||
onCancel={handleClose}
|
||
width={600}
|
||
footer={[
|
||
templateUrl && (
|
||
<Button key="export" onClick={handleExportTemplate}>
|
||
导出模板
|
||
</Button>
|
||
),
|
||
<Button key="cancel" onClick={handleClose}>
|
||
取消
|
||
</Button>,
|
||
<Button key="submit" type="primary" onClick={form.submit}>
|
||
确定
|
||
</Button>,
|
||
]}
|
||
>
|
||
<Form
|
||
form={form}
|
||
labelCol={labelCol}
|
||
wrapperCol={{ span: 24 - labelCol.span }}
|
||
scrollToFirstError
|
||
onFinish={handleSubmit}
|
||
{...restProps}
|
||
>
|
||
{children && typeof children === "function" ? children({ form }) : children}
|
||
<Form.Item label="附件" name="file" rules={[{ required: true, message: "附件不能为空" }]}>
|
||
<Upload accept=".xls,.xlsx" />
|
||
</Form.Item>
|
||
</Form>
|
||
</Modal>
|
||
);
|
||
};
|
||
|
||
ImportFile.displayName = "ImportFile";
|
||
|
||
export default ImportFile;
|