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