import { View, Text } from '@tarojs/components'; import Taro from '@tarojs/taro'; import './index.scss'; interface TabItem { key: string; icon: string; activeIcon: string; label: string; url: string; } const DOCTOR_TABS: TabItem[] = [ { key: 'workbench', icon: '🏠', activeIcon: '🏠', label: '工作台', url: '/pages/pkg-doctor-core/index' }, { key: 'patients', icon: '👤', activeIcon: '👤', label: '患者', url: '/pages/pkg-doctor-core/patients/index' }, { key: 'consultation', icon: '💬', activeIcon: '💬', label: '咨询', url: '/pages/pkg-doctor-core/consultation/index' }, { key: 'settings', icon: '⚙️', activeIcon: '⚙️', label: '我的', url: '/pages/pkg-profile/settings/index' }, ]; interface DoctorTabBarProps { active?: string; } export default function DoctorTabBar({ active }: DoctorTabBarProps) { const currentPath = `/${Taro.getCurrentPages().pop()?.path ?? ''}`; const activeKey = active ?? DOCTOR_TABS.find((t) => currentPath.startsWith(t.url.replace('/index', '')))?.key ?? 'workbench'; const handleTab = (tab: TabItem) => { if (tab.key === activeKey) return; Taro.reLaunch({ url: tab.url }).catch(() => { Taro.redirectTo({ url: tab.url }).catch(() => {}); }); }; return ( {DOCTOR_TABS.map((tab) => ( handleTab(tab)} > {tab.key === activeKey ? tab.activeIcon : tab.icon} {tab.label} ))} ); }