Commit eb51f0f7 by weiw

fix:解决点击pdf再点击docx预览会下载的bug

parent 22f91f0c
......@@ -16,11 +16,14 @@ export const FilePreviewModal: React.FC<FilePreviewModalProps> = ({ isOpen, onCl
const [loading, setLoading] = useState(false)
const [fileType, setFileType] = useState<string>('')
// 确定文件类型
// 确定文件类型 - 改进版本
useEffect(() => {
// 重置状态
setFileType('')
if (doc?.documentAlias) {
const name = doc.documentAlias.toLowerCase()
// 添加更严格的文件类型判断
const name = doc.documentAlias.toLowerCase().trim()
if (name.endsWith('.pdf')) {
setFileType('pdf')
}
......@@ -30,14 +33,24 @@ export const FilePreviewModal: React.FC<FilePreviewModalProps> = ({ isOpen, onCl
else if (name.endsWith('.doc')) {
setFileType('doc')
}
else if (name.endsWith('.xlsx') || name.endsWith('.xls')) {
else if (name.endsWith('.xlsx')) {
setFileType('xlsx')
}
else if (name.endsWith('.xls')) {
setFileType('xls')
}
else {
setFileType('')
}
}
}, [doc])
}, [doc, isOpen]) // 添加 isOpen 依赖确保每次打开时重新判断
// 当文件类型或URL变化时重置loading状态
useEffect(() => {
if (fileType && docUrl) {
setLoading(true)
}
}, [fileType, docUrl])
const handleDownload = () => {
if (docUrl) {
......@@ -74,6 +87,7 @@ export const FilePreviewModal: React.FC<FilePreviewModalProps> = ({ isOpen, onCl
return (
<div className="h-[70vh] max-h-[70vh] overflow-auto">
<DocxPreview
key={docUrl} // 添加key确保组件重新挂载
src={docUrl}
className="w-full min-h-full"
onRendered={handleDocumentRendered}
......@@ -103,6 +117,7 @@ export const FilePreviewModal: React.FC<FilePreviewModalProps> = ({ isOpen, onCl
return (
<div className="h-[70vh] max-h-[70vh] overflow-auto">
<ExcelPreview
key={docUrl} // 添加key确保组件重新挂载
src={docUrl}
options={{ xls: true }}
className="w-full min-h-full"
......@@ -116,6 +131,7 @@ export const FilePreviewModal: React.FC<FilePreviewModalProps> = ({ isOpen, onCl
return (
<div className="h-[70vh] max-h-[70vh] overflow-auto">
<ExcelPreview
key={docUrl} // 添加key确保组件重新挂载
src={docUrl}
className="w-full min-h-full"
onRendered={handleDocumentRendered}
......@@ -128,6 +144,7 @@ export const FilePreviewModal: React.FC<FilePreviewModalProps> = ({ isOpen, onCl
return (
<div className="h-[70vh] max-h-[70vh] overflow-auto">
<PdfPreview
key={docUrl} // 添加key确保组件重新挂载
src={docUrl}
className="w-full min-h-full"
onLoaded={handleDocumentRendered}
......@@ -150,10 +167,17 @@ export const FilePreviewModal: React.FC<FilePreviewModalProps> = ({ isOpen, onCl
}
}
// 模态框关闭时重置状态
const handleClose = () => {
setLoading(false)
setFileType('')
onClose()
}
return (
<Modal
isOpen={isOpen}
onClose={onClose}
onClose={handleClose} // 使用改进的关闭函数
size="3xl"
classNames={{
base: 'max-h-[90vh] max-w-[50vw]',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment