| 
									
										
										
										
											2025-10-29 11:35:09 +08:00
										 |  |  |  | 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: "附件不能为空" }]}> | 
					
						
							| 
									
										
										
										
											2025-10-30 14:36:08 +08:00
										 |  |  |  |           <Upload accept=".xls,.xlsx" listType="text" /> | 
					
						
							| 
									
										
										
										
											2025-10-29 11:35:09 +08:00
										 |  |  |  |         </Form.Item> | 
					
						
							|  |  |  |  |       </Form> | 
					
						
							|  |  |  |  |     </Modal> | 
					
						
							|  |  |  |  |   ); | 
					
						
							|  |  |  |  | }; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | ImportFile.displayName = "ImportFile"; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | export default ImportFile; |