Files
Neo-ZQYY/docs/h5_ui/interactions/task-list.md

135 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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.
# 页面名task-list任务列表 + 业绩概览)
> PRD 参考P6 `docs/prd/specs/P6-miniapp-fe-tasks.md``apps/miniprogram/doc/prd.md` 第八节 8.1
> 已实现:否
## 页面说明
小程序默认首页Tab 1。顶部 Banner 展示用户信息和业绩概览,下方为按优先级分组排序的任务列表。支持长按弹出操作菜单(置顶/放弃/问AI/备注)。
## Banner 主题
`banner-bg theme-blue texture-aurora`(蓝色主题 + 极光丝带纹理)
## 状态变量
| 变量名 | 类型 | 初始值 | 说明 |
|--------|------|--------|------|
| tasks | array | [] | 任务列表(按优先级分组) |
| userInfo | object | null | 用户信息(花名、身份、门店) |
| performanceData | object | null | 业绩概览(当月业绩、档位、工资预估、跳档激励) |
| contextMenuVisible | boolean | false | 长按菜单显示状态 |
| contextMenuPosition | object | {x,y} | 菜单弹出坐标 |
| contextMenuTarget | element | null | 长按的目标卡片 |
| remarkModalVisible | boolean | false | 备注/放弃弹窗显示状态 |
| loading | boolean | true | 数据加载中 |
| error | boolean | false | 加载失败 |
## 用户操作 → 响应
| 操作 | 触发条件 | 响应行为 | 目标状态 |
|------|----------|----------|----------|
| 页面加载 | 进入页面 | GET /api/xcx/tasks + 业绩数据 | loading→false |
| 点击 Banner 业绩区域 | 无 | navigateTo performance 页面 | — |
| 点击任务卡片 | 无 | 根据 task-type 跳转对应详情页(见跳转映射表) | — |
| 长按任务卡片500ms | 触摸/鼠标按住 | 在按压坐标处弹出黑底浮层+白色菜单 | contextMenuVisible=true |
| 菜单-「📌 置顶任务」 | 菜单显示 | POST /api/xcx/tasks/{id}/pin | 列表刷新,菜单关闭 |
| 菜单-「❌ 放弃任务」 | 菜单显示 | 打开备注/放弃弹窗 | remarkModalVisible=true |
| 菜单-「🤖 问问AI助手」 | 菜单显示 | navigateTo chat带任务上下文引用 | 菜单关闭 |
| 菜单-「📝 备注」 | 菜单显示 | 打开备注弹窗 | remarkModalVisible=true |
| 弹窗-提交 | 文本非空 | POST 对应接口 | Toast 提示,弹窗关闭 |
| 点击遮罩层 | contextMenuVisible=true | 关闭菜单 | contextMenuVisible=false |
| 下拉刷新 | 无 | 重新请求任务列表 | loading=true |
| 点击"重试" | error=true | 重新请求数据 | loading=true |
## 任务卡片跳转映射
| data-task-type | 跳转目标 |
|----------------|----------|
| high-priority | task-detail.html高优先召回 |
| priority | task-detail-priority.html优先召回 |
| relationship | task-detail-relationship.html关系构建 |
| callback | task-detail-callback.html客户回访 |
## 任务优先级定义PRD 补充)
| 优先级 | 类型 | 触发条件 | 标签颜色 |
|--------|------|----------|----------|
| P0 高优先召回 | high-priority | WBI + NCI > 7 | 红色 |
| P0 优先召回 | priority | WBI + NCI > 5 | 橙色 |
| P1 客户回访 | callback | 已完成召回但未备注(或备注评分 < 5 | 蓝色 |
| P2 关系构建 | relationship | RS < 6 | 粉色 |
> 列表内按优先级分组 → 组内按指数分数降序排列
## 任务完成条件PRD 补充)
| 任务类型 | 完成条件 | 说明 |
|----------|----------|------|
| 召回P0 | 客户出现新的服务订单 | 系统自动判定 |
| 回访P1 | 备注评分 ≥ 5应用 6 评分) | 评分 < 5 不算完成只计第一个备注2 天有效期 |
| 关系构建P2 | RS 指数提升至 ≥ 6 | 系统自动判定 |
## 任务卡片结构(忠于原型 HTML
- 外层 `.task-card`:左侧 4px 彩色边框(颜色随任务类型变化)
- 置顶卡片额外 `.pinned` class微亮边框阴影
- 内部结构:
- 第一行:任务类型标签(渐变背景圆角矩形)+ 客户昵称 + 关系 emoji + 备注指示器(📝,有备注时显示)
- 第二行「最近到店X天前 · 余额XXX」
- 第三行AI 机器人小图标 + AI 一句话智能建议文字来源AI 应用 4 的 `summary` 字段,`cache_type=app4_analysis`
- 右侧:向右箭头 chevron
## 列表分区结构
1. 📌 置顶区域amber 背景标签):用户手动置顶的任务
2. 一般任务区域(灰色背景标签):按优先级分组 → 组内按分数降序
3. ❌ 已放弃区域(灰色背景标签):
- 卡片 `.abandoned`opacity 0.55,左边框变灰,标签背景变灰,客户名变灰
- 无右侧箭头
- 显示放弃原因文字
## 长按菜单样式
- 遮罩层 `.context-overlay`(半透明黑色)
- 白色菜单 `.context-menu`min-width 192px圆角 14px阴影
- 4 个菜单项,项间 1px 分隔线:
- 📌 置顶任务(已置顶时显示「取消置顶」)
- ❌ 放弃任务
- 🤖 问问AI助手
- 📝 备注
## 业绩 Banner 展示
- 用户花名 + 身份
- 当月业绩进度条
- 预计收入(标记"预估"
- 跳档激励:「到达 XXX 即得 YYY」
- YYY = max(跳档线差值最小值, 实际差值)
- 各档差值Tier0→1: 1200元 / Tier1→2: 750元 / Tier2→3: 540元 / Tier3→4: 420元
## 跟/弃 icon 规则PRD 补充)
- 跟:助教主动跟进中(绿色标记)
- 弃:助教已放弃该客户(灰色标记)
- 无标记:未分配助教或无跟进状态
## 爱心 icon 规则
💖(>8.5) / 🧡(>7) / 💛(>5) / 💙(<5)
## 喜好标签
🎱(中式) / 斯(斯诺克) / 🀅(麻将) / 🎤(团建)
## 页面状态枚举
| 状态名 | 视觉表现 | 触发条件 |
|--------|----------|----------|
| 加载中 | 区域文案"加载中..." | loading=true |
| 正常态 | 任务列表 + 业绩 Banner | 有数据 |
| 空数据态 | "暂无任务" | tasks 为空 |
| 错误态 | "加载失败,请点击重试" + 重试按钮 | error=true |
## 后端 API 依赖
| API | 方法 | 说明 |
|-----|------|------|
| `GET /api/xcx/tasks` | GET | 获取任务列表 |
| `POST /api/xcx/tasks/{id}/pin` | POST | 置顶/取消置顶 |
| `POST /api/xcx/tasks/{id}/abandon` | POST | 放弃任务 |
| `POST /api/xcx/notes` | POST | 创建备注 |
| `GET /api/performance/summary` | GET | 业绩概览 |
## 页面导航
- 来源loginapproved/ TabBar 切换
- 去向task-detail* / performance / chat
## 全局组件
- 底部 TabBar任务 active— 由 `bottom-nav.js` 自动注入
- AI 悬浮按钮(右下角,渐变动画背景,可爱机器人 SVG 图标,点击 → chat