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