tsg-web/src/views/fxzb/sxfd/fxkhgzh/meetingPage.js

181 lines
7.6 KiB
JavaScript
Raw Normal View History

2024-09-20 15:02:50 +08:00
import React, { Fragment, useRef, useMemo,useEffect,useState } from 'react';
import { useSelector } from 'react-redux';
import BasicCrudModal from '../../../../components/crud/BasicCrudModal';
import { Table, Card, Row, Col, Divider,Image,Modal } from 'antd';
import { DeleteOutlined,FileWordOutlined,FilePdfOutlined,FileZipOutlined,FileExcelOutlined } from '@ant-design/icons';
import ToolBar from './toolbar';
import ModalForm from './form';
import apiurl from '../../../../service/apiurl';
import { getDictService } from '../../../../service/SelectValue'
import usePageTable from '../../../../components/crud/usePageTable';
import { createCrudService } from '../../../../components/crud/_';
import {CrudOpRender_text} from '../../../../components/crud/CrudOpRender';
import { dealValue } from '../../../../utils/tools';
import ListSelect from "../../../../components/Form/ListSelect";
import Form from './form'
import moment from 'moment';
const Page = ({data,fileList,isMeetData=false}) => {
2025-04-07 09:16:20 +08:00
const url = "http://223.75.53.141:9100/gs-tsg"
2024-09-20 15:02:50 +08:00
const [iframeSrc, setIframeSrc] = useState('')
const [pdfViewOPen, setPdfViewOPen] = useState(false)
/**
* @description pdf文件预览
* @param {String} params 文件预览url
*/
const viewPdf = (params) => {
console.log(params);
setIframeSrc(params)
setPdfViewOPen(true)
}
/**
* @description 文件下载
* @param {String} params 文件fileId
*/
const download = (params) => {
let downloadLink = document.createElement("a");
downloadLink.href = `http://local.gunshiiot.com:18083/gunshiApp/xfflood/xfIdeoFcB/file/download/${params}`;
downloadLink.download = `${params.fileName}`;
downloadLink.style.display = "none";
// 将链接添加到页面中
document.body.appendChild(downloadLink);
// 模拟点击事件,开始下载
downloadLink.click();
}
return (
<>
<div className="ant-card-body meetingPage" style={{padding:"20px 0 0 0"}}>
<div className='meetingPage_header'>
<div className='meetingPage_header_item'>
<div className='meetingPage_header_item_lable'>会议主题</div>
<div className='meetingPage_header_item_value'>
{data.theme}
</div>
</div>
<div className='meetingPage_header_item'>
<div className='meetingPage_header_item_lable'>主办单位</div>
<div className='meetingPage_header_item_value'>{data.organiser}</div>
</div>
<Divider dashed />
<div className='meetingPage_header_item'>
<div className='meetingPage_header_item_lable'>会议时间</div>
<div className='meetingPage_header_item_value'>{ !isMeetData ?data.meetDate:data.startDate}</div>
</div>
<div className='meetingPage_header_item'>
<div className='meetingPage_header_item_lable'>会议地点</div>
<div className='meetingPage_header_item_value'>{data.loc}</div>
</div>
<Divider dashed />
<div className='meetingPage_header_item'>
<div className='meetingPage_header_item_lable'>局内参加人员</div>
<div className='meetingPage_header_item_value'>{data.participant}</div>
</div>
<div className='meetingPage_header_item'>
<div className='meetingPage_header_item_lable'>会议类型</div>
<div className='meetingPage_header_item_value'>
{
data.meetType === "0" ? "视频会议" :
data.meetType === "1" ? "现场会议" :
data.meetType === "2" ? "电话会议" : "网络会议"
}
</div>
</div>
<Divider dashed />
<div className='meetingPage_header_item'>
<div
className='meetingPage_header_item_lable'
// style={{width:"51%"}}
>会议主要内容</div>
</div>
</div>
<div className='meetingPage_content' dangerouslySetInnerHTML={{ __html:data.content }} />
<Divider dashed />
<div className='meetingPage_footer'>
<div className='meetingPage_footer_title'>
附件
</div>
<div className='attach-list'>
{
fileList.length > 0 && fileList.map(file => {
return (
<>
<div className={'file-item'}>
<div className='file-description'>
{file.name.indexOf('.docx') > -1 ?
<div
onClick={() => { download(file.response?.data?.fileId) }}
style={{ cursor: 'pointer' }}
>
<FileWordOutlined
style={{ fontSize: 40 }}
/>
</div>
:
file.name.indexOf('.pdf') > -1 ?
<div
onClick={() => { viewPdf(file.response?.data?.fileId) }}
style={{ cursor: 'pointer' }}
>
<FilePdfOutlined style={{ fontSize: 40 }} />
</div>
:
file.name.indexOf('.zip') > -1 ?
<div
onClick={() => { download(file.response?.data?.fileId) }}
style={{ cursor: 'pointer' }}
>
<FileZipOutlined style={{ fontSize: 40 }} />
</div>
:
file.name.indexOf('.xlsx') > -1 ?
<div
onClick={() => { download(file.response?.data?.fileId) }}
style={{ cursor: 'pointer' }}
>
<FileExcelOutlined style={{ fontSize: 40 }} />
</div>
:
<Image width={60} src={url +file.response?.data?.filePath} alt='' />
}
<div style={{display:'flex',flexDirection:"column"}}>
<span>{file.name}</span>
<span>{((file.response?.data?.fileLength)/1024).toFixed(2) }KB</span>
</div>
</div>
</div>
<Modal
open={pdfViewOPen}
width={1000}
title=""
footer={null}
style={{marginTop:"-5%"}}
onCancel={() => {
setPdfViewOPen(false)
}}
>
<iframe
style={{
height: '80vh',
width: '100%',
border: 0,
marginTop: 20,
}}
src={`${process.env.PUBLIC_URL}/static/pdf/web/viewer.html?file=${encodeURIComponent(`/gunshiApp/xfflood/xfIdeoFcB/file/download/${iframeSrc}`)}`}
/>
</Modal>
</>
)
})
}
</div>
</div>
</div>
</>
);
}
export default Page;