diff --git a/src/components/ParkFeed.jsx b/src/components/ParkFeed.jsx new file mode 100644 index 0000000..e7ad4a2 --- /dev/null +++ b/src/components/ParkFeed.jsx @@ -0,0 +1,33 @@ +import React, { useEffect, useState } from 'react'; +import { Broadcast } from '@appica/icons-react'; +import { getApiBase } from '../config'; +import '../styles/datascreen.css'; + +/** 园区资讯 widget:拉取本园区内容(/park/api/content/feed),滚动展示标题(大屏)。 */ +export default function ParkFeed() { + const [items, setItems] = useState([]); + useEffect(() => { + let alive = true; + fetch(`${getApiBase()}/api/content/feed`, { cache: 'no-store' }) + .then((r) => r.json()) + .then((d) => { if (alive) setItems(Array.isArray(d?.items) ? d.items : []); }) + .catch(() => {}); + return () => { alive = false; }; + }, []); + if (!items.length) return null; + return ( +
+
园区资讯 ({items.length})
+
+
+ {[...items, ...items].map((c, i) => ( +
+ + {c.title} +
+ ))} +
+
+
+ ); +} diff --git a/src/pages/DataScreen.jsx b/src/pages/DataScreen.jsx index cd41419..96adca9 100644 --- a/src/pages/DataScreen.jsx +++ b/src/pages/DataScreen.jsx @@ -2,6 +2,7 @@ import { useState, useEffect, useRef } from 'react'; import '../styles/datascreen.css'; import Icon from '../components/Icons'; import ParkOverviewStrip from '../components/ParkOverviewStrip'; +import ParkFeed from '../components/ParkFeed'; import { useParkSim } from '../utils/parkData'; /* ========================================================= @@ -576,6 +577,8 @@ export default function DataScreen() { + + {/* 园区概览(保持在最底部) */}