import React, { useCallback, useEffect, useState } from 'react'; import { ScrollView, Text, View } from '@tarojs/components'; import Taro, { usePullDownRefresh } from '@tarojs/taro'; import styles from './index.module.scss'; import { listAIGuides, listDiseases, type Disease, type KnowledgeArticle, } from '@/api/knowledge'; const CATEGORY_LABELS: Record = { viral: '病毒性', fungal: '真菌性', bacterial: '细菌性', protozoan: '原虫性', other: '其他', }; const KnowledgePage: React.FC = () => { const [diseases, setDiseases] = useState([]); const [guides, setGuides] = useState([]); const [loading, setLoading] = useState(true); const fetchData = useCallback(async () => { try { const [diseaseRes, guideRes] = await Promise.all([ listDiseases().catch(() => [] as Disease[]), listAIGuides().catch(() => [] as KnowledgeArticle[]), ]); setDiseases(diseaseRes); setGuides(guideRes); } catch (err) { console.error('[Knowledge] 数据加载失败:', err); Taro.showToast({ title: err instanceof Error ? err.message : '数据加载失败', icon: 'none', }); } finally { setLoading(false); } }, []); useEffect(() => { fetchData(); }, [fetchData]); usePullDownRefresh(() => { fetchData().then(() => Taro.stopPullDownRefresh()); }); const openGuide = (a: KnowledgeArticle) => { Taro.navigateTo({ url: `/pages/knowledge/detail/index?kind=ai_guide&id=${a.id}` }); }; const openDisease = (d: Disease) => { Taro.navigateTo({ url: `/pages/knowledge/detail/index?kind=disease&id=${d.id}` }); }; return ( {guides.map((a) => ( openGuide(a)}> AI 解读 {a.title} {a.summary ? {a.summary} : null} ))} 蚕病百科 {diseases.map((d) => ( openDisease(d)}> {d.name} {CATEGORY_LABELS[d.category] || d.category} {d.symptoms || '暂无症状描述'} ))} {!loading && diseases.length === 0 ? ( 暂无蚕病百科内容 ) : null} ); }; export default KnowledgePage;