diff --git a/config/routes/competitions.ts b/config/routes/competitions.ts index f79bac9fc..b97d1c692 100644 --- a/config/routes/competitions.ts +++ b/config/routes/competitions.ts @@ -19,6 +19,10 @@ export const Competitions = { path: '/competitions/2026/schedule', component: '@/pages/2026/schedule', }, + { + path: '/competitions/2026/center', + component: '@/pages/2026/center', + }, { path: '/competitions/2026', component: '@/pages/2026/home', diff --git a/src/pages/2026/center/index.jsx b/src/pages/2026/center/index.jsx new file mode 100644 index 000000000..ee680bbe2 --- /dev/null +++ b/src/pages/2026/center/index.jsx @@ -0,0 +1,46 @@ +import SpeTitle from '../components/Title' +import styles from './index.less' +import React, { useState, useRef } from 'react' +import icon1 from '../img/center/icon1.webp' +import directions from './info' + +function Center(props) { + + + + return
+ +
+
+ +
+ +
+
+
+ { + directions.map(e => { + return
+
+
+

+

+
+ { + e.tasks.map(track => { + return
+ +
+ }) + } +
+
+
+
+ }) + } + +
+} + +export default Center \ No newline at end of file diff --git a/src/pages/2026/center/index.less b/src/pages/2026/center/index.less new file mode 100644 index 000000000..1b2f6550a --- /dev/null +++ b/src/pages/2026/center/index.less @@ -0,0 +1,66 @@ +.center { + background: url('../img/center/page-bg.webp'); + background-repeat: no-repeat; + background-size: 100% auto; + display: flex; + align-items: center; + flex-direction: column; + .title { + padding-top: 40px; + } + .search_wrap { + margin-top: 22px; + width: 680px; + height: 120px; + background: url('../img/center/search-bg.webp'); + background-repeat: no-repeat; + background-size: 100% 100%; + } + .search { + margin-top: 20px; + margin-left: auto; + margin-right: auto; + width:660px; + height:55px; + background:#ffffff; + border:1px solid; + border-color:rgba(22, 76, 228, 0.05); + border-radius:28px; + display: flex; + align-items: center; + justify-content: space-between; + z-index: 1; + input { + border: none; + margin-left: 30px; + width: 100%; + height: 40px; + line-height: 40px; + font-family:Alibaba PuHuiTi; + color:#2b3369; + font-size:15px; + &:focus-visible { + border: none; + outline: none; + } + margin-right: 30px; + } + .search_icon { + margin-right: 9px; + width: 39px; + height: 39px !important; + background: #091221; + flex-shrink: 0; + color: #ffffff; + text-align: center; + line-height:39px; + margin-right: 8px; + cursor: pointer; + border-radius: 50%; + img { + width: 18px; + height: 18px; + } + } + } +} \ No newline at end of file diff --git a/src/pages/2026/center/info.js b/src/pages/2026/center/info.js new file mode 100644 index 000000000..381a737c1 --- /dev/null +++ b/src/pages/2026/center/info.js @@ -0,0 +1,109 @@ +export const directions = [{ + id: 1, + name: 'AI方向', + desc: '聚焦人工智能前沿技术与应用,探索大模型、智能算法在开源场景下的创新实践', + tasks: { + '开源案例教学赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + '开源任务挑战赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + '开源代码评注赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + '开源代码评注赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + } + },{ + id: 1, + name: 'AI方向', + desc: '聚焦人工智能前沿技术与应用,探索大模型、智能算法在开源场景下的创新实践', + tasks: { + '开源案例教学赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + '开源任务挑战赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + '开源代码评注赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + '开源代码评注赛道': [{ name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + { name: '基于AI/Agent的NPU算子自动生成',level: 2,owner: '小米'}, + ], + } + }] \ No newline at end of file diff --git a/src/pages/2026/img/center/icon1.webp b/src/pages/2026/img/center/icon1.webp new file mode 100644 index 000000000..0f6807b5c Binary files /dev/null and b/src/pages/2026/img/center/icon1.webp differ diff --git a/src/pages/2026/img/center/icon2.webp b/src/pages/2026/img/center/icon2.webp new file mode 100644 index 000000000..e6b8f41ca Binary files /dev/null and b/src/pages/2026/img/center/icon2.webp differ diff --git a/src/pages/2026/img/center/icon3.webp b/src/pages/2026/img/center/icon3.webp new file mode 100644 index 000000000..5e4ec02e9 Binary files /dev/null and b/src/pages/2026/img/center/icon3.webp differ diff --git a/src/pages/2026/img/center/icon4.webp b/src/pages/2026/img/center/icon4.webp new file mode 100644 index 000000000..c435b1175 Binary files /dev/null and b/src/pages/2026/img/center/icon4.webp differ diff --git a/src/pages/2026/img/center/page-bg.webp b/src/pages/2026/img/center/page-bg.webp new file mode 100644 index 000000000..c9a51b29c Binary files /dev/null and b/src/pages/2026/img/center/page-bg.webp differ diff --git a/src/pages/2026/img/center/search-bg.webp b/src/pages/2026/img/center/search-bg.webp new file mode 100644 index 000000000..53293bc94 Binary files /dev/null and b/src/pages/2026/img/center/search-bg.webp differ diff --git a/src/pages/2026/img/schedule/item1.webp b/src/pages/2026/img/schedule/item1.webp new file mode 100644 index 000000000..0def2bf05 Binary files /dev/null and b/src/pages/2026/img/schedule/item1.webp differ diff --git a/src/pages/2026/img/schedule/item2.webp b/src/pages/2026/img/schedule/item2.webp new file mode 100644 index 000000000..978c030a2 Binary files /dev/null and b/src/pages/2026/img/schedule/item2.webp differ diff --git a/src/pages/2026/img/schedule/item3.webp b/src/pages/2026/img/schedule/item3.webp new file mode 100644 index 000000000..414c3a35d Binary files /dev/null and b/src/pages/2026/img/schedule/item3.webp differ diff --git a/src/pages/2026/schedule/index.jsx b/src/pages/2026/schedule/index.jsx index b167fa6b2..72cda2d2d 100644 --- a/src/pages/2026/schedule/index.jsx +++ b/src/pages/2026/schedule/index.jsx @@ -24,8 +24,8 @@ function Schedule(props) { const scheduleList = [ { id: 1, periodId: 1, date: '3月20日', content: '我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行', status: '报名招募期' }, - { id: 2, periodId: 1, date: '3月28日', content: '我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行', status: '报名招募期' }, - { id: 2, periodId: 1, date: '3月28日', content: '我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行', status: '报名招募期' }, + { id: 2, periodId: 1, date: '3月28日', content: '我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行', status: '报名招募期' }, + { id: 2, periodId: 1, date: '3月28日', content: '我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行', status: '报名招募期' }, { id: 2, periodId: 1, date: '3月28日', content: '我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行', status: '报名招募期' }, { id: 2, periodId: 1, date: '3月28日', content: '我是此日期的具体赛事安排占一行我是此日期的具体赛事安排占一行', status: '报名招募期' }, { id: 3, periodId: 2, date: '5月20日', content: '我是此日期的具体赛事安排占一行我是此日期的', status: '报名招募期' }, @@ -125,8 +125,10 @@ function Schedule(props) { className={styles.schedule_item} >
{schedule.date}
-
{schedule.content}
-
{schedule.status}
+
+
{schedule.content}
+
{schedule.status}
+
))} diff --git a/src/pages/2026/schedule/index.less b/src/pages/2026/schedule/index.less index 72b0f67bb..c2885d821 100644 --- a/src/pages/2026/schedule/index.less +++ b/src/pages/2026/schedule/index.less @@ -13,6 +13,7 @@ width: 1600px; margin: auto; z-index: 1; + margin-top: 55px; .rules_tab { margin-top: 55px; @@ -202,7 +203,7 @@ &:after { content: ''; position: absolute; - left: 9px; + left: 10px; top: var(--active-top, 0px); width:5px; height:80px; @@ -290,42 +291,84 @@ } .schedule_item { - background: #f5f5f5; - border-radius: 10px; - padding: 20px; + width: 1090px; + height: 100px; + border: 1px solid; + border-color: #ffffff; + border-radius: 16px; + padding: 40px; margin-bottom: 20px; transition: all 0.3s ease; - display: flex; align-items: center; gap: 20px; - .schedule_date { - font-size: 14px; - color: #666; - min-width: 80px; + &:nth-child(2n + 1) { + background: url('../img/schedule/item1.webp'), #ffffff; + background-repeat: no-repeat; + background-size: 100% 100%; } - .schedule_content { + &:nth-child(2n) { + background: url('../img/schedule/item2.webp'), #ffffff; + background-repeat: no-repeat; + background-size: 100% 100%; + } + + .schedule_info { + display: flex; + justify-content: space-between; flex: 1; - font-size: 16px; - color: #333; + .schedule_content { + flex: 1; + font-size: 16px; + color: #333; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 800px; + } + + .schedule_status { + font-size: 14px; + color: #999; + } } - .schedule_status { - font-size: 14px; - color: #999; + .schedule_date { + font-family: alibabaPuhuiM; + color: #091221; + font-size: 16px; } &:hover { - background: linear-gradient(270.49deg, #8959f5 2.12%, #2042c6 98.95%); + height: 160px; color: white; - + background: url('../img/schedule/item3.webp'); + background-repeat: no-repeat; + background-size: 100% 100%; + align-items: flex-start; .schedule_date, .schedule_content, .schedule_status { color: white; } + .schedule_date { + font-size: 20px; + line-height: 20px; + } + .schedule_content { + font-size: 28px; + line-height: 28px; + width: 930px; + } + .schedule_status { + font-size: 18px; + margin-top: 20px; + } + .schedule_info { + flex-direction: column; + } } } }