已选中 {{ selectedIds.size }} 条
批量删除
```
---
## 注意事项
1. **数据源模式选择**:
- 如果需要自动分页、筛选,使用 `dataSource="api"`
- 如果需要自定义数据管理(如搜索、离线数据),使用 `dataSource="custom"`
2. **筛选功能**:
- `enableFilter` 控制筛选栏的显示/隐藏
- 筛选栏包括:类型、分类、日期范围、排序四个下拉菜单
- Custom 模式下,筛选仅在前端过滤,不会调用 API
3. **删除功能**:
- 组件内部自动调用 `deleteTransaction` API
- 删除成功后会派发全局事件 `transaction-deleted`
- 父组件通过 `@delete` 事件可执行额外逻辑
4. **多选功能**:
- 启用 `showCheckbox` 后,账单项左侧显示复选框
- 使用 `v-model:selectedIds` 或 `@update:selectedIds` 同步选中状态
5. **样式适配**:
- 组件自动适配暗黑模式(使用 CSS 变量)
- `compact` 模式适合列表视图,舒适模式适合详情查看
---
## 与旧版 TransactionList 的差异
| 特性 | 旧版 TransactionList | 新版 BillListComponent |
|------|---------------------|----------------------|
| 数据管理 | 仅支持 Custom 模式 | 支持 API + Custom 模式 |
| 筛选功能 | 无内置筛选 | 内置筛选栏(类型、分类、日期、排序) |
| 样式 | 一行一卡片,间距大 | 紧凑列表,间距 6px |
| 图标 | 无分类图标 | 显示分类图标和彩色背景 |
| Props 命名 | `show-delete` | `show-delete`(保持兼容) |
---
## 相关文件
- 组件实现: `Web/src/components/Bill/BillListComponent.vue`
- API 接口: `Web/src/api/transactionRecord.js`
- 设计文档: `openspec/changes/refactor-bill-list-component/design.md`
---
## 常见问题
**Q: 如何禁用筛选栏?**
A: 设置 `:enable-filter="false"`
**Q: Custom 模式下分页如何实现?**
A: 父组件监听 `@load` 事件,追加数据到 `transactions` 数组,并控制 `loading` 和 `finished` 状态
**Q: 如何自定义卡片样式?**
A: 使用 `compact` prop 切换紧凑/舒适模式,或通过全局 CSS 变量覆盖样式
**Q: CalendarV2 为什么还有单独的 TransactionList?**
A: CalendarV2 的 TransactionList 有特定于日历视图的功能(Smart 按钮、特殊 UI),暂时保留