@@ -8,6 +8,6 @@ | |||
</head> | |||
<body> | |||
<div id="root"></div> | |||
<script src="/umi.377af00d.js"></script> | |||
<script src="/umi.e7cc0b41.js"></script> | |||
</body> | |||
</html> |
@@ -13,8 +13,9 @@ import { GetAdvertscheduleList } from '@/services/apis/advertschedule'; | |||
interface TitleProps { | |||
title: any, | |||
link: any, | |||
hasMore: boolean | |||
} | |||
const TitleIndex: React.FC<TitleProps> = ({ title, link }) => { | |||
const TitleIndex: React.FC<TitleProps> = ({ title, link, hasMore }) => { | |||
return ( | |||
<> | |||
<ConfigProvider | |||
@@ -67,14 +68,19 @@ const TitleIndex: React.FC<TitleProps> = ({ title, link }) => { | |||
}}> | |||
</div> | |||
</Flex> | |||
<Flex justify='flex-end' style={{ | |||
}}> | |||
<Button size='small' shape="round"> | |||
<Link to={{ pathname: link }} style={{ fontWeight: 'bold', color: '#000000' }}> | |||
更多 | |||
</Link> | |||
</Button> | |||
</Flex> | |||
{ | |||
hasMore && <> | |||
<Flex justify='flex-end' style={{ | |||
}}> | |||
<Button size='small' shape="round"> | |||
<Link to={{ pathname: link }} style={{ fontWeight: 'bold', color: '#000000' }}> | |||
更多 | |||
</Link> | |||
</Button> | |||
</Flex> | |||
</> | |||
} | |||
</Flex> | |||
</ConfigProvider> | |||
@@ -0,0 +1,108 @@ | |||
import { useState, useEffect, useRef } from 'react'; | |||
import { ProList, PageContainer } from '@ant-design/pro-components'; | |||
import { ConfigProvider, Button, Flex, Input, Space, Tabs, Tooltip, Row, Col, Pagination, Tag, Image, Affix, Typography, Anchor } from 'antd'; | |||
import { SearchOutlined, LikeOutlined, ArrowRightOutlined, RightOutlined } from '@ant-design/icons'; | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { Imageprefix } from '@/constants/index' | |||
import { GetSectionList, GetArticleList, GetSectionDetailByCode } from '@/services/apis/information'; | |||
import TitleIndex from '@/components/Common/Title'; | |||
import EmptyResult from '@/components/Common/EmptyResult' | |||
interface TitleProps { | |||
id: any, | |||
} | |||
const PartnerNews: React.FC<TitleProps> = ({ id }: any) => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(7) | |||
useEffect(() => { | |||
if (id) { | |||
GetArticleList({ page: 1, pagesize: 10, section_id: id }).then(res => { | |||
setList(res.data.articles && res.data.articles.length > 0 ? res.data.articles : []) | |||
setTotal(res.data.total) | |||
}) | |||
} | |||
}, [id]); | |||
return ( | |||
<> | |||
<ConfigProvider | |||
theme={{ | |||
token: { | |||
colorPrimary: '#19be6e', | |||
}, | |||
components: { | |||
Button: { | |||
colorText: '#19be6e' | |||
} | |||
} | |||
}} | |||
> | |||
<div style={{ minHeight: 300 }}> | |||
<Space direction='vertical' size={10} style={{ width: '100%' }}> | |||
{ | |||
list && list.length > 0 && list.map((item, index) => ( | |||
<> | |||
<Link to={{ pathname: `/sciencetechnologypark/information/detail?id=${item.id}` }} target='_blank'> | |||
<Flex justify='space-between' align='center' style={{ width: '100%', padding: '16px', color: '#000000', background: '#ffffff', borderRadius: 8, cursor: 'pointer' }}> | |||
<Space size={20}> | |||
<Image src={`${Imageprefix}${item.cover_img}`} width={100} height={100}></Image> | |||
<h3>{item.title}</h3> | |||
</Space> | |||
<Space size={20}> | |||
<div> | |||
{item.updated_at} | |||
</div> | |||
<RightOutlined /> | |||
</Space> | |||
</Flex> | |||
</Link> | |||
</> | |||
)) | |||
} | |||
{ | |||
!list || list.length == 0 && <Flex justify='center' align='center' style={{ padding: '16px', borderRadius: 8, cursor: 'pointer' }}> | |||
<EmptyResult description="暂无数据" /> | |||
</Flex> | |||
} | |||
</Space> | |||
<Flex justify='center' align='center' style={{ margin: '40px 0' }}> | |||
<Pagination | |||
hideOnSinglePage | |||
total={total} | |||
showTotal={(total) => `总共${total}条`} | |||
current={page} | |||
pageSize={pageSize} | |||
pageSizeOptions={['12', '24', '36']} | |||
onChange={(page, pageSize) => { | |||
setPage(page) | |||
setPageSize(pageSize) | |||
GetArticleList({ page: 1, pagesize: 10, section_id: id }).then(res => { | |||
setList(res.data.articles && res.data.articles.length > 0 ? res.data.articles : []) | |||
setTotal(res.data.total) | |||
}) | |||
}} | |||
/> | |||
</Flex> | |||
</div> | |||
</ConfigProvider > | |||
</> | |||
); | |||
}; | |||
export default PartnerNews; |
@@ -0,0 +1,66 @@ | |||
import { useState, useEffect, useRef } from 'react'; | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { ConfigProvider, Button, Flex, Input, Space, Image, Select, Row, Col, Carousel, Tag, Card, Avatar, Typography } from 'antd'; | |||
import { Imageprefix } from '@/constants/index' | |||
import he from 'he'; | |||
import { GetSectionList, GetArticleList, GetArticleDetail, GetSectionDetailByCode } from '@/services/apis/information'; | |||
import EmptyResult from '@/components/Common/EmptyResult' | |||
interface TitleProps { | |||
id: any, | |||
} | |||
const ScienceTechnologyParkHomeIntroduction: React.FC<TitleProps> = ({ id }: any) => { | |||
const [detail, setDetail] = useState<object | null>(null) | |||
useEffect(() => { | |||
console.log(id) | |||
if (id) { | |||
GetArticleList({ page: 1, pagesize: 10, section_id: id }).then(res => { | |||
if (res.data.articles && res.data.articles.length > 0) { | |||
GetArticleDetail({ id: res.data.articles[0].id }).then(res => { | |||
setDetail(res.data) | |||
}) | |||
} | |||
}) | |||
} | |||
}, [id]); | |||
return ( | |||
<> | |||
<ConfigProvider | |||
theme={{ | |||
token: { | |||
colorPrimary: '#19be6e', | |||
}, | |||
components: { | |||
Button: { | |||
colorText: '#19be6e' | |||
} | |||
} | |||
}} | |||
> | |||
{ | |||
detail && | |||
<div style={{ minHeight: 300, background: '#f2f2f2', borderRadius: 8, padding: 20, lineHeight: 2 }}> | |||
<div dangerouslySetInnerHTML={{ __html: he.decode(detail.content) }} /> | |||
</div> | |||
} | |||
{ | |||
!detail && < Flex justify='center' align='center' style={{ padding: '16px', borderRadius: 8, cursor: 'pointer' }}> | |||
<EmptyResult description="暂无数据" /> | |||
</Flex> | |||
} | |||
</ConfigProvider > | |||
</> | |||
); | |||
}; | |||
export default ScienceTechnologyParkHomeIntroduction; | |||
@@ -0,0 +1,108 @@ | |||
import { useState, useEffect, useRef } from 'react'; | |||
import { ProList, PageContainer } from '@ant-design/pro-components'; | |||
import { ConfigProvider, Button, Flex, Input, Space, Tabs, Tooltip, Row, Col, Pagination, Tag, Image, Affix, Typography, Anchor } from 'antd'; | |||
import { SearchOutlined, LikeOutlined, ArrowRightOutlined, RightOutlined } from '@ant-design/icons'; | |||
import { useModel, connect, history, Link } from 'umi'; | |||
import { Imageprefix } from '@/constants/index' | |||
import { GetSectionList, GetArticleList, GetSectionDetailByCode } from '@/services/apis/information'; | |||
import TitleIndex from '@/components/Common/Title'; | |||
import EmptyResult from '@/components/Common/EmptyResult' | |||
interface TitleProps { | |||
id: any, | |||
} | |||
const PartnerNews: React.FC<TitleProps> = ({ id }: any) => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(7) | |||
useEffect(() => { | |||
if (id) { | |||
GetArticleList({ page: 1, pagesize: 10, section_id: id }).then(res => { | |||
setList(res.data.articles && res.data.articles.length > 0 ? res.data.articles : []) | |||
setTotal(res.data.total) | |||
}) | |||
} | |||
}, [id]); | |||
return ( | |||
<> | |||
<ConfigProvider | |||
theme={{ | |||
token: { | |||
colorPrimary: '#19be6e', | |||
}, | |||
components: { | |||
Button: { | |||
colorText: '#19be6e' | |||
} | |||
} | |||
}} | |||
> | |||
<div style={{ minHeight: 300 }}> | |||
<Space direction='vertical' size={10} style={{ width: '100%' }}> | |||
{ | |||
list && list.length > 0 && list.map((item, index) => ( | |||
<> | |||
<Link to={{ pathname: `/sciencetechnologypark/information/detail?id=${item.id}` }} target='_blank'> | |||
<Flex justify='space-between' align='center' style={{ width: '100%', padding: '16px', color: '#000000', background: '#ffffff', borderRadius: 8, cursor: 'pointer' }}> | |||
<Space size={20}> | |||
<Image src={`${Imageprefix}${item.cover_img}`} width={100} height={100}></Image> | |||
<h3>{item.title}</h3> | |||
</Space> | |||
<Space size={20}> | |||
<div> | |||
{item.updated_at} | |||
</div> | |||
<RightOutlined /> | |||
</Space> | |||
</Flex> | |||
</Link> | |||
</> | |||
)) | |||
} | |||
{ | |||
!list || list.length == 0 && <Flex justify='center' align='center' style={{ padding: '16px', borderRadius: 8, cursor: 'pointer' }}> | |||
<EmptyResult description="暂无数据" /> | |||
</Flex> | |||
} | |||
</Space> | |||
<Flex justify='center' align='center' style={{ margin: '40px 0' }}> | |||
<Pagination | |||
hideOnSinglePage | |||
total={total} | |||
showTotal={(total) => `总共${total}条`} | |||
current={page} | |||
pageSize={pageSize} | |||
pageSizeOptions={['12', '24', '36']} | |||
onChange={(page, pageSize) => { | |||
setPage(page) | |||
setPageSize(pageSize) | |||
GetArticleList({ page: 1, pagesize: 10, section_id: id }).then(res => { | |||
setList(res.data.articles && res.data.articles.length > 0 ? res.data.articles : []) | |||
setTotal(res.data.total) | |||
}) | |||
}} | |||
/> | |||
</Flex> | |||
</div> | |||
</ConfigProvider > | |||
</> | |||
); | |||
}; | |||
export default PartnerNews; |
@@ -15,13 +15,17 @@ import { GetSectionList, GetArticleList, GetSectionDetailByCode } from '@/servic | |||
import TitleIndex from '@/components/Common/Title'; | |||
import EmptyResult from '@/components/Common/EmptyResult' | |||
import PartnerIntroduction from '@/components/Partner/Introduction' | |||
import PartnerNews from '@/components/Partner/News' | |||
import PartnerConversion from '@/components/Partner/Conversion' | |||
const HomeNewJob: React.FC = () => { | |||
const [list, setList] = useState<object[]>([]) | |||
const [total, setTotal] = useState<number>(0) | |||
const [page, setPage] = useState<number>(1) | |||
const [pageSize, setPageSize] = useState<number>(12) | |||
const [introductionSectionId, setIntroductionSectionId] = useState<number>() | |||
const [newsSectionId, setNewsSectionId] = useState<number>() | |||
const [conversionSectionId, setConversionSectionId] = useState<number>() | |||
const [selectedTags, setSelectedTags] = useState<string[]>(['']); | |||
@@ -31,43 +35,27 @@ const HomeNewJob: React.FC = () => { | |||
setList(res.data.childs ? res.data.childs : []) | |||
if (res.data.childs && res.data.childs.length > 0) { | |||
setSelectedTags(res.data.childs[0].name) | |||
setIntroductionSectionId(res.data.childs[0].childs[0].id) | |||
setNewsSectionId(res.data.childs[0].childs[1].id) | |||
setConversionSectionId(res.data.childs[0].childs[2].id) | |||
} | |||
}) | |||
}, []); | |||
const handleChange = (tag: object, checked: boolean) => { | |||
const handleChange = async (tag: object, checked: boolean) => { | |||
const nextSelectedTags = checked | |||
? [tag.name] | |||
: selectedTags.filter((t) => t !== tag.name); | |||
setSelectedTags(nextSelectedTags); | |||
if (tag.childs && tag.childs.length > 0) { | |||
getIntroductionData(tag.childs) | |||
getNewsData(tag.childs) | |||
getConversionData(tag.childs) | |||
console.log(tag.childs[0].id) | |||
setIntroductionSectionId(tag.childs[0] && tag.childs[0].id ? tag.childs[0].id : 0) | |||
setNewsSectionId(tag.childs[1] && tag.childs[1].id ? tag.childs[1].id : 0) | |||
setConversionSectionId(tag.childs[2] && tag.childs[2].id ? tag.childs[2].id : 0) | |||
} | |||
}; | |||
const [introduction, setIntroduction] = useState<object | null>(null); | |||
// const getIntroductionData = async (value) => { | |||
// let res = await GetArticleList({ section_id: value[0].id }) | |||
// setIntroduction(res.data.articles && res.data.articles.length > 0 ? res.data.articles[0].content : null) | |||
// }; | |||
// const [newsList, setNewsList] = useState<object | null>(null); | |||
// const getNewsData = async (value) => { | |||
// let res = await GetArticleList({ section_id: value[0].id }) | |||
// setNewsList(res.data.articles && res.data.articles.length > 0 ? res.data.articles[0].content : null) | |||
// }; | |||
// const [conversionList, setConversionList] = useState<object | null>(null); | |||
// const getConversionData = async (value) => { | |||
// let res = await GetArticleList({ section_id: value[0].id }) | |||
// setConversionList(res.data.articles && res.data.articles.length > 0 ? res.data.articles[0].content : null) | |||
// }; | |||
}; | |||
@@ -102,26 +90,12 @@ const HomeNewJob: React.FC = () => { | |||
} | |||
</Flex > | |||
<PageContainer header={{ title: '' }} style={{ minHeight: 1000 }}> | |||
<TitleIndex title="合作伙伴简介" link="/sciencetechnologypark/news"></TitleIndex> | |||
{ | |||
introduction && <> | |||
<div style={{ minHeight: 300, background: '#f2f2f2', borderRadius: 8, padding: 20, lineHeight: 2 }}> | |||
<div dangerouslySetInnerHTML={{ __html: he.decode(introduction) }} /> | |||
</div> | |||
</> | |||
} | |||
{ | |||
!introduction && <Flex justify='center' align='center' style={{ padding: '16px', borderRadius: 8, cursor: 'pointer' }}> | |||
<EmptyResult description="暂无数据" /> | |||
</Flex> | |||
} | |||
<TitleIndex title="新闻栏目" link="/sciencetechnologypark/news"></TitleIndex> | |||
<TitleIndex title="成果转化" link="/sciencetechnologypark/news"></TitleIndex> | |||
<TitleIndex title="合作伙伴简介" link='' hasMore={false}></TitleIndex> | |||
<PartnerIntroduction id={introductionSectionId}></PartnerIntroduction> | |||
<TitleIndex title="新闻栏目" link='' hasMore={false}></TitleIndex> | |||
<PartnerNews id={newsSectionId}></PartnerNews> | |||
<TitleIndex title="成果转化" link='' hasMore={false}></TitleIndex> | |||
<PartnerConversion id={conversionSectionId}></PartnerConversion> | |||
</PageContainer> | |||