77 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
		
		
			
		
	
	
			77 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
|  | import { Button, Space } from "antd"; | ||
|  | import { useState } from "react"; | ||
|  | import Pdf from "../Pdf"; | ||
|  | 
 | ||
|  | 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; |