feat(miniapp): 知识库增加 LAMP 教程入口,修复详情页文章类型判断

This commit is contained in:
weijuesen
2026-08-12 11:31:57 +08:00
parent 0d3124fe39
commit 8bb93ad5c3
3 changed files with 26 additions and 5 deletions
+1
View File
@@ -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}`);
+3 -3
View File
@@ -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);
+22 -2
View File
@@ -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>