// ============================================================ // WechatWorkPage — 企业微信二维码 Modal 内容 // // 点击导航栏"企业微信"后以 Modal 形式展示二维码。 // 数据来源:GET /api/v1/creatives(Banner API) // // 识别逻辑:Banner 中 category === 'promotion' 的条目, // 其 image_url 为企业微信二维码图片 // ============================================================ import { useEffect, useState, useCallback } from 'react'; import { Spin, Empty } from 'antd'; import { WechatOutlined } from '@ant-design/icons'; import { fetchBanners, type Banner } from '@/services/modules/banner'; export function WechatWorkPage() { const [banner, setBanner] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const load = useCallback(async () => { setLoading(true); setError(null); try { const list = await fetchBanners(); // category === 'promotion' → 企业微信二维码 const promotion = list.find( (item) => item.is_active && item.category === 'promotion', ); setBanner(promotion ?? null); } catch (err) { setError((err as Error).message || '加载失败'); } finally { setLoading(false); } }, []); useEffect(() => { void load(); }, [load]); // 加载态 if (loading) { return (
); } // 无数据 / 错误 if (error || !banner || !banner.image_url) { return (
} description={error || '暂未获取到企业微信二维码,请联系管理员'} />
); } return (
{/* 二维码图片 */}
企业微信二维码
{/* 标题(如果 Banner 有标题则显示) */} {banner.title && (

{banner.title}

)} {/* 提示文字 */}

请使用微信扫描二维码添加企业微信

); }