feat(screen): 园区大屏园区资讯 widget
- ParkFeed 拉取 /park/api/content/feed,滚动展示本园区内容标题;图标用 @appica/icons-react(禁用emoji) - DataScreen 挂载 ParkFeed Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -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 (
|
||||
<div className="bd-feed" style={{ marginTop: 12 }}>
|
||||
<div className="bd-ticker-title"><Broadcast size={12} style={{ verticalAlign: '-1px', marginRight: 6 }} />园区资讯 <span>({items.length})</span></div>
|
||||
<div className="bd-ticker">
|
||||
<div className="bd-ticker-inner">
|
||||
{[...items, ...items].map((c, i) => (
|
||||
<div className="bd-ticker-item" key={i} title={c.title}>
|
||||
<span className="bd-ticker-dot" />
|
||||
{c.title}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -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() {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<ParkFeed />
|
||||
|
||||
{/* 园区概览(保持在最底部) */}
|
||||
<ParkOverviewStrip d={d} />
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user