/** * 钟是志 * 2024年7月4日 * 解决禅道 http://scjoyedu.eicp.net:57400/zentao/task-view-2695.html * 根据配置项来解决 * */ import React, { useMemo, Fragment, useState, useRef } from "react"; import { fileUrlToFilePath } from '@/webPublic/one_stop_public/utils/queryConfig'; import { requestOrigin } from '@/webPublic/one_stop_public/utils/request'; import { message, Modal } from 'antd'; import { getPdfFile } from "@/webPublic/one_stop_public/filePreview/utils"; export default function PreviewWordExtend({ src, fileName }) { const extList = ['doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt']; const [isShow, setIsShow] = useState(false); const filePdf = useRef(null); const isOpen = useMemo( () => { return window.CONFIG.openPdfPreview && extList.includes(fileName.split('.').pop()); }, [src], ); function showPdf() { if(!filePdf.current){ const params = { filePath: fileUrlToFilePath(src), }; message.info('正在打开文件预览'); getPdfFile(params).then((url) => { filePdf.current = url; setIsShow(true); }); }else{ setIsShow(true); } } if (isOpen) { return ( <Fragment> <a onClick={showPdf}>{fileName}</a> { isShow && <Modal title={'文件预览'} width={1000} visible={isShow} onCancel={() => setIsShow(false)} bodyStyle={{ height: '600px', overflowY: 'hidden', }} footer={null} > <a target={'_blank'} href={src}> 下载文件 </a> <embed width="100%" height='550' name="plugin" id="plugin" src={filePdf.current} type="application/pdf" internalinstanceid="3" title=""/> </Modal> } </Fragment> ); } else { return ( <a src={src} target={'_blank'}> {fileName} </a> ); } }