## 问题定位
- 奖品页 `web/admin/src/views/activity/rewards/index.vue` 在工具栏下方无条件渲染了批量抽奖对话框：`<BatchDrawDialog :activity="currentActivity" />`。
- 该子组件内部以 `props.activity !== null` 控制 `v-model`，而当前页的 `currentActivity` 始终返回对象（非 null），导致对话框初始即打开，表现为点击“新增奖励”时出现“批量抽奖”。

## 修复方案
- 直接移除奖品页中的 `BatchDrawDialog` 渲染（该页仅做奖励 CRUD，模拟批量抽奖逻辑属于活动管理页/模拟页）。
- 若保留（备选）：使用受控显示状态，改为 `<BatchDrawDialog v-model="showBatchDrawDialog" :activity="showBatchDrawDialog ? currentActivity : null" />`，并提供单独按钮触发。默认 `showBatchDrawDialog=false`。
- 采用“移除”方案，影响文件：`web/admin/src/views/activity/rewards/index.vue`（删除组件引用与相关变量）。

## 奖品列表优化
- 新增展示：
  - “剩余/总量”列：`quantity / original_qty`
  - “期望概率”列：基于总权重 `sumWeight` 本地计算 `weight/sumWeight*100`，保留两位小数。
  - Boss 标签保持，但列名更明确为“Boss”。
- 汇总信息：表头上方显示“奖品总数 / 总权重”。
- 交互优化：
  - 编辑校验完善（名称、商品、权重、数量、原始数量、等级为必填/大于零）。
  - 删除增加二次确认弹窗。
- 过滤与排序（前端本地）：
  - 过滤项：名称（模糊）、等级（S/A/B/C）、是否 Boss。
  - 默认排序：按等级（S→C）+ `sort`。
- 数据加载优化：商品列表一次加载并缓存，避免重复请求。

## 具体改动
- 修改文件：`web/admin/src/views/activity/rewards/index.vue`
  - 删除 `<BatchDrawDialog :activity="currentActivity" />` 与相关 `currentActivity` 计算属性。
  - 在 `columns` 增加 `剩余/总量`、`期望概率` 两列（期望概率通过本地计算得到）。
  - 在顶部新增汇总区域（使用 `computed` 基于 `data` 计算）。
  - 增加简单的本地过滤控件（`ElInput`/`ElSelect`），对展示数据做 `computed` 过滤与排序。
  - 删除与批量抽奖相关的无用状态（如 `showSimDialog`）。
  - 删除按钮文案更明确：`批量新增奖励` → `新增奖励`。
- 不改后端接口；所有优化为前端表现层。

## 验收
- 进入“奖励”页，点击“新增奖励”只弹奖励编辑对话框，不再出现批量抽奖对话框。
- 列表显示“剩余/总量”、“期望概率”，汇总信息正确；过滤与排序生效。
- 构建通过，交互校验正常，删除有确认提示。

## 风险与回滚
- 风险低，仅前端视图改动；如需回滚，保留原组件引用并恢复初始布局即可。