Files
Neo-ZQYY/apps/miniprogram/doc/TASK_ABANDON_QUICK_REFERENCE.md
2026-03-15 10:15:02 +08:00

120 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 任务放弃功能改进 - 快速参考
## 核心改进
### 1⃣ 已放弃任务长按菜单
- **位置**:任务列表页 → 已放弃区域 → 长按任务
- **显示**:单个选项"↩️ 取消放弃"
- **行为**:点击直接执行,无需二次确认
### 2⃣ 取消放弃流程
```
已放弃任务 → 长按 → 点击"取消放弃" → 直接移回一般任务区域
```
**状态变化**
- `status`: `abandoned``pending`
- `is_pinned`: 保持 `false`
- `abandonReason`: 清除
### 3⃣ 键盘交互优化
- **输入框激活**:键盘弹出时弹窗自动上移
- **内容保护**:添加占位区域防止被键盘遮挡
- **按钮位置**:固定在键盘上方
- **视觉反馈**:输入框获得焦点时边框变蓝
## 文件修改清单
| 文件 | 修改内容 |
|------|--------|
| `P4-miniapp-core-business.md` | 补充任务类型与状态关系说明 |
| `task-list.wxml` | 长按菜单条件渲染 + 键盘事件 |
| `task-list.ts` | 新增 `onCtxCancelAbandon` + 键盘处理 |
| `task-list.wxss` | 键盘交互样式 |
| `task-detail.wxml` | 键盘事件 + 占位区域 |
| `task-detail.ts` | 键盘处理 + 取消放弃逻辑 |
| `task-detail.wxss` | 键盘交互样式 |
## 关键代码片段
### 长按菜单条件渲染
```xml
<!-- 已放弃任务:显示"取消放弃" -->
<block wx:if="{{contextMenuTarget.isAbandoned}}">
<view class="ctx-item" bindtap="onCtxCancelAbandon">
<text class="ctx-emoji">↩️</text>
<text class="ctx-text">取消放弃</text>
</view>
</block>
<!-- 一般/置顶任务:显示标准菜单 -->
<block wx:else>
<!-- 置顶/备注/问问AI/放弃任务 -->
</block>
```
### 键盘高度管理
```typescript
// 键盘弹出
onAbandonTextareaFocus(e: WechatMiniprogram.InputEvent) {
const height = (e as any).detail?.height ?? 0
this.setData({ keyboardHeight: height })
}
// 键盘收起
onAbandonTextareaBlur() {
this.setData({ keyboardHeight: 0 })
}
```
### 动态样式绑定
```xml
<view class="abandon-overlay {{keyboardHeight > 0 ? 'abandon-overlay--keyboard-open' : ''}}">
<view class="abandon-actions {{keyboardHeight > 0 ? 'abandon-actions--float' : ''}}"
style="{{keyboardHeight > 0 ? 'bottom: ' + keyboardHeight + 'px;' : ''}}">
</view>
</view>
```
## 测试检查清单
- [ ] 长按已放弃任务显示"取消放弃"
- [ ] 点击"取消放弃"直接执行
- [ ] 任务移回一般任务区域
- [ ] 输入放弃原因时键盘不遮挡内容
- [ ] 按钮固定在键盘上方
- [ ] 输入框边框变蓝
- [ ] 任务列表页和详情页行为一致
## 相关概念
### 任务类型 vs 任务状态
- **任务类型**task_type业务性质系统自动分配
- `high_priority_recall` / `priority_recall` / `follow_up_visit` / `relationship_building`
- **任务状态**status生命周期用户或系统操作改变
- `active` / `inactive` / `completed` / `abandoned`
- **置顶状态**is_pinned独立标记用户手动操作
### 前端展示规则
- **置顶区域**`is_pinned=true` && `status=active`
- **一般任务**`is_pinned=false` && `status=active`
- **已放弃区域**`status=abandoned`(任务类型保留但灰化)
## 常见问题
**Q: 取消放弃后任务会回到原来的位置吗?**
A: 不会。取消放弃后任务会移到一般任务区域的最后,不会回到原来的位置。
**Q: 取消放弃需要输入原因吗?**
A: 不需要。取消放弃是直接操作,无需任何确认或输入。
**Q: 键盘弹出时弹窗会完全隐藏吗?**
A: 不会。弹窗会自动上移,确保内容可见,按钮固定在键盘上方。
**Q: 备注弹窗的键盘交互是否相同?**
A: 是的。备注弹窗组件已经实现了相同的键盘交互,无需额外修改。
---
**更新日期**2026-03-14
**相关文档**`docs/TASK_ABANDON_IMPROVEMENTS.md`