Appearance
第八章 弹窗交互
关盘口径(2026-04-21 生效):关盘来源统一为数据源推送(唯一来源);关盘 = 绝对终态,操盘页与结算详情页均不提供人工开盘入口。
本章定义结算列表中所有弹窗的结构、字段和交互规则。
8.1 注单结算弹窗
点击单关注单的「结算」按钮时弹出(L2/L3/L4 统一按钮名称)。
8.1.1 弹窗结构
┌─ 📝 注单结算 ──────────────────────────────┐
│ │
│ [系统已自动计算结果,请确认或修改] ← L2时展示 │
│ │
│ 盘口信息 │
│ 赛事: 曼联 vs 利物浦 (M-2026013001) │
│ 盘口: 让球 主队(-0.5) │
│ 该盘口注单: 12 笔(待结算),总投注额 ¥58,000 │
│ │
│ 选择结算结果: │
│ ┌─────┬─────┬──────┬──────┐ │
│ │ ✓赢 │ ✗输 │ ½↑赢半 │ ½↓输半 │ │
│ ├─────┼─────┼──────┼──────┤ │
│ │ ↔走水 │ ⊘取消 │ ↩退款 │ │ │
│ └─────┴─────┴──────┴──────┘ │
│ │
│ 影响范围: 该盘口下 12 笔注单将统一按此结算 │
│ 预计总派彩: ¥106,720 │
│ │
│ [取消] [确认结算] │
└────────────────────────────────────────────┘8.1.2 L2 与 L3/L4 的弹窗区别
| 维度 | L2(系统预填) | L3/L4(手动选择) |
|---|---|---|
| 顶部提示 | 蓝色提示「系统已自动计算结果,请确认或修改」 | 无提示 |
| 结算结果 | 系统已预选(高亮),结算人员可修改 | 未选中,结算人员必须手动选择 |
| 确认按钮 | L2 预选后按钮默认可用 | 未选择时按钮禁用 |
8.1.3 弹窗字段(自适应展示,对齐 结算详情页 第 7.3.6 节 核心规则)
单组场景(盘口内基准分组 = 1,~90%):
| 字段 | 说明 |
|---|---|
| 赛事 | 赛事名称 + 赛事 ID |
| 盘口 | 玩法 + 选项 + 盘口线 |
| 该盘口注单 | 待结算注单笔数 + 总投注额(不含已取消注单) |
| 影响范围 | 提示该基准分组下 N 笔注单将按此结算(单组时 = 盘口全部注单) |
| 预计总派彩 | 该组下所有待结算注单派彩之和,实时更新 |
多组场景(盘口内基准分组 ≥ 2,~10%):
| 字段 | 说明 |
|---|---|
| 赛事 | 赛事名称 + 赛事 ID |
| 盘口 | 玩法 + 选项 + 盘口线 + 标签"含 N 组基准分" |
| 按组分区展示 | 每组独立显示:下注时比分、笔数、投注额、基准分推导、预填结果、预计派彩 |
| 分组选择结果 | 每组独立选择(或接受预填) |
| 合计预计派彩 | 各组预计派彩之和 |
| 确认按钮 | "确认全部分组" |
8.1.4 结算结果选项
派彩公式完整定义(含数值示例和验算)见结算详情页第 13 章。
| 结果 | 选项样式 | 派彩计算 |
|---|---|---|
| 赢 | 绿色边框 + 背景 | 各注单投注额 × Decimal |
| 输 | 灰色边框 + 背景 | ¥0 |
| 赢半 | 浅绿色边框 | 各注单投注额 + 投注额 × 0.5 × HK |
| 输半 | 浅红色边框 | 各注单投注额 × 0.5 |
| 走水 | 橙色边框 | 各注单投注额(原额退还) |
| 取消 | 灰色边框 | 各注单投注额(原额退还) |
| 退款 | 灰色边框 | 各注单投注额(原额退还) |
选项动态显示规则:赢半、输半、走水仅适用于有盘口线的玩法(让球/大小类,即 MultiLineTable 渲染器)。其他玩法(独赢/波胆/总进球/双重机会/半全场等)弹窗中不展示赢半/输半/走水选项,仅展示:赢/输/取消/退款。
| 渲染器 | 可选结算结果 |
|---|---|
| MultiLineTable(让球/大小类) | 赢/输/赢半/输半/走水/取消/退款(7种全部) |
| SingleLineTable/Matrix/LongList | 赢/输/取消/退款(4种) |
8.1.5 按基准分组预览(多组场景 UX 详细示意)
当盘口内出现多组基准分(≥ 2 组)时,弹窗按基准分组分区展示,便于审计。分组识别规则见 结算详情页 第 7.3.6 节:
┌─ 盘口:BT1 全场让球 -0.5 ──────────────────┐
│ │
│ 终场比分(结算基准):2:1 │
│ │
│ ┌─ 赛前注单 (8 笔,¥40,000 投注额)────────┐ │
│ │ 基准分 = 终场比分 2:1 │ │
│ │ 净差值 = 2 − 1 + (−0.5) = 0.5 > 0 │ │
│ │ 判定:主队 赢 / 客队 输 │ │
│ │ 预计派彩:¥36,800 │ │
│ └─────────────────────────────────────────┘ │
│ │
│ ┌─ 滚球注单 (按下注时比分分组)──────────┐ │
│ │ │ │
│ │ • 下注时 0:0 (2 笔,¥10,000 投注额) │ │
│ │ 基准分 = 2:1 − 0:0 = 2:1 │ │
│ │ 净差值 = 0.5 > 0 → 主队 赢 │ │
│ │ 预计派彩:¥9,200 │ │
│ │ │ │
│ │ • 下注时 1:0 (2 笔,¥8,000 投注额) │ │
│ │ 基准分 = 2:1 − 1:0 = 1:1 │ │
│ │ 净差值 = −0.5 < 0 → 主队 输 │ │
│ │ 预计派彩:¥0 │ │
│ │ │ │
│ │ (同盘口同选项,不同下注时比分 → 不同结果)│ │
│ └─────────────────────────────────────────┘ │
│ │
│ 合计预计派彩:¥46,000 │
│ │
│ [取消] [确认结算全部分组] │
└─────────────────────────────────────────────┘关键规则:
- 结算人员只选择"盘口赛果"(如终场比分),系统自动按每笔注单的下注时比分计算基准分和结果
- 同一盘口内,不同下注时比分的滚球注单可能产生不同结算结果(完全符合业务预期)
- 预览展示全部分组推导过程 → 确认提交 → 应用到该盘口下所有注单
8.1.6 二次确认
点击「确认结算」后弹出二次确认:
确认将盘口 [让球 主队(-0.5)] 下 12 笔注单按 [赢] 结算?总派彩 ¥106,720
[取消] [确认]
8.1.7 操作反馈
| 结果 | 反馈 |
|---|---|
| 成功 | 弹窗关闭 + 列表刷新 + 该盘口下所有注单状态变为已结算 |
| 失败 | 弹窗保留 + 显示错误原因 + 重试按钮 |
8.2 盘口二次结算弹窗
盘口二次结算操作统一在结算详情页执行,结算列表注单视图不提供二次结算入口。二次结算弹窗见结算详情页第 9 章 9.4 节,二次结算规则(含差额矩阵)见第 15 章。
8.3 结算人员分配弹窗
结算列表的分配弹窗与操盘列表的操盘手分配弹窗外观复用同一组件(穿梭框交互),但分配维度 = 赛前 / 滚球阶段(对齐 第 5.4 节 结算人员单元格展示格式 [赛前] 张三 [滚球] 李四 和 第 13.4 节 分配流程图第一步"选择赛前/滚球 Tab")。
分配维度决策:采用按阶段分配(赛前 / 滚球),不是按玩法分配。同一赛事的结算人员按两个阶段分别指定,数据模型为"赛事 → 阶段 → 结算人员"一对多。
与操盘列表的关系:操盘列表的操盘手分配按玩法(17 种 BT 分别指定);结算列表的结算人员分配按阶段。两者外观组件复用(穿梭框交互),但分配维度和数据模型不同,不复用 核心规则。
原型参考:结算列表交互原型中的分配弹窗(按赛前/滚球 Tab 切换)。
8.3.1 触发入口
| 入口 | 触发方式 | 说明 |
|---|---|---|
| 赛事行「未分配」文字 | 点击橙色「未分配」 | 单赛事分配 |
| 赛事行结算人员姓名 | 点击已分配的姓名 | 修改分配(仅结算主管) |
| 批量操作栏「分配结算人员」 | 勾选赛事后点击 | 批量分配 |
8.3.2 与操盘列表的差异点
| 差异 | 操盘列表 | 结算列表 |
|---|---|---|
| 弹窗标题 | 分配操盘手 | 分配结算人员 |
| 分配对象 | 操盘手 | 结算人员 |
| 分配维度 | 按玩法(17 种 BT 分别指定) | 按阶段(赛前 / 滚球 两 Tab 分别指定) |
| 数据模型 | 赛事 → 玩法 → 操盘手(一对多,17 行) | 赛事 → 阶段 → 结算人员(一对多,2 行) |
| 穿梭框行为 | 左侧人员池、右侧按玩法分区 | 左侧人员池、右侧按阶段(赛前 / 滚球)分区 |
| 其他交互 | — | 穿梭框交互、校验规则、Toast 反馈与操盘列表一致 |
8.3.3 分配通知
分配后系统向被分配的结算人员推送站内通知:「您已被分配 N 场赛事的 [赛前/滚球] 结算任务」。
8.3.4 操作反馈
| 结果 | 反馈 |
|---|---|
| 成功 | 弹窗关闭 + 「分配完成,已更新 N 场赛事」+ 列表刷新 |
| 部分失败 | 弹窗展示失败赛事清单 |
| 全部失败 | 弹窗展示错误原因 + 重试按钮 |
8.4 赛事异常处理弹窗
点击赛事信息头的「赛事异常处理」按钮(结算详情页,仅赛事待结算时启用)触发。结算列表不提供赛事异常处理入口,仅展示和查看异常状态的赛事。异常原因(4 种,写死)和完整子方案见结算详情页第 9 章 9.3、第 16 章。
关于入口:赛事异常处理的唯一入口在结算详情页赛事信息头右侧「赛事异常处理」按钮,唤起统一弹窗(覆盖 4 类异常原因:取消 / 延期 / 腰斩 / 数据错误)。结算列表仅展示异常赛事红色高亮,点击赛事行跳转结算详情页。若详情页按钮不可见,说明赛事状态非待结算,须先「赛事驳回」。
8.4.1 弹窗结构(核心规则 位于结算详情页 9.3.1)
┌─ ⚠️ 赛事异常处理 ──────────────────────────┐
│ │
│ 赛事:M-2026013003 国米 vs AC米兰 │
│ 影响范围: │
│ • 涉及盘口: 18 个 │
│ • 涉及注单: 98 单 │
│ • 涉及金额: ¥856,000 │
│ │
│ 异常原因:(必选,4 选 1) │
│ ○ 赛事取消 ○ 赛事延期 │
│ ○ 赛事腰斩 ○ 数据错误 │
│ │
│ │
│ ┌─ 延期处理方式(仅选择延期时展示)─────────┐ │
│ │ ○ 延期暂缓(→ 异常态) │ │
│ │ ○ 延期超时退款(→ 已取消,全额退款) │ │
│ └───────────────────────────────────────┘ │
│ │
│ ┌─ 腰斩处理方式(仅选择腰斩时展示)─────────┐ │
│ │ ○ 按当前比分结算(→ 已结算) │ │
│ │ ○ 全额退款(→ 已取消) │ │
│ │ ○ 暂缓处理(→ 异常态) │ │
│ └───────────────────────────────────────┘ │
│ │
│ 备注:(选填) │
│ ⚠️ 此操作提交后如需修正,**请进入结算详情页执行赛事驳回**(本模块不提供驳回入口)│
│ │
│ [取消] [确认] │
└─────────────────────────────────────────────┘结算列表不提供赛事驳回入口:此弹窗仅用于发起异常处理。提交后如需撤销,须进入结算详情页(点击赛事行跳转)→ 点击赛事信息头「赛事驳回」按钮。结算列表只展示异常标记、不做驳回操作。详见 结算详情页 第 9.2b 节 赛事驳回确认弹窗。
8.4.2 异常原因(4 种,写死)
按钮启用规则:「赛事异常处理」按钮仅在赛事状态 = 待结算时显示;已结算 / 已取消 / 异常态下按钮隐藏,须先执行「赛事驳回」回待结算才能再次发起。
删除"其他"原因:参考行业通用枚举,赛事异常仅 4 类:取消 / 延期 / 腰斩 / 数据错误,不含兜底项。真遇到无法分类的情况,归入"数据错误"并在备注说明。
| 原因 | 默认处理结果 |
|---|---|
| 赛事取消 | 赛事 → 已取消,全额退款 |
| 赛事延期 | 延期暂缓 → 异常态(立即批量关盘该赛事所有开盘中盘口);延期超时退款 → 已取消;延期恢复路径:异常态下可执行赛事驳回回到待结算,等待数据源推送新的开盘信号自动恢复盘口开盘态后继续结算(详见结算详情页 16.4b) |
| 赛事腰斩 | 按比分结算 → 已结算;全额退款 → 已取消;暂缓处理 → 异常态(立即批量关盘) |
| 数据错误 | 弹窗仅做审计标记(不下架、不关盘、不改赛事态、不动订单);实际修正走各自独立入口(操盘页调赔率 / 赛果录入页 / 盘口卡片 void / 盘口二次结算) |
完整业务规则(含已完成时段判定、子方案赛事状态变化等)见结算详情页 16.3 / 9.3.3 / 9.3.4。
8.4.3 列表侧展示规则
| 规则 | 说明 |
|---|---|
| 异常赛事红色高亮 | 赛事行红色边框 + 红色"异常"标签 |
| 无快捷入口 | 结算列表不提供处理按钮,点击赛事行跳转结算详情页发起处理 |
| 状态同步 | 结算人员在详情页完成异常处理后,列表行状态同步刷新 |
8.4.4 关于延期的澄清
| 规则 | 说明 |
|---|---|
| 系统不做自动处理 | 延期标记、恢复、退款均由结算人员主动触发,不存在定时扫描或超时自动告警 |
| 无 IM 推送 | IM 推送的是比分 / 进球明细 / 角球等结构化数据,但不单独推送"赛事异常状态枚举",系统不会根据数据源信号自动标记赛事延期 |