feat(miniapp): 知识库增加 LAMP 教程入口,修复详情页文章类型判断
This commit is contained in:
@@ -31,4 +31,5 @@ export interface KnowledgeArticle {
|
||||
export const listDiseases = () => get<Disease[]>('/knowledge/diseases');
|
||||
export const getDisease = (id: string) => get<Disease>(`/knowledge/diseases/${id}`);
|
||||
export const listAIGuides = () => get<KnowledgeArticle[]>('/knowledge/articles', { kind: 'ai_guide' });
|
||||
export const listLAMPGuides = () => get<KnowledgeArticle[]>('/knowledge/articles', { kind: 'lamp_guide' });
|
||||
export const getArticle = (id: string) => get<KnowledgeArticle>(`/knowledge/articles/${id}`);
|
||||
|
||||
@@ -49,10 +49,10 @@ const DetailPage: React.FC = () => {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
if (kind === 'ai_guide') {
|
||||
setArticle(await getArticle(id));
|
||||
} else {
|
||||
if (kind === 'disease') {
|
||||
setDisease(await getDisease(id));
|
||||
} else {
|
||||
setArticle(await getArticle(id));
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('[KnowledgeDetail] 加载失败:', err);
|
||||
|
||||
@@ -4,11 +4,17 @@ import Taro, { usePullDownRefresh } from '@tarojs/taro';
|
||||
import styles from './index.module.scss';
|
||||
import {
|
||||
listAIGuides,
|
||||
listLAMPGuides,
|
||||
listDiseases,
|
||||
type Disease,
|
||||
type KnowledgeArticle,
|
||||
} from '@/api/knowledge';
|
||||
|
||||
const GUIDE_LABELS: Record<string, string> = {
|
||||
ai_guide: 'AI 解读',
|
||||
lamp_guide: 'LAMP 教程',
|
||||
};
|
||||
|
||||
const CATEGORY_LABELS: Record<string, string> = {
|
||||
viral: '病毒性',
|
||||
fungal: '真菌性',
|
||||
@@ -20,16 +26,19 @@ const CATEGORY_LABELS: Record<string, string> = {
|
||||
const KnowledgePage: React.FC = () => {
|
||||
const [diseases, setDiseases] = useState<Disease[]>([]);
|
||||
const [guides, setGuides] = useState<KnowledgeArticle[]>([]);
|
||||
const [lampGuides, setLampGuides] = useState<KnowledgeArticle[]>([]);
|
||||
const [loading, setLoading] = useState(true);
|
||||
|
||||
const fetchData = useCallback(async () => {
|
||||
try {
|
||||
const [diseaseRes, guideRes] = await Promise.all([
|
||||
const [diseaseRes, guideRes, lampRes] = await Promise.all([
|
||||
listDiseases().catch(() => [] as Disease[]),
|
||||
listAIGuides().catch(() => [] as KnowledgeArticle[]),
|
||||
listLAMPGuides().catch(() => [] as KnowledgeArticle[]),
|
||||
]);
|
||||
setDiseases(diseaseRes);
|
||||
setGuides(guideRes);
|
||||
setLampGuides(lampRes);
|
||||
} catch (err) {
|
||||
console.error('[Knowledge] 数据加载失败:', err);
|
||||
Taro.showToast({
|
||||
@@ -62,7 +71,18 @@ const KnowledgePage: React.FC = () => {
|
||||
{guides.map((a) => (
|
||||
<View key={a.id} className={styles.guideCard} onClick={() => openGuide(a)}>
|
||||
<View className={styles.guideHeader}>
|
||||
<Text className={styles.guideBadge}>AI 解读</Text>
|
||||
<Text className={styles.guideBadge}>{GUIDE_LABELS[a.kind] || a.kind}</Text>
|
||||
<Text className={styles.guideArrow}>›</Text>
|
||||
</View>
|
||||
<Text className={styles.guideTitle}>{a.title}</Text>
|
||||
{a.summary ? <Text className={styles.guideSummary}>{a.summary}</Text> : null}
|
||||
</View>
|
||||
))}
|
||||
|
||||
{lampGuides.map((a) => (
|
||||
<View key={a.id} className={styles.guideCard} onClick={() => openGuide(a)}>
|
||||
<View className={styles.guideHeader}>
|
||||
<Text className={styles.guideBadge}>{GUIDE_LABELS[a.kind] || a.kind}</Text>
|
||||
<Text className={styles.guideArrow}>›</Text>
|
||||
</View>
|
||||
<Text className={styles.guideTitle}>{a.title}</Text>
|
||||
|
||||
Reference in New Issue
Block a user