README.md 9.7 KB

长者档案功能 - 完整文档

📚 文档导航

本目录包含长者档案功能的完整实现和文档:

文件 说明
QUICK_START.md 🚀 快速开始指南
ELDER_PROFILE_FEATURE.md 📖 详细功能文档
TEST_GUIDE.md 🧪 测试指南
CODE_EXAMPLES.md 💻 代码示例
README.md 📚 本文件

🎯 功能概述

主要功能

在长者卡片上添加"长者档案"按钮,点击可以查看长者的详细信息:

  • 基本信息: 名字、年龄、性别
  • 联系方式: 长者电话、家属电话、地址
  • 预警历史: 历史预警记录、预警类型、预警信息、发生时间
  • 头像显示: 使用长者名字的第一个字符
  • 假数据支持: 接口暂无数据时自动生成测试数据

核心特性

  • 🎨 美观的弹窗设计,与整体风格一致
  • 📱 响应式布局,适配不同屏幕
  • ⚡ 快速加载,支持缓存
  • 🔄 自动重试,网络错误时使用假数据
  • 📊 预警历史支持滚动显示

📁 实现文件

新增文件

src/views/Home/components/
└── ElderProfileDialog.vue          # 长者档案弹窗组件

修改文件

src/views/Home/
├── components/
│   ├── ElderlyCard.vue             # 添加档案按钮
│   └── ElderlyList.vue             # 传递事件
└── home-refactored.vue             # 集成档案组件

🔄 工作流程

用户操作流程

1. 用户在老人列表中看到长者卡片
   ↓
2. 点击"长者档案"按钮
   ↓
3. 弹窗打开,显示加载状态
   ↓
4. 调用接口获取长者信息
   ↓
5. 显示长者档案(真实数据或假数据)
   ↓
6. 用户可以查看预警历史
   ↓
7. 点击关闭按钮关闭弹窗

技术实现流程

ElderlyCard 组件
    ↓ 点击档案按钮
    ↓ emit('viewProfile', elderly)
ElderlyList 组件
    ↓ emit('viewProfile', elderly)
home-refactored.vue
    ↓ openElderProfileDialog(elderly)
    ↓ currentProfileElderId = elderly.id
    ↓ elderProfileDialogVisible = true
ElderProfileDialog 组件
    ↓ 监听 elderId 变化
    ↓ 调用 fetchElderDetail(elderId)
    ↓ GET /api/pc/admin/getElderDetail?elderId=xxx
    ↓ 显示数据或假数据

🎨 UI 设计

弹窗布局

┌─────────────────────────────────────────┐
│  长者档案                            [×] │  ← 标题和关闭按钮
├─────────────────────────────────────────┤
│                                         │
│  ┌─────────────────────────────────┐   │
│  │ [头像]  基本信息                │   │  ← 基本信息卡片
│  │         名字、年龄、性别        │   │
│  └─────────────────────────────────┘   │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │ 联系方式                        │   │  ← 联系方式卡片
│  │ 长者电话、家属电话、地址        │   │
│  └─────────────────────────────────┘   │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │ 预警历史 (3)                    │   │  ← 预警历史卡片
│  │ ┌─────────────────────────────┐ │   │
│  │ │ [预警类型]  时间             │ │   │
│  │ │ 预警信息                    │ │   │
│  │ └─────────────────────────────┘ │   │
│  │ ┌─────────────────────────────┐ │   │
│  │ │ [预警类型]  时间             │ │   │
│  │ │ 预警信息                    │ │   │
│  │ └─────────────────────────────┘ │   │
│  └─────────────────────────────────┘   │
│                                         │
└─────────────────────────────────────────┘

