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