- navigateToLogin 添加去重 + reLaunch 失败降级 redirectTo - request.ts safeReLaunch 添加目标页检测 + 失败降级 - 退出登录 reLaunch 失败降级 redirectTo - DoctorTabBar / 首页医生端跳转 reLaunch 失败降级 - 网络恢复时正确清理 toast 状态和定时器
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
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 (
|
|
<View className="doctor-tabbar" role="tablist">
|
|
{DOCTOR_TABS.map((tab) => (
|
|
<View
|
|
key={tab.key}
|
|
className={`doctor-tabbar__item ${tab.key === activeKey ? 'doctor-tabbar__item--active' : ''}`}
|
|
role="tab"
|
|
aria-selected={tab.key === activeKey}
|
|
onClick={() => handleTab(tab)}
|
|
>
|
|
<Text className="doctor-tabbar__icon">{tab.key === activeKey ? tab.activeIcon : tab.icon}</Text>
|
|
<Text className="doctor-tabbar__label">{tab.label}</Text>
|
|
</View>
|
|
))}
|
|
</View>
|
|
);
|
|
}
|