import { useEffect, useRef } from 'react' import { Link, useParams } from 'react-router-dom' import { motion } from 'framer-motion' import { ArrowRight, FileText, Wrench, FileOutput, Lightbulb } from 'lucide-react' import { knowledgeAreas, processesByKnowledgeArea, knowledgeAreaMap, processGroupMap } from '@/data' const containerVariants = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: 0.03 } }, } const itemVariants = { hidden: { opacity: 0, y: 10 }, visible: { opacity: 1, y: 0 }, } // 跳过动画时的变体(立即显示) const skipAnimationVariants = { hidden: { opacity: 1, y: 0 }, visible: { opacity: 1, y: 0 }, } export function KnowledgeAreasPage() { const { id } = useParams() const selectedKA = id ? knowledgeAreaMap.get(id) : null const processes = id ? processesByKnowledgeArea.get(id) || [] : [] // 检测是否应该跳过动画(返回页面时) const hasVisitedRef = useRef(false) const shouldSkipAnimation = hasVisitedRef.current useEffect(() => { // 标记已访问,下次渲染时跳过动画 hasVisitedRef.current = true }, []) // 根据是否跳过动画选择变体 const activeItemVariants = shouldSkipAnimation ? skipAnimationVariants : itemVariants if (selectedKA) { return (
{/* 面包屑 */} {/* 知识领域标题 - 紧凑版 */}
{selectedKA.order}

{selectedKA.name}

{selectedKA.nameEn}

{processes.length}
个过程

{selectedKA.description}

{/* 敏捷裁剪因素 */} {selectedKA.tailoringFactors && selectedKA.tailoringFactors.length > 0 && (

敏捷裁剪因素

{selectedKA.tailoringFactors.map((factor, index) => (
{index + 1}

{factor.title}

{factor.description}

))}
)} {/* 过程列表 - 紧凑版 */} {processes.map((process) => { const pg = processGroupMap.get(process.processGroupId) return (
{process.code}

{process.name}

{process.nameEn}

{process.inputs.length} {process.tools.length} {process.outputs.length} {pg && ( {pg.name} )}
) })}
) } // 显示知识领域列表 - 紧凑版双列 return (

知识领域

10大项目管理知识领域

{knowledgeAreas.map((ka) => (
{ka.order}

{ka.name}

{ka.nameEn}

{ka.processCount}个
))}
) }