Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. import { useState, useEffect, useRef } from 'react';
  2. import { ProList, PageContainer } from '@ant-design/pro-components';
  3. import { ConfigProvider, Button, Flex, Input, Space, Image, Carousel, Row, Col, Tabs, Tag, Card, Avatar, Typography, Anchor } from 'antd';
  4. import { ReadOutlined, SyncOutlined, HomeOutlined, TeamOutlined } from '@ant-design/icons';
  5. import { useModel, connect, history, Link, useRoutes } from 'umi';
  6. import { Imageprefix } from '@/constants/index'
  7. import ScienceTechnologyParkHomeIntroduction from '@/components/ScienceTechnologyPark/Home/Introduction'
  8. import ScienceTechnologyParkHomeNews from '@/components/ScienceTechnologyPark/Home/News'
  9. import ScienceTechnologyParkHomeNotice from '@/components/ScienceTechnologyPark/Home/Notice'
  10. import ScienceTechnologyParkHomeCompany from '@/components/ScienceTechnologyPark/Home/Company'
  11. import ScienceTechnologyParkHomeConversion from '@/components/ScienceTechnologyPark/Home/Conversion'
  12. import ScienceTechnologyParkHomeActivity from '@/components/ScienceTechnologyPark/Home/Activity'
  13. import ScienceTechnologyParkHomeConstruct from '@/components/ScienceTechnologyPark/Home/Construct'
  14. import ScienceTechnologyParkHomePartner from '@/components/ScienceTechnologyPark/Home/Partner'
  15. import { GetAdvertscheduleList } from '@/services/apis/advertschedule';
  16. const HomePage: React.FC = () => {
  17. const [advertscheduleList, setAdvertscheduleList] = useState<object[]>([])
  18. const [keyModel, setKeyModel] = useState<object[]>([
  19. { title1: '企业', title2: '服务', content: '提供包括政策咨询、资金对接、技术转移和市场拓展在内的全方位企业服务。', icon: <> <HomeOutlined style={{ fontSize: 36, color: '#ffffff' }} /> </> },
  20. { title: '产业', title2: '孵化', content: '重点支持电子信息、人工智能、新能源等高新技术产业的发展,推动产业升级。', icon: <> <SyncOutlined style={{ fontSize: 36, color: '#ffffff' }} /> </> },
  21. { title: '技术', title2: '支持', content: '为企业提供研发支持和技术解决方案,帮助企业解决技术难题,实现快速发展。', icon: <> <ReadOutlined style={{ fontSize: 36, color: '#ffffff' }} /> </> },
  22. { title: '产学研', title2: '合作', content: '构建开放共享的创新平台,促进产学研之间的深度合作,加速科技成果的转化。', icon: <> <TeamOutlined style={{ fontSize: 36, color: '#ffffff' }} /> </> }
  23. ])
  24. useEffect(() => {
  25. GetAdvertscheduleList({ page: 1, pagesize: 4, code: 'kcysylbt' }).then(res => {
  26. setAdvertscheduleList(res.data.advertschedules)
  27. })
  28. }, []);
  29. return (
  30. <>
  31. <ConfigProvider
  32. theme={{
  33. token: {
  34. colorPrimary: '#19be6e',
  35. },
  36. components: {
  37. Button: {
  38. colorText: '#19be6e'
  39. }
  40. }
  41. }}
  42. >
  43. <Carousel arrows style={{ width: '100%' }}>
  44. {/* 16:9比例 */}
  45. <div style={{ borderRadius: 8 }}>
  46. <div style={{
  47. width: '100%',
  48. position: 'relative',
  49. paddingTop: '33.33%',
  50. overflow: 'hidden'
  51. }}>
  52. <video src={`${Imageprefix}park/661_1740982607.mp4`} controls style={{
  53. position: 'absolute',
  54. top: 0,
  55. left: 0,
  56. width: '100%',
  57. height: '100%',
  58. objectFit: 'cover',
  59. overflowClipMargin: 'content-box',
  60. overflow: 'clip'
  61. }} ></video>
  62. </div>
  63. </div>
  64. {
  65. advertscheduleList && advertscheduleList.length && advertscheduleList.map((item, index) => (
  66. <>
  67. <div style={{ borderRadius: 8 }}>
  68. <div style={{
  69. width: '100%',
  70. position: 'relative',
  71. paddingTop: '33.33%',
  72. overflow: 'hidden'
  73. }}>
  74. <Link to={{ pathname: item.target_url }} target='_blank'>
  75. <img src={Imageprefix + item.image_url} style={{
  76. position: 'absolute',
  77. top: 0,
  78. left: 0,
  79. width: '100%',
  80. height: '100%',
  81. }} />
  82. </Link>
  83. </div>
  84. </div>
  85. </>
  86. ))
  87. }
  88. </Carousel>
  89. <Flex justify='space-around' align='center' style={{ width: '100%', background: '#ffffff', padding: 20 }}>
  90. {keyModel && keyModel.length && keyModel.map((item, index) => (
  91. <>
  92. <Flex justify='space-between' align='center' style={{ marginBottom: 20 }}>
  93. <Flex justify='center' align='center' style={{
  94. backgroundColor: '#ffc100',
  95. borderRadius: '50%',
  96. boxShadow: '0 0 10px rgba(0, 0, 0, 0.2)',
  97. border: '12px solid #fff',
  98. padding: 30,
  99. position: 'relative',
  100. width: 140,
  101. height: 140
  102. }}>
  103. {item.icon}
  104. <Flex vertical justify='center' align='center' style={{
  105. backgroundColor: '#a6a6a6',
  106. borderRadius: '100%',
  107. boxShadow: '0 0 10px rgba(0, 0, 0, 0.2)',
  108. border: '8px solid #fff',
  109. padding: 10,
  110. position: 'absolute',
  111. bottom: '-30%',
  112. right: '-30%',
  113. width: 88,
  114. height: 88,
  115. color: '#ffffff'
  116. }}>
  117. <div>
  118. {item.title1}
  119. </div>
  120. <div>
  121. {item.title2}
  122. </div>
  123. </Flex>
  124. </Flex>
  125. <Flex style={{
  126. width: 200,
  127. height: 140,
  128. paddingTop: 30,
  129. paddingLeft: 10
  130. }}>
  131. {item.content}
  132. </Flex>
  133. </Flex>
  134. </>
  135. ))
  136. }
  137. </Flex>
  138. <PageContainer
  139. header={{ title: '', }}
  140. style={{ minHeight: 800 }}
  141. >
  142. <Space direction='vertical' size={40} style={{ width: '100%' }}>
  143. <ScienceTechnologyParkHomeIntroduction></ScienceTechnologyParkHomeIntroduction>
  144. <Row gutter={[40, 20]}>
  145. <Col span={12}>
  146. <ScienceTechnologyParkHomeNews></ScienceTechnologyParkHomeNews>
  147. </Col>
  148. <Col span={12}>
  149. <ScienceTechnologyParkHomeNotice></ScienceTechnologyParkHomeNotice>
  150. </Col>
  151. </Row>
  152. {/* 园区企业 */}
  153. <Row gutter={[40, 20]}>
  154. <Col span={24}>
  155. <ScienceTechnologyParkHomeCompany></ScienceTechnologyParkHomeCompany>
  156. </Col>
  157. </Row>
  158. <Row gutter={[40, 20]}>
  159. <Col span={12}>
  160. <ScienceTechnologyParkHomeConversion></ScienceTechnologyParkHomeConversion>
  161. </Col>
  162. <Col span={12}>
  163. <ScienceTechnologyParkHomeActivity></ScienceTechnologyParkHomeActivity>
  164. </Col>
  165. </Row>
  166. {/* 党建工作 */}
  167. <Row gutter={[40, 20]}>
  168. <Col span={24}>
  169. <ScienceTechnologyParkHomeConstruct></ScienceTechnologyParkHomeConstruct>
  170. </Col>
  171. </Row>
  172. {/* 合作伙伴 */}
  173. <ScienceTechnologyParkHomePartner></ScienceTechnologyParkHomePartner>
  174. <div style={{
  175. width: '100%',
  176. position: 'relative',
  177. paddingTop: '12%', /* 16:9 的比例 */
  178. overflow: 'hidden'
  179. }}>
  180. <Link to={{ pathname: '/talent/home' }} target='_blank'>
  181. <img src='/images/qiuzhitiao.jpg' style={{
  182. position: 'absolute',
  183. top: 0,
  184. left: 0,
  185. width: '100%',
  186. height: '100%',
  187. borderRadius: 6
  188. }} />
  189. </Link>
  190. </div>
  191. </Space>
  192. </PageContainer >
  193. </ConfigProvider >
  194. </>
  195. );
  196. };
  197. export default HomePage;