💰 账单管理
账单列表展示、筛选、详情查看、成员管理、导出 CSV。
页面结构
- 顶部:账单总数 + 刷新按钮
- 筛选栏:创建时间范围 + 所有者筛选 + 共享成员筛选
- 账单表格:账单名称 / 所有者昵称 / 成员数 / 交易数 / 创建时间
- 行操作:点击账单行任意位置 → 进入详情页(GET /bills/:billId)
触发时机详解
1. 页面加载 → GET /api/admin/bills
触发条件:进入账单管理页面 / 刷新按钮 / 筛选条件变化
GET
/api/admin/bills
✅ 页面加载时触发,筛选条件变化后自动重新请求
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
start_date | string | 选填 | 创建时间起始(YYYY-MM-DD) |
end_date | string | 选填 | 创建时间截止(YYYY-MM-DD) |
owner_id | string | 选填 | 账单所有者用户ID |
shared_with | string | 选填 | 共享成员用户ID(返回包含此成员的账单) |
响应:
[{
"id": "string",
"name": "string",
"owner_id": "string",
"owner_nickname": "string",
"member_count": 3,
"tx_count": 45,
"created_at": "ISO8601"
}]
2. 点击账单名称 → GET /api/admin/bills/:billId
触发条件:点击列表中的账单名称,进入账单详情页(通常是新页面/路由跳转)
GET
/api/admin/bills/:billId
✅ 点击账单行任意位置触发(路由跳转)
响应:
{
"id": "string",
"name": "string",
"owner_id": "string",
"owner_nickname": "string",
"created_at": "ISO8601",
"members": [{
"user_id": "string",
"role": "owner|member",
"nickname": "string"
}]
}
3. 点击「刷新」按钮
触发条件:点击刷新按钮 → 重新调用 GET /api/admin/bills(保留当前筛选状态)
4. 导出 CSV → 本地生成(无需后端)
触发条件:点击导出按钮 → 纯前端 JS 根据筛选后本地数据生成 CSV 文件并触发下载