项目

一般

简介

Feature #24

张 瑞阳 更新于 大约一个月 之前

# 家医端任务按钮显示规则 

 本文档描述家庭医生端(`/fuv/external/familyDoctor/task-manager-detail` 及相关列表)各任务类型在不同状态下的操作按钮显示逻辑。 

 > 个案管理端规则见 [task-manager-button-rules.md](./task-manager-button-rules.md)。 

 ## 通用字段 

 | 字段 | 类型 | 说明 | 
 |------|------|------| 
 | `taskType` | `TaskType` | 任务类型枚举 | 
 | `taskOriginalStatus` | `TaskStatus` | 任务原始状态 | 
 | `assignDoctorIds` | `List<String>` | 已指派家庭医生 ID 列表 | 
 | `dwAnswerId` | `String` | 问卷回答 ID;有值表示已填写问卷 | 
 | `currentUserId` | `String` | 当前登录用户 ID(`TokenHelper.getUserId()`) | 

 ## 状态对照 

 | 展示文案 | `taskOriginalStatus` | 
 |----------|----------------------| 
 | 未开始 | `NOT_START` | 
 | 待随访 | `WAIT_FOLLOW_UP` | 
 | 已超时 | `TIMEOUT` | 
 | 已随访 / 已提交 | `SUBMITTED` | 
 | 已随访(失访) | `SUBMITTED_LOST` | 
 | 已取消 | `CANCELED` | 

 --- 

 ## 1. 上门访视 `VISIT_FOLLOW_UP` 

 家医端核心可操作任务类型,按钮与指派关系、当前登录用户强相关。 

 ### 进行中 / 失访(待完成) 

 **条件:** 

 - `taskOriginalStatus` ∈ `NOT_START` | `TIMEOUT` | `WAIT_FOLLOW_UP` | `SUBMITTED_LOST` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `assignDoctorIds` 不为空,且包含 `currentUserId` | **已完成(失访)**、**去完成** | 
 | 其他(未指派、未包含当前用户等) | 不显示按钮 | 

 ### 已提交 

 **条件:** 

 - `taskOriginalStatus` = `SUBMITTED` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `dwAnswerId` 不为空 | **查看问卷** | 
 | `dwAnswerId` 为空 | 不显示按钮 | 

 ### 已取消 

 **条件:** 

 - `taskOriginalStatus` = `CANCELED` 

 **显示按钮:** 不显示 

 ### 伪代码 

 ``` 
 if taskType == VISIT_FOLLOW_UP: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP, SUBMITTED_LOST]: 
     if assignDoctorIds 包含 currentUserId: 
       → ["已完成(失访)", "去完成"] 
     else: 
       → 不显示 
   elif status == SUBMITTED: 
     if dwAnswerId 有值:    → "查看问卷" 
     else:                   → 不显示 
   elif status == CANCELED: 
     → 不显示 
 ``` 

 --- 

 ## 2. 电话随访 `PHONE_CALL_FOLLOW_UP` 

 家医端仅可查看已填写的问卷,不可执行随访操作。 

 ### 进行中 

 **条件:** 

 - `taskOriginalStatus` ∈ `NOT_START` | `TIMEOUT` | `WAIT_FOLLOW_UP` 

 **显示按钮:** 不显示 

 ### 终态(已提交 / 失访 / 已取消) 

 **条件:** 

 - `taskOriginalStatus` ∈ `SUBMITTED` | `SUBMITTED_LOST` | `CANCELED` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `dwAnswerId` 不为空 | **查看问卷** | 
 | `dwAnswerId` 为空 | 不显示按钮 | 

 ### 伪代码 

 ``` 
 if taskType == PHONE_CALL_FOLLOW_UP: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP]: 
     → 不显示 
   elif status in [SUBMITTED, SUBMITTED_LOST, CANCELED]: 
     if dwAnswerId 有值:    → "查看问卷" 
     else:                   → 不显示 
 ``` 

 --- 

 ## 3. 复诊提醒 `RE_VISIT_REMINDER` 

 **条件:** 任意 `taskOriginalStatus` 

 **显示按钮:** 不显示 

 ``` 
 if taskType == RE_VISIT_REMINDER: 
   → 不显示 
 ``` 

 --- 

 ## 4. 上传检查单 `UPLOAD_CHECK_LIST` 

 家医端不可上传或提交,仅可在已提交且有问卷数据时查看。 

 ### 进行中 / 已取消 

 **条件:** 

 - `taskOriginalStatus` ∈ `NOT_START` | `TIMEOUT` | `WAIT_FOLLOW_UP` | `CANCELED` 

 **显示按钮:** 不显示 

 ### 已提交 

 **条件:** 

 - `taskOriginalStatus` = `SUBMITTED` 

 | 附加条件 | 显示按钮 | 
 |----------|----------| 
 | `dwAnswerId` 不为空 | **去查看** | 
 | `dwAnswerId` 为空 | 不显示按钮 | 

 ### 伪代码 

 ``` 
 if taskType == UPLOAD_CHECK_LIST: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP, CANCELED]: 
     → 不显示 
   elif status == SUBMITTED: 
     if dwAnswerId 有值:    → "去查看" 
     else:                   → 不显示 
 ``` 

 --- 

 ## 5. 营养干预 `NUTRITION_INTERVENTION` 

 **条件:** 任意 `taskOriginalStatus` 

 **显示按钮:** 不显示 

 ``` 
 if taskType == NUTRITION_INTERVENTION: 
   → 不显示 
 ``` 

 --- 

 ## 汇总矩阵 

 | `taskType` | 进行中状态 | 终态 | 关键判断字段 | 
 |------------|------------|------|--------------| 
 | `VISIT_FOLLOW_UP` | 完成失访 + 去完成(指派给当前用户) | 查看问卷(`SUBMITTED` 且有问卷) | `assignDoctorIds`、`currentUserId`、`dwAnswerId` | 
 | `PHONE_CALL_FOLLOW_UP` | 无按钮 | 查看问卷(有问卷时) | `dwAnswerId` | 
 | `RE_VISIT_REMINDER` | 无按钮 | 无按钮 | — | 
 | `UPLOAD_CHECK_LIST` | 无按钮 | 去查看(`SUBMITTED` 且有问卷) | `dwAnswerId` | 
 | `NUTRITION_INTERVENTION` | 无按钮 | 无按钮 | — | 

 ## 与个案管理端差异对照 

 | 场景 | 家医端 | 个案管理端 | 
 |------|--------|------------| 
 | 上门访视进行中 | 指派给当前用户 → 完成失访 / 去完成 | 去指派 / 重新指派 | 
 | 上门访视 `CANCELED` | 不显示 | 有问卷 → 查看问卷 | 
 | 电话随访 `SUBMITTED_LOST` | 有问卷 → 查看问卷 | 不显示 | 
 | 复诊提醒 | 全程不显示 | 进行中可提交;失访/取消可再提交 | 
 | 上传检查单进行中 / `CANCELED` | 不显示 | 去上传/去查看 + 提交 | 
 | 上传检查单 `SUBMITTED` | 有问卷 → 去查看 | 去查看 | 

 ## 后端关联 

 - 接口:`GET /fuv/external/familyDoctor/task-manager-detail` 
 - 详情响应:`TaskManagerDetailResp`(`completeFlag` / `completeLostFlag` 目前仅覆盖上门访视的「去完成 / 完成失访」,其余按钮规则需前端或扩展字段实现) 
 - 角色权限:`TaskTypeRoleOperateRelateUtil` 中 `FAMILY_DOCTOR` 仅对 `VISIT_FOLLOW_UP` 开放操作权限 

返回