# RMO 网站架构文档 本文档基于当前已完成的代码,描述 RMO 一站式临床试验风险管理网站的前端架构。 --- ## 一、项目概述 ### 1.1 项目定位 - **名称**:RMO 一站式临床试验风险管理网站(rmo-website) - **技术形态**:单页应用(SPA),分为**免登录浏览区**和**登录后系统区**两部分。 - **免登录浏览区**:首页、风险职责、风险数据、风险活动(临床试验、上市应用)、海外风险、资源中心等公开内容;主导航为**三级菜单结构**。 - **登录后系统区**:工作台、信息资讯、项目列表、保障评估、智能工具等功能模块,根据用户角色呈现有权限的内容。 - **设计原则**:统一布局与交互、简洁可维护、模块化可扩展、基于角色的权限控制。 ### 1.2 技术栈 | 类别 | 技术 | 版本 | 说明 | |------|------|------|------| | 框架 | React | ^18.2.0 | UI 框架 | | 语言 | TypeScript | ^5.2.2 | 类型与工程化 | | 构建 | Vite | ^5.0.8 | 开发与生产构建 | | 路由 | react-router-dom | ^6.20.0 | 客户端路由 | | 样式 | 原生 CSS | - | 无 UI 组件库,CSS 变量 + 模块化 CSS | **说明**: - 当前无全局状态管理库(如 Redux/Pinia)、无 UI 组件库;页面级状态以 React 本地 state 为主。 - **登录后系统需要引入全局状态管理**:用于存储用户信息、角色权限、登录状态等,建议使用 Context API 或 Zustand/Redux Toolkit。 - **路由守卫**:登录后路由需要权限验证,未登录用户访问登录后页面应重定向到登录页。 --- ## 二、目录结构 ``` RMO网站/ ├── index.html # 入口 HTML ├── package.json ├── vite.config.ts ├── tsconfig.json ├── public/ # 静态资源(复制到构建输出) │ └── pic/ # 图片(含 logo 等) ├── pic/ # 开发阶段图片引用(与 public 对应) ├── src/ │ ├── main.tsx # 应用入口,挂载 #root │ ├── App.tsx # 根组件:Router + Layout + Routes │ ├── index.css # 全局样式与 CSS 变量 │ ├── styles/ │ │ └── common.css # 公共页面样式(PageContainer、PageHeader 等) │ ├── components/ # 公共组件 │ │ ├── Layout.tsx # 整体布局(Header + main + Footer) │ │ ├── Layout.css │ │ ├── Header.tsx # 顶部导航(含下拉菜单) │ │ ├── Header.css │ │ ├── Footer.tsx # 页脚 │ │ ├── Footer.css │ │ ├── PageContainer.tsx # 页面根容器(规范必用) │ │ ├── PageHeader.tsx # 页面头部(标题、描述、操作区) │ │ ├── ProtectedRoute.tsx # 路由守卫组件(登录后路由使用) │ │ ├── DashboardLayout.tsx # 登录后系统布局(侧边栏 + 主内容区) │ │ └── DashboardLayout.css │ ├── contexts/ # Context API(用户状态、权限等) │ │ └── AuthContext.tsx # 认证上下文(用户信息、角色、登录状态) │ └── pages/ # 页面级组件(按业务模块) │ ├── Home.tsx / Home.css │ ├── Login.tsx / Login.css │ ├── RiskDutiesOverview.tsx / RiskDutiesOverview.css # 风险职责总览 │ ├── Sponsor.tsx / Sponsor.css │ ├── Holder.tsx / Holder.css │ ├── Institution.tsx / Institution.css │ ├── Participant.tsx / Participant.css │ ├── ServiceProvider.tsx / ServiceProvider.css │ ├── RmoMode.tsx / RmoMode.css # 临床试验(含子页路由) │ ├── RmoModeOverview.tsx # 临床试验模块首页 │ ├── PostMarket.tsx / PostMarket.css │ ├── Overseas.tsx / Overseas.css │ ├── SmartAcquisition.tsx # 风险数据-智能获取 │ ├── PVReport.tsx # 风险数据-PV报告 │ ├── DrugSafetyDict.tsx # 风险数据-药安字典 │ ├── RiskData.css # 风险数据页面共用样式 │ ├── ResourceCenter.tsx / ResourceCenter.css # 资源中心(含子页路由) │ ├── ResourceCenterOverview.tsx # 资源中心模块首页 │ ├── FAQ.tsx / FAQ.css │ ├── Company.tsx / Company.css # 未接入路由 │ ├── Services.tsx / Services.css # 未接入路由 │ └── dashboard/ # 登录后系统页面 │ ├── Dashboard.tsx / Dashboard.css # 工作台 │ ├── News.tsx / News.css # 信息资讯 │ ├── ProjectList.tsx / ProjectList.css # 项目列表 │ ├── ProjectDetail.tsx / ProjectDetail.css # 项目明细 │ ├── CoverageAssessment.tsx / CoverageAssessment.css # 保障评估 │ ├── Tools.tsx / Tools.css # 智能工具 │ ├── PremiumCalculator.tsx / PremiumCalculator.css # 保费测算工具 │ ├── ICFEditor.tsx / ICFEditor.css # ICF智能修改 │ └── RiskScoring.tsx / RiskScoring.css # 方案风险评分 ├── ReferenceBook/ # 参考资料(文档等) ├── RMO网站需求文档.md ├── 前端技术设计规范.md ├── 快速启动指南.md └── 网站架构.md # 本文件 ``` --- ## 三、应用入口与路由架构 ### 3.1 入口链路 ``` index.html →