Files
EmailBill/openspec/changes/archive/2026-02-13-budget-page-v2/proposal.md

56 lines
2.5 KiB
Markdown
Raw Normal View History

2026-02-13 22:49:07 +08:00
## Why
当前预算页面BudgetView.vue存在多个问题
1. **风格不一致**:与其他 v2 页面calendarV2、statisticsV2的页头设计不一致使用的是自定义的 `van-nav-bar` 而非统一的 `DateSelectHeader` 组件
2. **代码质量问题**:页面存在多个 bug包括状态管理混乱、数据刷新逻辑不清晰、存款计划日期切换不稳定等问题
3. **维护困难**代码结构复杂1000+ 行),组件职责不清晰,难以维护和扩展
需要重写预算页面以解决这些问题,并保持页面简洁高效。
## What Changes
- **页头重构**:使用 `DateSelectHeader` 组件替代当前的 `van-nav-bar`,实现年月选择器(支持左右箭头切换月份)
- **业务 tabs 布局调整**:将"支出/收入/计划"tabs 紧随页头之后,保持原有业务逻辑
- **预算内容重构**
- 保留现有的预算统计、分类列表、图表分析等核心功能
- 重构数据加载逻辑,消除现有 bug未覆盖分类加载、存款计划切换、日期同步等问题
- 优化组件结构,将复杂逻辑拆分为可复用的子模块
- 改善状态管理,统一数据流
- **统一交互体验**
- 实现左右滑动切换月份
- 统一下拉刷新行为
- 统一加载状态和错误处理
## Capabilities
### New Capabilities
- `budget-v2-page-layout`: 新的预算 v2 页面布局,包含 DateSelectHeader + 业务 tabs + 内容区域
- `budget-v2-data-loading`: 重构后的预算数据加载逻辑,消除现有 bug
### Modified Capabilities
_无_
## Impact
**前端影响**
- **新增文件**
- `Web/src/views/budgetV2/Index.vue` - 新的预算 v2 主页面
- `Web/src/views/budgetV2/modules/` - 预算子模块(图表、列表、编辑等)
- **修改文件**
- `Web/src/router/index.js` - 添加新路由或更新现有预算路由
- 可能需要调整现有的 `@/components/Budget/` 下的组件以适配新结构
- **复用组件**
- `@/components/DateSelectHeader.vue` - 页头年月选择器
- `@/components/Budget/BudgetCard.vue` - 预算卡片
- `@/components/Budget/BudgetEditPopup.vue` - 预算编辑弹窗
- `@/components/Budget/SavingsConfigPopup.vue` - 储蓄配置弹窗
- `@/components/Budget/BudgetChartAnalysis.vue` - 预算图表分析
**后端影响**
- 无需修改后端 API复用现有的预算相关接口
**依赖关系**
- 依赖现有的 `@/api/budget` 模块提供的 API
- 依赖 `@/stores/` 中的相关状态管理(如有)
- 依赖 Vant UI 组件库