Appearance
第六章 批量操作栏(M05)
模块原型
设计说明
- 批量操作栏为底部浮动弹窗样式
- 选中赛事后自动显示
- 包含已选数量统计与批量操作按钮
- 具体以整体原型为准
6.1 显示条件
当表格中有一个或多个赛事被勾选时,批量操作栏自动显示于页面底部居中位置。取消所有勾选后自动隐藏。
| 场景 | 操作栏状态 |
|---|---|
| 勾选 1 条及以上赛事 | 显示,从底部滑入 |
| 取消所有勾选 | 隐藏,向底部滑出 |
| 切换筛选条件 | 清空已选,隐藏操作栏 |
| 切换分页 | 保留已选(跨页选中),操作栏保持显示 |
6.2 信息展示
批量操作栏左侧显示已选中的赛事数量和分布情况:
| 显示内容 | 格式 | 示例 |
|---|---|---|
| 基础信息 | 已选择 N 场赛事 | 已选择 15 场赛事 |
| 状态分布(悬停显示) | 待上架 X 场,已上架 Y 场,已下架 Z 场 | 待上架 10 场,已上架 5 场 |
6.3 操作按钮
6.3.1 按钮列表
| 按钮 | 功能 | 适用条件 | 权限要求 |
|---|---|---|---|
| 批量上架 | 上架选中的待上架赛事 | 选中赛事中存在待上架赛事 | 全部角色 |
| 批量下架 | 下架选中的已上架赛事 | 选中赛事中存在已上架赛事 | 普通操盘手仅限自己负责的赛事,主管和风控可操作全部 |
| 分配操盘手 | 为选中赛事分配或变更操盘手 | 选中赛事中存在已上架赛事 | 仅主管、风控 |
| 取消选择 | 取消所有选中并关盘操作栏 | 无 | 全部角色 |
设计说明:盘口操作(隐藏/取消隐藏/锁盘/解锁)统一在赛事详情页进行,列表页不提供。原因是盘口操作需要操盘手确认具体盘口状态与风险情况,批量执行容易造成误操作。
6.3.2 按钮动态显示规则
按钮根据选中赛事的状态组合动态显示或禁用:
| 按钮 | 显示条件 | 禁用条件 |
|---|---|---|
| 批量上架 | 存在待上架赛事 | 所有待上架赛事均为延期状态 |
| 批量下架 | 存在已上架赛事 | 无权操作任何已上架赛事(普通操盘手选中了他人负责的赛事) |
| 分配操盘手 | 存在已上架赛事 | 当前用户非主管/风控 |
说明:不满足“显示条件”的按钮不显示(非禁用),减少界面干扰。
6.3.3 混合选中的处理逻辑
当用户选中的赛事状态混合时(如同时选中待上架和已上架赛事),系统仅对符合条件的赛事执行操作,不符合条件的自动跳过。
| 示例场景 | 选中内容 | 点击「批量上架」结果 |
|---|---|---|
| 混合选中 | 待上架 5 场 + 已上架 3 场 | 仅处理 5 场待上架赛事,3 场已上架自动跳过 |
| 全部符合 | 待上架 8 场 | 处理全部 8 场 |
| 全部不符合 | 已上架 8 场 | 按钮不显示 |
6.4 批量选中数量限制
| 限制项 | 数值 | 说明 |
|---|---|---|
| 单次最大选中数 | 100 条(默认值为100,系统级写死,修改需发版) | 防止误操作影响过多赛事 |
| 超限提示 | 最多选择 100 条记录 | Toast 提示,阻止继续选中 |
| 跨页选中 | 支持 | 切换分页时保留已选状态 |
6.5 批量上架配置
批量上架时需要配置以下内容,通过弹窗形式让用户确认。
6.5.1 批量上架确认弹窗(示意)
┌─────────────────────────────────────────────┐
│ 批量上架确认 │
├─────────────────────────────────────────────┤
│ 即将上架 10 场赛事 │
│ │
│ 盘口初始状态: │
│ ● 跟随数据源(推荐) │
│ ○ 锁定 │
│ ○ 隐藏 │
│ │
│ 分配操盘手(必填): │
│ [ 点击分配操盘手 ] ✓ 已分配 6 个玩法 │
│ (按玩法分别指定赛前/滚球操盘手) │
│ │
│ [ 取消 ] [ 确认上架 ] │
└─────────────────────────────────────────────┘6.5.2 配置项说明
6.5.2.1 盘口初始状态
| 配置项 | 选项 | 默认值 | 说明 |
|---|---|---|---|
| 盘口初始状态 | 跟随数据源 | ✓ | 默认值;上架后盘口跟随IM状态,可立即投注 |
| 盘口初始状态 | 锁定 | 盘口可见但暂停投注,需操盘手进入详情页手动解锁 | |
| 盘口初始状态 | 隐藏 | 盘口对玩家不可见,需操盘手进入详情页手动取消隐藏 |
设计说明:三个选项与操盘详情页上架弹窗完全统一。「跟随数据源」为默认选项,适合常规赛事;「锁定」允许玩家看到盘口但无法投注;「隐藏」最严格,盘口对玩家完全不可见。
6.5.2.2 分配操盘手(必填)
组件共用说明:点击「分配操盘手」按钮打开统一的操盘手分配弹窗(穿梭框模式),详见第11章11.6节操盘手分配弹窗(SSOT)。
分配方式:统一采用按玩法分配的穿梭框模式,通过阶段切换分别配置赛前和滚球操盘手。
| 弹窗区域 | 说明 |
|---|---|
| 阶段选择 | 切换赛前/滚球阶段,分别配置该阶段的操盘手分配 |
| 玩法汇总 | 显示当前阶段的玩法总数、已分配数、待分配数 |
| 穿梭框 | 左侧待分配玩法,中间选择操盘手,右侧已分配玩法 |
| 操盘手统计 | 底部显示各操盘手负责的玩法数量 |
操盘手必填说明:批量上架必须完成操盘手分配,不允许"暂不分配"。赛前和滚球两个阶段的所有玩法均须分配操盘手,否则阻止上架。
批量上架时的分配规则:
- 选中的多场赛事共享同一份玩法分配配置
- 若某赛事不包含已配置的玩法,该配置对该赛事自动跳过
- 操盘手权限不覆盖某联赛时,该赛事对应玩法标记为「权限不足」跳过
6.6 批量操作执行流程
6.6.1 事务边界定义
批量操作采用”尽量成功”策略,非原子性事务:
| 策略 | 说明 |
|---|---|
| 逐条执行 | 每条赛事独立执行,单条失败不影响其他赛事 |
| 部分成功 | 允许部分成功、部分失败、部分跳过 |
| 结果汇总 | 执行完成后统一展示执行结果 |
6.6.2 执行流程
| 步骤 | 系统行为 | 界面反馈 |
|---|---|---|
| 1 | 校验选中赛事数量和状态 | 不符合条件时弹出提示 |
| 2 | 弹出确认/配置弹窗 | 用户确认后继续 |
| 3 | 锁定批量操作按钮 | 按钮显示加载状态 |
| 4 | 按选中顺序逐条执行 | 显示执行进度(已完成 X / 共 Y 条) |
| 5 | 记录每条执行结果 | 成功/失败/跳过 |
| 6 | 全部执行完成 | 解锁按钮 |
| 7 | 弹出结果汇总弹窗 | 显示详细执行结果 |
| 8 | 刷新列表数据 | 更新赛事状态显示 |
6.6.3 执行结果展示
执行完成后弹出结果汇总弹窗:
┌─────────────────────────────────────────────┐
│ 批量上架执行结果 │
├─────────────────────────────────────────────┤
│ ✓ 成功:8 场 [ 绿色 ] │
│ ✕ 失败:1 场 [ 红色 ] │
│ - 跳过:1 场 [ 灰色 ] │
├─────────────────────────────────────────────┤
│ ▼ 失败详情(点击展开) │
│ • 曼城 vs 利物浦:赛事状态已变更为延期 │
│ [ 重试 ] │
│ ▼ 跳过详情(点击展开) │
│ • 皇马 vs 巴萨:已为已上架状态,无需操作 │
├─────────────────────────────────────────────┤
│ [ 重试全部失败 ] [ 关盘 ] │
└─────────────────────────────────────────────┘| 结果类型 | 颜色 | 说明 |
|---|---|---|
| 成功 | 绿色 | 操作执行成功 |
| 失败 | 红色 | 操作执行失败,可展开查看原因 |
| 跳过 | 灰色 | 因状态不符自动跳过,非错误 |
6.6.4 失败原因分类
| 失败原因 | 说明 | 是否可重试 |
|---|---|---|
| 状态已变更 | 赛事状态在执行期间被他人修改 | 刷新后重试 |
| 权限不足 | 当前用户无权操作该赛事 | 否 |
| 权限变更 | 用户权限在执行期间被变更(如被取消分配) | 否 |
| 联赛暂停 | 联赛状态在执行期间变更为暂停 | 联赛恢复后重试 |
| 联赛关盘 | 联赛状态在执行期间变更为关盘 | 否(需人工评估) |
| 数据源异常 | 数据源异常,暂时无法操作 | 等待恢复后重试 |
| 赛事延期 | 延期赛事无法上架 | 否 |
| 操盘手未配置 | 未指定分配方式/分配不完整 | 重新选择分配方式 |
| 网络超时 | 单条请求超时 | 可重试 |
| 服务器错误 | 服务端处理异常 | 可重试 |
6.6.5 跳过原因分类
| 跳过原因 | 说明 |
|---|---|
| 状态不符 | 赛事当前状态不满足操作前置条件(如已上架赛事无法再上架) |
| 非本人负责 | 普通操盘手选中了他人负责的赛事 |
6.6.6 重试机制
| 操作 | 说明 |
|---|---|
| 重试全部失败 | 对所有失败赛事重新执行操作 |
| 重试单条 | 点击失败详情中单条记录的「重试」按钮 |
| 取消 | 关闭弹窗,不重试 |
重试前系统自动刷新赛事最新状态:
- 状态已恢复符合条件:正常执行
- 状态仍不符合条件:自动跳过,不计入失败
6.7 批量操作日志
批量操作记录汇总日志和明细日志,详见第18章「操盘日志页面规范」。
| 日志类型 | 记录内容 |
|---|---|
| 汇总日志 | 操作人、操作时间、操作类型、选中数量、成功/失败/跳过数量、batch_id |
| 明细日志 | 关联 batch_id、赛事 ID、执行结果、失败原因 |
6.8 批量操作与单个操作的对照
| 操作类型 | 单个操作入口 | 批量操作入口 | 差异说明 |
|---|---|---|---|
| 上架 | 操作列「上架」按钮 | 批量操作栏「批量上架」 | 批量上架需统一配置操盘手和盘口状态 |
| 下架 | 操作列「下架」按钮 | 批量操作栏「批量下架」 | 逻辑一致 |
| 分配操盘手 | 详情页操作 | 批量操作栏「分配操盘手」 | 批量分配统一指定一个操盘手 |
设计说明:盘口操作(隐藏/取消隐藏/锁盘/解锁)统一在赛事详情页进行,列表页和批量操作栏均不提供。
修订记录
| 版本 | 日期 | 修订内容 |
|---|---|---|
| v1.0 | 2026-01-15 | 初稿 |
| v1.1 | 2026-01-20 | 【审计修正】1) 移除批量暂停/恢复/锁盘/解锁(盘口操作统一在详情页);2) 移除"暂不分配"选项(上架时操盘手必填);3) 盘口初始状态移除"锁定"选项;4) 精简 6.3/6.6/6.8 节相关内容 |
| v1.2 | 2026-01-28 | 【审计修正】6.6.4节补充失败原因分类:权限变更、联赛暂停、联赛关盘 |
| v1.3 | 2026-01-28 | 【操盘手分配重构】6.5.2.2节和6.5.3节改为引用11章SSOT;移除穿梭框设计,改为按玩法+赛前/滚球分配模式 |