import { useState, useEffect } from 'react'; import { View, Text, ScrollView } from '@tarojs/components'; import Taro, { useRouter } from '@tarojs/taro'; import * as doctorApi from '@/services/doctor'; import Loading from '@/components/Loading'; import EmptyState from '@/components/EmptyState'; import { useElderClass } from '../../../hooks/useElderClass'; import { getStatusInlineStyle, getStatusLabel } from '@/utils/statusTag'; import './index.scss'; const TABS = [ { key: '', label: '全部' }, { key: 'pending', label: '待处理' }, { key: 'in_progress', label: '进行中' }, { key: 'completed', label: '已完成' }, { key: 'overdue', label: '已逾期' }, ]; export default function FollowUpList() { const router = useRouter(); const patientId = router.params.patientId || ''; const modeClass = useElderClass(); const [tasks, setTasks] = useState([]); const [activeTab, setActiveTab] = useState(''); const [loading, setLoading] = useState(true); const [total, setTotal] = useState(0); useEffect(() => { loadTasks(); }, [activeTab, patientId]); const loadTasks = async () => { setLoading(true); try { const res = await doctorApi.listFollowUpTasks({ page: 1, page_size: 50, status: activeTab || undefined, patient_id: patientId || undefined, }); setTasks(res.data || []); setTotal(res.total || 0); } catch { Taro.showToast({ title: '加载失败', icon: 'none' }); } finally { setLoading(false); } }; const formatDate = (dateStr: string) => { return new Date(dateStr).toLocaleDateString('zh-CN', { month: 'numeric', day: 'numeric' }); }; const getTypeLabel = (type: string) => { const map: Record = { phone: '电话随访', visit: '门诊随访', online: '线上随访', home: '家访', }; return map[type] || type; }; if (loading && tasks.length === 0) return ; return ( {TABS.map((t) => ( setActiveTab(t.key)} > {t.label} ))} 共 {total} 项任务 {tasks.length === 0 ? ( ) : ( {tasks.map((task) => { return ( Taro.navigateTo({ url: `/pages/doctor/followup/detail/index?id=${task.id}` })} > {getTypeLabel(task.follow_up_type)} {getStatusLabel(task.status)} {task.patient_name || '未知患者'} 计划日期: {formatDate(task.planned_date)} ); })} )} ); }