颜色方案

  • 主色: 蓝色 (#1a73e8)
  • 辅色: 紫色 (#7b61ff)
  • 强调色: 橙色 (#fd9644)
  • 背景: 深色 (rgb(26 31 46))
  • 文字: 白色 (#fff)

📊 数据结构

长者档案数据

{
  id: 1,                           // 长者ID
  name: "王奶奶",                  // 长者名称
  avatar: undefined,               // 头像URL(可选)
  age: 72,                         // 年龄
  gender: "女",                    // 性别
  elderPhone: "13800138000",       // 长者电话
  relativePhone: "13900139000",    // 家属电话
  address: "北京市朝阳区建国路1号", // 地址
  warningData: [                   // 预警历史
    {
      eventType: "跌倒预警",       // 预警类型
      message: "检测到长者跌倒,请立即查看", // 预警信息
      happensAt: "2024-01-15T10:30:00Z"    // 发生时间
    }
  ]
}

🔌 API 接口

获取长者档案详情

端点: GET /api/pc/admin/getElderDetail

参数:

elderId: number (query)

响应:

{
  "id": 1,
  "name": "王奶奶",
  "age": 72,
  "gender": "女",
  "elderPhone": "13800138000",
  "relativePhone": "13900139000",
  "address": "北京市朝阳区建国路1号",
  "warningData": [
    {
      "eventType": "跌倒预警",
      "message": "检测到长者跌倒,请立即查看",
      "happensAt": "2024-01-15T10:30:00Z"
    }
  ]
}

🧪 测试

快速测试

  1. 打开大屏页面
  2. 点击任意长者的"长者档案"按钮
  3. 查看弹窗是否正常显示
  4. 验证长者信息是否正确

详细测试

请参考 TEST_GUIDE.md 中的完整测试清单。

假数据测试

当接口暂无数据时,会自动生成假数据:

  • 长者名字:王奶奶、李爷爷等
  • 年龄:65-84岁
  • 电话:随机11位数字
  • 地址:北京、上海等城市地址
  • 预警:跌倒、心率异常等

🚀 快速开始

1. 查看长者档案

1. 打开大屏页面
2. 在左侧老人列表中找到长者
3. 点击"长者档案"按钮
4. 查看长者详细信息

2. 开发集成

// 在父组件中使用
import ElderProfileDialog from './components/ElderProfileDialog.vue'

// 模板
<ElderProfileDialog
  v-model="profileVisible"
  :elder-id="selectedElderId"
/>

// 脚本
const profileVisible = ref(false)
const selectedElderId = ref(0)

const openProfile = (elderId: number) => {
  selectedElderId.value = elderId
  profileVisible.value = true
}

📝 代码示例

完整示例

请参考 CODE_EXAMPLES.md 中的详细代码示例。

常用代码片段

// 打开档案弹窗
const openElderProfileDialog = (elderly: Elderly) => {
  currentProfileElderId.value = elderly.id
  elderProfileDialogVisible.value = true
}

// 关闭档案弹窗
const closeElderProfileDialog = () => {
  elderProfileDialogVisible.value = false
}

⚙️ 配置

组件配置

属性 类型 默认值 说明
modelValue boolean false 弹窗显示状态
elderId number 0 长者ID

样式配置

// 修改弹窗宽度
width: 600px;  // 可修改为其他值

// 修改颜色
$primary-color: #1a73e8;
$accent-color: #7b61ff;
$warning-color: #fd9644;

🔧 维护

常见问题

Q: 为什么显示假数据? A: 接口 /api/pc/admin/getElderDetail 还没有真实数据,所以使用假数据。

Q: 如何修改假数据? A: 编辑 ElderProfileDialog.vue 中的 generateMockData 函数。

Q: 如何关闭弹窗? A: 点击右上角关闭按钮或按 ESC 键。

后续改进

  • 接口正式上线后移除假数据
  • 添加编辑功能
  • 添加导出PDF功能
  • 支持真实头像上传
  • 添加预警记录筛选

📞 技术支持

文档

  • QUICK_START.md - 快速开始
  • ELDER_PROFILE_FEATURE.md - 功能详情
  • TEST_GUIDE.md - 测试指南
  • CODE_EXAMPLES.md - 代码示例

代码

  • 详细的代码注释
  • TypeScript 类型定义
  • 完整的错误处理

📈 性能指标

  • 加载时间: < 1秒
  • 切换时间: < 500ms
  • 内存占用: < 5MB
  • 滚动帧率: 60fps

🎓 学习资源

Vue 3 相关

Element Plus 相关

TypeScript 相关

📄 许可证

本项目遵循项目许可证。

👥 贡献者

  • 开发者:[Your Name]
  • 审核者:[Reviewer Name]
  • 测试者:[Tester Name]

📅 更新日志

v1.0.0 (2024-01-15)

  • ✅ 新增长者档案弹窗组件
  • ✅ 添加档案按钮到长者卡片
  • ✅ 实现数据加载和显示
  • ✅ 添加假数据生成逻辑
  • ✅ 完成样式设计
  • ✅ 编写完整文档

最后更新: 2024-01-15 版本: 1.0.0 状态: 生产就绪 ✅