# OPT-01: 书籍列表操作按钮合并 → 下拉菜单

## 任务目标
将书籍卡片中的 5 个操作按钮合并为 2 个主导按钮 + 1 个"更多"下拉菜单。

## 状态
- 状态: 已完成
- 完成时间: 2026/05/07

## 实现摘要

### 模板修改 (第57-85行)
- 将原来的 5 个按钮合并为 3 个按钮:
  - `primary-btn` (flex: 1) - 生成内容（根据状态显示不同文案）
  - `publish-btn` (width: 180rpx) - 公开/取消公开
  - `more-btn` (width: 80rpx) - 更多操作

### 脚本修改 (第344-384行)
- 新增 `showMoreActions(book)` 函数
- 使用 `uni.showActionSheet` API 显示下拉菜单
- 菜单项动态显隐:
  - 合并音频: canMergeAudio(book) 时显示
  - 合并视频: canMergeVideo(book) 时显示
  - 生成全部视频: 音频完成且视频未完成时显示

### 样式修改 (第424-433行)
- `.book-actions`: 改为水平布局 `display: flex; gap: 12rpx;`
- `.primary-btn`: flex: 1 自适应宽度，绿色渐变背景
- `.publish-btn`: 固定宽度 180rpx，紫色渐变背景
- `.more-btn`: 固定宽度 80rpx，灰色背景
- 新增夜间模式媒体查询适配

## 修改文件
- `my-uniapp-vue3/src/pages/book-generator/index.vue`

## 验收检查
- [x] 页面正常加载无报错
- [x] 原有功能不受影响（音频/视频生成、合并、公开功能保持不变）
- [x] 新元素适配夜间模式
- [x] H5 + 小程序两端兼容 (uni.showActionSheet 为通用 API)

## 后续修复 (2026/05/07)

### [MEDIUM] 添加"重新生成视频"选项
- **位置**: `showMoreActions` 函数
- **修改**: 在 `videoStatus.status === 'completed'` 时显示"🔄 重新生成视频"选项
- **处理逻辑**: 与"生成全部视频"相同，调用 `handleGenerateAllVideo(book)`

### [LOW] 操作菜单增加 loading 反馈
- **位置**: `uni.showActionSheet` 的 `success` 回调
- **修改**:
  - 合并音频时设置 `mergingAudio.value[book.id] = true` 并显示 loading toast
  - 合并视频时设置 `mergingVideo.value[book.id] = true` 并显示 loading toast
- **目的**: 让用户明确感知操作已提交

### [LOW] 夜间模式补充 `.primary-btn` 和 `.publish-btn`
- **位置**: CSS 媒体查询
- **修改**:
  - `.primary-btn`: 夜间模式调整为 `#059669` → `#047857`
  - `.publish-btn`: 夜间模式调整为 `#4338ca` → `#4f46e5`
