120 lines
3.3 KiB
TypeScript
120 lines
3.3 KiB
TypeScript
![]() |
import React, { useEffect, useState } from 'react';
|
|||
|
import { Modal, Button } from 'antd';
|
|||
|
import PDF from 'react-pdf-js';
|
|||
|
import ProCard from '@ant-design/pro-card';
|
|||
|
import FileDown from '@/utils/Download';
|
|||
|
import { checkFileExist } from './service';
|
|||
|
/**
|
|||
|
* Pdf Modal弹窗公共组件
|
|||
|
* 2021.8.25 zhoujianlong 根据定标结果通知书的弹出窗口改造初始版本,增加备注
|
|||
|
*/
|
|||
|
interface PdfModalProps {
|
|||
|
fileId: string; //文档中心id
|
|||
|
downLoadFileName: string; //下载后的文件名称
|
|||
|
modalVisible: boolean; //Modal 弹出还是关闭
|
|||
|
onCancel: () => void; //关闭Modal方法
|
|||
|
}
|
|||
|
|
|||
|
const PdfModal: React.FC<PdfModalProps> = (props) => {
|
|||
|
const { fileId, downLoadFileName, modalVisible, onCancel } = props;
|
|||
|
const [page, setPage] = useState<number>(1); //页码
|
|||
|
const [pages, setPages] = useState<number>(0); //总页数
|
|||
|
const [fileExist, setFileExist] = useState<string>('0'); //0:未验证,1:验证后有,2:验证后没有
|
|||
|
|
|||
|
useEffect(() => {
|
|||
|
//判断文件是否存在
|
|||
|
checkFileExist(fileId).then((res) => {
|
|||
|
if (res !== undefined && res.length > 0) {
|
|||
|
setFileExist('1');
|
|||
|
} else {
|
|||
|
setFileExist('2');
|
|||
|
}
|
|||
|
});
|
|||
|
}, [fileId]);
|
|||
|
|
|||
|
//文档总页码
|
|||
|
const onDocumentComplete = (pages: any) => {
|
|||
|
setPage(1);
|
|||
|
setPages(pages);
|
|||
|
};
|
|||
|
|
|||
|
//上一页
|
|||
|
const handlePrevious = () => {
|
|||
|
setPage(page - 1);
|
|||
|
};
|
|||
|
|
|||
|
//下一页
|
|||
|
const handleNext = () => {
|
|||
|
setPage(page + 1);
|
|||
|
};
|
|||
|
|
|||
|
//下载链接
|
|||
|
const downLoadFile = (fileId: string) => {
|
|||
|
const returnUrl = '/api/core-service-ebtp-updownload/v1/attachment/download/bid/' + fileId;
|
|||
|
return returnUrl;
|
|||
|
};
|
|||
|
|
|||
|
const modalHeight = (window.innerHeight * 96) / 100;
|
|||
|
|
|||
|
return (
|
|||
|
<Modal
|
|||
|
destroyOnClose
|
|||
|
visible={modalVisible}
|
|||
|
title="预览"
|
|||
|
onCancel={() => onCancel()}
|
|||
|
width={'80%'}
|
|||
|
centered
|
|||
|
style={{ maxHeight: modalHeight }}
|
|||
|
bodyStyle={{ maxHeight: modalHeight - 107, overflowY: 'auto' }}
|
|||
|
footer={[
|
|||
|
<>
|
|||
|
<Button key="close" onClick={() => onCancel()}>
|
|||
|
关闭
|
|||
|
</Button>
|
|||
|
{fileExist == '1' ? (
|
|||
|
<>
|
|||
|
<Button disabled={page === pages} key="nextBtn" onClick={() => handleNext()}>
|
|||
|
{' '}
|
|||
|
下一页
|
|||
|
</Button>
|
|||
|
<Button disabled={page === 1} key="preBtn" onClick={() => handlePrevious()}>
|
|||
|
{' '}
|
|||
|
上一页
|
|||
|
</Button>
|
|||
|
<FileDown
|
|||
|
key="downLoadFile"
|
|||
|
type="pdf"
|
|||
|
apiUrl={downLoadFile(fileId)}
|
|||
|
style={{ float: 'left' }}
|
|||
|
fileName={downLoadFileName}
|
|||
|
btnName="下载"
|
|||
|
method="GET"
|
|||
|
form={null}
|
|||
|
/>
|
|||
|
</>
|
|||
|
) : null}
|
|||
|
</>,
|
|||
|
]}
|
|||
|
>
|
|||
|
<ProCard layout="center" direction="column" ghost>
|
|||
|
{fileExist == '0' ? (
|
|||
|
<div />
|
|||
|
) : fileExist == '1' ? (
|
|||
|
<>
|
|||
|
<PDF
|
|||
|
file={downLoadFile(fileId)}
|
|||
|
scale={1.6}
|
|||
|
onDocumentComplete={onDocumentComplete}
|
|||
|
page={page}
|
|||
|
/>
|
|||
|
</>
|
|||
|
) : (
|
|||
|
<span>对不起,您所查看的文件不存在,请与系统管理员联系!</span>
|
|||
|
)}
|
|||
|
</ProCard>
|
|||
|
</Modal>
|
|||
|
);
|
|||
|
};
|
|||
|
|
|||
|
export default PdfModal;
|