80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
import { Button, Space } from "antd";
 | 
						|
import { useState } from "react";
 | 
						|
import Pdf from "../Pdf";
 | 
						|
 | 
						|
/**
 | 
						|
 * 在查看页面中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;
 |