项目

一般

简介

Feature #23

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

# 个案管理端任务按钮显示规则 

 本文档描述个案管理端(`task-manager-detail` 及相关列表)各任务类型在不同状态下的操作按钮显示逻辑。 

 ## 通用字段 

 | 字段 | 类型 | 说明 | 上门访视 
 |------|------|------| 任务类型:上门访视 
 | `taskType` | `TaskType` | 任务类型枚举 | 任务状态:未开始|已超时|待随访|已随访(失访) 
 | `taskOriginalStatus` | `TaskStatus` | 任务原始状态 | 已指派医生  
 taskType = VISIT_FOLLOW_UP 
 | `assignDoctorIds` | `List<String>` | 已指派家庭医生 ID 列表 | taskOriginalStatus = NOT_START|TIMEOUT|WAIT_FOLLOW_UP|SUBMITTED_LOST 
 | `dwAnswerId` | `String` | 问卷回答 ID;有值表示已填写问卷 | assignDoctorIds为空,或列表长度等于0 
 显示按钮 去指派 

 ## 状态对照 

 | 展示文案 | `taskOriginalStatus` | 任务类型:上门访视 
 |----------|----------------------| 任务状态:未开始|已超时|待随访|已随访(失访) 
 | 未开始 | `NOT_START` | 已指派医生  
 taskType = VISIT_FOLLOW_UP 
 | 待随访 | `WAIT_FOLLOW_UP` | taskOriginalStatus = NOT_START|TIMEOUT|WAIT_FOLLOW_UP|SUBMITTED_LOST 
 | 已超时 | `TIMEOUT` | assignDoctorIds 不为空,且列表长度大于等于1 
 | 已随访 / 已提交 | `SUBMITTED` | 显示按钮 重新指派 

 任务类型:上门访视 
 | 已随访(失访) | `SUBMITTED_LOST` | 任务状态:已提交 
 | 已取消 | `CANCELED` | taskType = VISIT_FOLLOW_UP 
 taskOriginalStatus = SUBMITTED|CANCELED 
 dwAnswerId 不为空 ? 显示 查看问卷 : 不显示按钮 

 > **说明:** `CANCELED` 在部分任务类型中仅作为展示状态,不影响操作按钮的显示逻辑(见各任务类型说明)。 

 --- 

 ## 1. 上门访视 `VISIT_FOLLOW_UP` 

 ### 进行中(待指派) 

 **条件:** 

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

 | 附加条件 | 显示按钮 | # 电话随访 
 |----------|----------| 任务类型:电话随访 
 | `assignDoctorIds` 为空,或列表长度为 0 | **去指派** | 任务状态:未开始|已超时|待随访 
 | `assignDoctorIds` 不为空,且列表长度 ≥ 1 | **重新指派** | 

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

 **条件:** 

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

 | 附加条件 | 显示按钮 | taskType = PHONE_CALL_FOLLOW_UP 
 |----------|----------| taskOriginalStatus = NOT_START|TIMEOUT|WAIT_FOLLOW_UP 
 | `dwAnswerId` 不为空 | **查看问卷** | 
 | `dwAnswerId` 为空 | 不显示按钮 | 

 ### 伪代码 

 ``` 任务类型:电话随访 
 if 任务状态:已随访(失访) 
 taskType == VISIT_FOLLOW_UP: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP, SUBMITTED_LOST]: 
     if isEmpty(assignDoctorIds):    → "去指派" 
     else:                           → "重新指派" 
   elif status in [SUBMITTED, CANCELED]: 
     if dwAnswerId 有值:             → "查看问卷" 
     else:                            → 不显示 = PHONE_CALL_FOLLOW_UP 
 ``` taskOriginalStatus = SUBMITTED_LOST 
 不显示按钮 

 --- 

 ## 2. 电话随访 `PHONE_CALL_FOLLOW_UP` 

 ### 进行中 / 失访 

 **条件:** 

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

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

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

 **条件:** 

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

 | 附加条件 | 显示按钮 | 任务类型:电话随访 
 |----------|----------| 任务状态:已随访|已取消 
 | `dwAnswerId` 不为空 | **查看问卷** | taskType = PHONE_CALL_FOLLOW_UP|CANCELED 
 | `dwAnswerId` taskOriginalStatus = SUBMITTED 
 dwAnswerId 为空 | ? 不显示按钮 | : 查看问卷 

 ### 伪代码 

 ``` # 复诊提醒 
 if 任务类型:复诊提醒 
 任务状态:未开始|已超时|待随访 
 taskType == PHONE_CALL_FOLLOW_UP: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP, SUBMITTED_LOST]: 
     → 不显示 
   elif status in [SUBMITTED, CANCELED]: 
     if dwAnswerId 有值:    → "查看问卷" 
     else:                   → 不显示 = RE_VISIT_REMINDER 
 ``` 

 --- 

 ## 3. 复诊提醒 `RE_VISIT_REMINDER` 

 ### 进行中 

 **条件:** 

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

 **显示按钮:** **提交(失访)**、**提交** 

 ### 已提交 

 **条件:** 

 - `taskOriginalStatus` taskOriginalStatus = `SUBMITTED` NOT_START|TIMEOUT|WAIT_FOLLOW_UP 
 显示按钮:提交(失访)和 提交 

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

 ### 失访 / 已取消 

 **条件:** 

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

 **显示按钮:** **提交** 

 > **业务说明:** 取消后仍可提交,为预期业务行为。 

 ### 伪代码 

 ``` 任务类型:复诊提醒 
 if 任务状态:已随访 
 taskType == RE_VISIT_REMINDER: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP]: 
     → ["提交(失访)", "提交"] 
   elif status == SUBMITTED: 
     → 不显示 
   elif status in [SUBMITTED_LOST, CANCELED]: 
     → "提交" = RE_VISIT_REMINDER 
 ``` taskOriginalStatus = SUBMITTED 
 不显示按钮 

 --- 

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

 ### 进行中 / 任务类型:复诊提醒 
 任务状态:已随访(失访)| 已取消 

 **条件:** 

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

 | 附加条件 | 显示按钮 | 
 |----------|----------| taskType = RE_VISIT_REMINDER 
 | `dwAnswerId` 不为空 | **去查看**、**提交** | 
 | `dwAnswerId` 为空 | **去上传**、**提交** | 

 > **业务说明:** `CANCELED` 在此任务类型中仅作为展示状态,按钮逻辑与进行中状态一致。 

 ### 已提交 

 **条件:** 

 - `taskOriginalStatus` taskOriginalStatus = `SUBMITTED` SUBMITTED_LOST|CANCELED  
 显示按钮 提交 

 **显示按钮:** **去查看** 

 ### 伪代码 

 ``` # 上传检查单 
 if taskType == UPLOAD_CHECK_LIST: 
   if status in [NOT_START, TIMEOUT, WAIT_FOLLOW_UP, CANCELED]: 
     if dwAnswerId 有值:    → ["去查看", "提交"] 
     else:                   → ["去上传", "提交"] 
   elif status == SUBMITTED: 
     → "去查看" 任务类型:上传检查单 
 ``` 

 --- 

 ## 5. 营养干预 `NUTRITION_INTERVENTION` 

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

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

 ``` 任务状态:未开始|已超时|待随访|已取消 
 if taskType == NUTRITION_INTERVENTION: 
   → 不显示 = UPLOAD_CHECK_LIST 
 ``` taskOriginalStatus = NOT_START|TIMEOUT|WAIT_FOLLOW_UP|CANCELED 
 dwAnswerId 不为空 ? 显示按钮 去查看/提交 : 显示按钮 去上传/提交 

 --- 

 ## 汇总矩阵 

 | `taskType` | 进行中状态 | 终态 | 关键判断字段 | 任务类型:上传检查单 
 |------------|------------|------|--------------| 任务状态:已随访 
 | `VISIT_FOLLOW_UP` | 去指派 / 重新指派 | 查看问卷(有问卷时) | `assignDoctorIds`、`dwAnswerId` | taskType = UPLOAD_CHECK_LIST 
 | `PHONE_CALL_FOLLOW_UP` | 无按钮 | 查看问卷(`SUBMITTED` / `CANCELED` 且有问卷) | `dwAnswerId` | taskOriginalStatus = SUBMITTED 
 | `RE_VISIT_REMINDER` | 提交 + 失访提交 | 失访/取消后可再提交 | — | 
 | `UPLOAD_CHECK_LIST` | 去上传/去查看 + 提交(含已取消) | 去查看 | `dwAnswerId` | 
 | `NUTRITION_INTERVENTION` | 无按钮 | 无按钮 | — | 

 ## 业务约定备忘 

 1. **电话随访 + `CANCELED`:** 与 `SUBMITTED` 相同,按 `dwAnswerId` 判断是否显示「查看问卷」。 # 营养干预 
 2. **复诊提醒 + `CANCELED`:** 取消后仍可「提交」,为预期业务。 任务类型:营养干预 
 3. **上传检查单 + `CANCELED`:** 仍显示上传/查看按钮;`CANCELED` 仅作展示状态,不影响按钮逻辑。 taskType:NUTRITION_INTERVENTION 
 不显示按钮 






返回