| 
									
										
										
										
											2025-10-22 17:54:38 +08:00
										 |  |  | import { Button, Space } from "antd"; | 
					
						
							|  |  |  | import { useState } from "react"; | 
					
						
							|  |  |  | import Pdf from "../Pdf"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-10-28 15:16:58 +08:00
										 |  |  | /** | 
					
						
							|  |  |  |  * 在查看页面中PDF查看组件 | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2025-10-22 17:54:38 +08:00
										 |  |  | const PreviewPdf = (props) => { | 
					
						
							|  |  |  |   const { | 
					
						
							|  |  |  |     files = [], | 
					
						
							|  |  |  |     nameKey = "", | 
					
						
							|  |  |  |     urlKey = "", | 
					
						
							|  |  |  |     name = "", | 
					
						
							|  |  |  |     url = "", | 
					
						
							|  |  |  |   } = props; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const [visible, setVisible] = useState(false); | 
					
						
							|  |  |  |   const [src, setSrc] = useState(""); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const previewPdf = (src) => { | 
					
						
							|  |  |  |     setVisible(true); | 
					
						
							|  |  |  |     setSrc(src); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const onCancel = () => { | 
					
						
							|  |  |  |     setVisible(false); | 
					
						
							|  |  |  |     setSrc(""); | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // 单个文件预览模式
 | 
					
						
							|  |  |  |   if (files.length === 0 && name && url) { | 
					
						
							|  |  |  |     return ( | 
					
						
							|  |  |  |       <> | 
					
						
							|  |  |  |         <Space> | 
					
						
							|  |  |  |           <span>{name}</span> | 
					
						
							|  |  |  |           <Button type="primary" size="small" onClick={() => previewPdf(url)}> | 
					
						
							|  |  |  |             预览 | 
					
						
							|  |  |  |           </Button> | 
					
						
							|  |  |  |         </Space> | 
					
						
							|  |  |  |         <Pdf | 
					
						
							|  |  |  |           visible={visible} | 
					
						
							|  |  |  |           file={src} | 
					
						
							|  |  |  |           onCancel={onCancel} | 
					
						
							|  |  |  |         /> | 
					
						
							|  |  |  |       </> | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   // 多文件预览模式
 | 
					
						
							|  |  |  |   if (files.length > 0 && !name && !url) { | 
					
						
							|  |  |  |     return ( | 
					
						
							|  |  |  |       <> | 
					
						
							|  |  |  |         {files.map(item => ( | 
					
						
							|  |  |  |           <div key={item.filePath || item[urlKey]} style={{ marginTop: 5 }}> | 
					
						
							|  |  |  |             <Space> | 
					
						
							|  |  |  |               <span>{item.name || item.fileName || item[nameKey]}</span> | 
					
						
							|  |  |  |               <Button | 
					
						
							|  |  |  |                 type="primary" | 
					
						
							|  |  |  |                 size="small" | 
					
						
							|  |  |  |                 onClick={() => previewPdf(item.filePath || item[urlKey])} | 
					
						
							|  |  |  |               > | 
					
						
							|  |  |  |                 预览 | 
					
						
							|  |  |  |               </Button> | 
					
						
							|  |  |  |             </Space> | 
					
						
							|  |  |  |           </div> | 
					
						
							|  |  |  |         ))} | 
					
						
							|  |  |  |         <Pdf | 
					
						
							|  |  |  |           visible={visible} | 
					
						
							|  |  |  |           file={src} | 
					
						
							|  |  |  |           onCancel={onCancel} | 
					
						
							|  |  |  |         /> | 
					
						
							|  |  |  |       </> | 
					
						
							|  |  |  |     ); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return null; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default PreviewPdf; |