forgeplus-react/src/forge/Information/Pages/sourceDetail.jsx

99 lines
3.8 KiB
React
Raw Normal View History

2023-07-05 10:07:05 +08:00
import React , { useEffect , useState } from 'react';
2023-09-22 11:13:11 +08:00
import { Badge, Breadcrumb } from 'antd';
2023-07-05 10:07:05 +08:00
import SourceFile from '../img/sourceFile.png';
import { getSourceDetail } from '../api';
2023-07-06 18:12:33 +08:00
import { Link } from 'react-router-dom';
2023-07-13 15:45:07 +08:00
import { httpUrl } from '../fetch';
2023-09-06 16:17:35 +08:00
import { AlignCenter, FlexAJ } from '../../Component/layout';
import SourceIcon from '../img/sourceIcon.png';
import { addMeta, setSeoMeta } from 'educoder';
2023-07-05 10:07:05 +08:00
function SourceDetail(props){
const { deptId , sourceid } = props.match.params;
const [ detail , setDetail ] = useState(undefined);
const zonedetail = props.data;
2023-09-22 11:13:11 +08:00
const {temp} = props;
2023-07-05 10:07:05 +08:00
useEffect(()=>{
if(sourceid){
getDetails();
}
},[sourceid])
useEffect(()=>{
// 设置网页标题
if(detail){
const { name, domainName, summary} = detail;
document.title = `${ name }/${ domainName }`;
addMeta('Keywords', `${ name },${ domainName },${ summary }`);
}
return componentWillUnmount
}, [detail])
function componentWillUnmount() {
2023-09-21 16:30:02 +08:00
if (zonedetail) {
2024-01-13 10:09:23 +08:00
document.title= zonedetail.mainTitle;
2023-09-21 16:30:02 +08:00
setSeoMeta(`${zonedetail.name},`, zonedetail.name, zonedetail.subTitle, `/zone/${deptId}`)
}
}
2023-07-05 10:07:05 +08:00
function getDetails(){
getSourceDetail(sourceid).then(response=>{
if(response){
setDetail(response.data.data);
}
}).catch(error=>{})
}
2023-07-07 16:14:01 +08:00
2023-07-05 10:07:05 +08:00
return(
<div className="boxmain"style={{paddingBottom:"40px"}}>
<Breadcrumb separator=">" style={{paddingTop:"20px"}}>
2023-07-06 18:12:33 +08:00
<Breadcrumb.Item><Link className="primaryColor" to={`/zone/${deptId}/source`}>资源列表</Link></Breadcrumb.Item>
2023-07-05 10:07:05 +08:00
<Breadcrumb.Item>详情页</Breadcrumb.Item>
</Breadcrumb>
{
detail &&
<div className="source_detail_box">
2023-09-07 10:35:48 +08:00
<div className="s_d_title">
<FlexAJ>
<AlignCenter style={{flex: 1}}>
<span className='domainNameBoxD font-13 mr15'>{detail.domainName}</span>
<span className='font-22' style={{flex: 1}}>{detail.name}</span>
</AlignCenter>
<div className="load_count">
<img src={SourceIcon} alt="" width="18px" className="mr5" style={{marginTop: '-4px'}}/><span style={{color:"#5e6685"}}>{detail.downloadCount}</span>
</div>
</FlexAJ>
2023-09-07 15:23:23 +08:00
{detail.createUser && detail.createUser.avatar && <Link to={`/${detail.createUser.userName}`}><img alt='' src={detail.createUser.avatar} className='publicUserAvatar mr10'/></Link>}
{detail.createUser && <Link className='mr20' to={`/${detail.createUser.userName}`}>{detail.createUser.nickName}</Link>}
2023-09-22 11:13:11 +08:00
<span className='mr20'>发布于{detail.updateTime || detail.createTime}</span>
{detail.auditStatus === '0' && <Badge color={temp === "zone" ? "#466aff" : "#089f7f"} text="待审核" className='pass'/> }
{detail.auditStatus === '2' && <Badge color="#eb1212" text="未通过" className='failed'/> }
2023-09-07 10:35:48 +08:00
</div>
2023-09-06 16:17:35 +08:00
<div className='pb20'>{detail.summary}</div>
2023-07-05 10:07:05 +08:00
{
detail.fileList && detail.fileList.length > 0 &&
<ul className="files_box">
{
detail.fileList.map((i,k)=>{
return(
<li>
2023-07-06 18:12:33 +08:00
<img src={SourceFile} alt="" width="20px" className="mr12"/>
2023-07-05 10:07:05 +08:00
<span className="task-hide">{i.fileOriginName}</span>
2023-09-07 15:30:46 +08:00
<span style={{width: '340px'}}>{i.zoneResourceType.name}</span>
2023-07-05 10:07:05 +08:00
<span>{i.fileSizeInfo}</span>
2023-07-13 15:45:07 +08:00
<a href={`${httpUrl}/file/open/download/${i.fileId}`} download className="f_b_load primaryColor">下载</a>
2023-07-05 10:07:05 +08:00
</li>
)
})
}
</ul>
}
</div>
}
</div>
)
}
export default SourceDetail;