import { useNavigate } from 'react-router-dom' import { useUserStore } from '@/stores/user' import { useTranslation } from 'react-i18next' import { Toast } from 'antd-mobile' import { showLanguageSwitcher } from '@/components/LanguageSwitcher' import styles from './dashboard.module.css' interface QuickAction { id: string icon: string label: string path: string color: string description?: string } // 从应用页面迁移的完整应用列表 const quickActions: QuickAction[] = [ { id: '1', icon: '✈️', label: '出差申请', path: '/business-trip/apply', color: '#1677ff', description: '提交出差申请' }, { id: '2', icon: '📝', label: '采购申请', path: '/purchase/apply', color: '#52c41a', description: '物品采购审批' }, { id: '3', icon: '📦', label: '备货录入', path: '/stock/entry', color: '#faad14', description: '备货信息录入' }, { id: '4', icon: '📅', label: '日程管理', path: '/schedule', color: '#722ed1', description: '个人日程安排' }, { id: '5', icon: '💰', label: '报销申请', path: '/expense/apply', color: '#eb2f96', description: '费用报销审批' }, { id: '6', icon: '📋', label: '请假申请', path: '/leave/apply', color: '#13c2c2', description: '请假审批' }, { id: '7', icon: '🚗', label: '用车申请', path: '/car/apply', color: '#f759ab', description: '公车使用申请' }, { id: '8', icon: '🎁', label: '礼品申请', path: '/gift/apply', color: '#ff7a45', description: '礼品采购申请' }, { id: '9', icon: '📊', label: '数据报表', path: '/reports', color: '#1890ff', description: '业务数据统计' }, { id: '10', icon: '👥', label: '通讯录', path: '/contacts', color: '#096dd9', description: '内部通讯录' }, { id: '11', icon: '📁', label: '文件中心', path: '/files', color: '#595959', description: '文件共享管理' }, { id: '12', icon: '⚙️', label: '系统设置', path: '/settings', color: '#8c8c8c', description: '系统偏好设置' }, ] export default function Dashboard() { const navigate = useNavigate() const { user } = useUserStore() const { t } = useTranslation() const handleQuickAction = (action: QuickAction) => { // 允许的应用:出差申请、审批、系统设置 const allowedPaths = ['/business-trip/apply', '/business-trip', '/settings'] if (allowedPaths.includes(action.path)) { navigate(action.path) } else { Toast.show({ content: '功能开发中...', duration: 1500 }) } } const getCurrentLanguage = () => { const lang = localStorage.getItem('i18nextLng') || 'zh' const langMap: Record = { zh: '🇨🇳', en: '🇬🇧', ru: '🇷🇺', es: '🇪🇸', fr: '🇫🇷', } return langMap[lang] || '🇨🇳' } return (
{/* 顶部欢迎区 */}
{user?.name?.[0] || 'U'}

{t('dashboard.greeting', { name: user?.name || t('login.username') })}

{new Date().toLocaleDateString('zh-CN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}

{/* 快捷入口 */}

快捷入口

{quickActions.slice(0, 3).map((action) => (
handleQuickAction(action)} >
{action.icon}
{action.label}
))}
{/* 所有应用 */}

所有应用

navigate('/approval')}>
✍️
审批
handleQuickAction(quickActions[8])}>
{quickActions[8].icon}
{quickActions[8].label}
handleQuickAction(quickActions[11])}>
{quickActions[11].icon}
{quickActions[11].label}
{/* 底部安全区域 */}
) }