- 添加 BudgetItemCalculator 辅助类,实现明细项计算规则 - 收入:实际>0取实际,否则取预算 - 支出:取MAX(预算, 实际) - 硬性支出未发生:按天数折算 - 归档数据:直接使用实际值 - 实现月度和年度存款核心公式 - 月度:收入预算 + 本月年度收入 - 支出预算 - 本月年度支出 - 年度:归档已实收 + 未来收入预算 - 归档已实支 - 未来支出预算 - 定义存款明细数据结构 - SavingsDetail: 包含收入/支出明细列表和汇总 - BudgetDetailItem: 预算明细项(含计算用金额、计算说明等) - SavingsCalculationSummary: 计算汇总信息 - 新增单元测试 - BudgetItemCalculatorTest: 11个测试覆盖所有计算规则 - BudgetSavingsCalculationTest: 6个测试验证核心公式 测试结果:所有测试通过 (366 passed, 0 failed)
1.3 KiB
1.3 KiB
1. 修改父组件传递数据
- 1.1 在 Index.vue 中修改 SavingsBudgetContent 组件调用,添加 income-budgets 和 expense-budgets props
- 1.2 验证数据传递正确(通过 Vue DevTools 检查 props)
2. 修改 SavingsBudgetContent 组件
- 2.1 在 props 定义中添加 incomeBudgets 和 expenseBudgets 数组
- 2.2 添加 matchedIncomeBudget 计算属性(根据 periodStart 和 type 匹配)
- 2.3 添加 matchedExpenseBudget 计算属性(根据 periodStart 和 type 匹配)
- 2.4 添加 incomeLimit 计算属性(从 matchedIncomeBudget 获取或默认 0)
- 2.5 添加 incomeCurrent 计算属性(从 matchedIncomeBudget 获取或默认 0)
- 2.6 添加 expenseLimit 计算属性(从 matchedExpenseBudget 获取或默认 0)
- 2.7 添加 expenseCurrent 计算属性(从 matchedExpenseBudget 获取或默认 0)
3. 测试验证
- 3.1 测试有对应收入和支出预算的存款计划,打开明细弹窗验证数据显示正确
- 3.2 测试没有对应收入或支出预算的存款计划,验证弹窗显示 0 且不报错
- 3.3 验证计划存款公式计算正确(收入预算 - 支出预算 = 计划存款)
- 3.4 测试月度和年度两种类型的存款计划明细
- 3.5 使用不同月份的存款计划测试,验证匹配逻辑正确