105 lines
4.3 KiB
Markdown
105 lines
4.3 KiB
Markdown
# 页面名:board-coach(助教看板)
|
||
|
||
> PRD 参考:P8 `docs/prd/specs/P8-miniapp-fe-boards.md`;`apps/miniprogram/doc/prd.md` 第九节 9.3
|
||
> 已实现:否
|
||
|
||
## 页面说明
|
||
按排序×技能×时间三重筛选查看助教排名列表。不同排序维度下卡片结构和突出数据不同。
|
||
|
||
## 状态变量
|
||
| 变量名 | 类型 | 初始值 | 说明 |
|
||
|--------|------|--------|------|
|
||
| selectedSort | string | "定档业绩最高" | 排序筛选 |
|
||
| selectedSkill | string | "不限" | 技能筛选 |
|
||
| selectedTime | string | "本月" | 时间筛选 |
|
||
| sortDropdownVisible | boolean | false | 排序筛选下拉展开 |
|
||
| skillDropdownVisible | boolean | false | 技能筛选下拉展开 |
|
||
| timeDropdownVisible | boolean | false | 时间筛选下拉展开 |
|
||
| coaches | array | [] | 助教列表 |
|
||
| loading | boolean | true | 数据加载中 |
|
||
| error | boolean | false | 加载失败 |
|
||
|
||
## 用户操作 → 响应
|
||
| 操作 | 触发条件 | 响应行为 | 目标状态 |
|
||
|------|----------|----------|----------|
|
||
| 页面加载 | 进入页面 | GET /api/board/coaches | loading→false |
|
||
| 点击排序筛选 | 无 | 展开排序下拉,关闭其他 | sortDropdownVisible=true |
|
||
| 选择排序 | 下拉展开 | 切换对应 dim-container 显隐,重新请求数据 | selectedSort 更新 |
|
||
| 点击技能筛选 | 无 | 展开技能下拉,关闭其他 | skillDropdownVisible=true |
|
||
| 选择技能 | 下拉展开 | 重新请求数据 | selectedSkill 更新 |
|
||
| 点击时间筛选 | 无 | 展开时间下拉,关闭其他 | timeDropdownVisible=true |
|
||
| 选择时间 | 下拉展开 | 重新请求数据 | selectedTime 更新 |
|
||
| 点击助教卡片 | 无 | navigateTo coach-detail | — |
|
||
| 切换看板 Tab | 顶部 Tab 栏 | navigateTo board-finance / board-customer | — |
|
||
| 滚动页面 | 持续 | 下滑隐藏筛选栏,上滑显示 | — |
|
||
| 点击"重试" | error=true | 重新请求数据 | loading=true |
|
||
|
||
## 筛选器选项(忠于原型 HTML)
|
||
|
||
### 排序筛选(6 个)
|
||
1. 定档业绩最高
|
||
2. 定档业绩最低
|
||
3. 工资最高
|
||
4. 工资最低
|
||
5. 客源储值最高
|
||
6. 任务完成最多
|
||
|
||
### 技能筛选
|
||
不限 / 🎱 / 斯 / 🀄 / 🎤
|
||
|
||
### 时间筛选
|
||
本月 / 本季度 / 上月 / 前3个月(不含本月)/ 上季度 / 最近6个月(不含本月,不支持客源储值最高)
|
||
|
||
## 排序切换 → 卡片结构映射(忠于原型 HTML)
|
||
|
||
切换排序时,通过 `selectSort(value)` 函数切换对应的 `dim-container` 显隐。每种排序的卡片右侧突出数据不同:
|
||
|
||
| 排序 | container id | 卡片右侧突出数据 |
|
||
|------|-------------|-----------------|
|
||
| 定档业绩最高/最低 | `dim-perf` | 定档 Xh + 折前 Xh + 距升档 Xh(或 ✅ 已达标) |
|
||
| 工资最高/最低 | `dim-salary` | 预估标签 + ¥金额(大字)+ 定档/折前 |
|
||
| 客源储值最高 | `dim-sv` | 储值 ¥金额(大字)+ 客户 X人 + 消耗 ¥X |
|
||
|
||
> 高客源储值定义(PRD 补充):RS > 2 的客户的会员卡储值合计(RS = 关系强度指数,> 2 表示有一定服务关系的客户)
|
||
| 任务完成最多 | `dim-task` | 召回 X(蓝色大字)+ 回访 X |
|
||
|
||
### 所有卡片共有元素
|
||
- 助教头像圆形 + 姓名
|
||
- 等级标签(星级/高级/中级/初级)— 不同等级不同颜色
|
||
- 技能标签(🎱/斯/🀄/🎤)
|
||
- 底部 TOP3 客户 emoji 列表
|
||
|
||
## 等级标签颜色
|
||
| 等级 | 颜色 |
|
||
|------|------|
|
||
| 星级 | 金色/amber |
|
||
| 高级 | 蓝色/primary |
|
||
| 中级 | 绿色/success |
|
||
| 初级 | 灰色/gray |
|
||
|
||
## 筛选栏滚动行为
|
||
- 下滑时筛选栏隐藏,上滑时重新显示
|
||
- 由 `initFilterBarScrollBehavior()` 实现
|
||
|
||
## 页面状态枚举
|
||
| 状态名 | 视觉表现 | 触发条件 |
|
||
|--------|----------|----------|
|
||
| 加载中 | 区域文案"加载中..." | loading=true |
|
||
| 正常态 | 助教列表 | 有数据 |
|
||
| 空数据态 | "暂无数据" | coaches 为空 |
|
||
| 错误态 | "加载失败,请点击重试" + 重试按钮 | error=true |
|
||
|
||
## 后端 API 依赖
|
||
| API | 方法 | 说明 |
|
||
|-----|------|------|
|
||
| `GET /api/board/coaches` | GET | 助教看板(排序×技能×时间三重筛选) |
|
||
|
||
## 页面导航
|
||
- 来源:board-finance / board-customer(看板 Tab 切换)
|
||
- 去向:coach-detail / chat
|
||
|
||
## 全局组件
|
||
- 底部 TabBar(看板 active)
|
||
- AI 悬浮按钮(右下角)
|
||
- 看板顶部 Tab 栏(财务 / 客户 / 助教 active)
|