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;
 |