Files
ezbookkeeping/MY_REQUIREMENTS.md
T

6.6 KiB
Raw Blame History

ezBookkeeping 个人需求清单

基于 fork 版本的定制开发需求,持续更新。 标注:⚠️ 中等难度 | 难/暂缓 | 🟢 已完成


一、UI / 主题

1. ⚠️ 自选主题色

描述: 在设置页面增加主题色选择器,用户可自由选择应用主色调。

现状: 主题色当前硬编码为 #c67e48,仅支持亮色/暗色切换。

实现思路:

  • 在设置页新增颜色选择器组件
  • 将所选颜色保存至 localStorage
  • 启动时读取颜色并注入 CSS 变量(Framework7 支持动态 primary color
  • 涉及文件:MobileApp.vuesrc/lib/settings.ts、设置页面

二、账户功能

2. 🟢 信用卡账户:额度与剩余额度

描述: 为信用卡类型账户新增「信用额度」字段,在账户列表显示「可用额度」。

已完成:

  • 后端:AccountExtend JSON blob 新增 CreditLimit 字段(无需数据库迁移)
  • APIAccountCreateRequest / AccountModifyRequest / AccountInfoResponse 增加 creditLimit
  • 前端 modelAccount 类增加 creditLimit 字段,同步 toCreateRequest / toModifyRequest
  • 移动端 EditPageCreditCard 分类时显示信用额度输入项
  • 移动端 ListPage:账户列表显示「可用额度」(= creditLimit + balance,因信用卡余额为负值)
  • 语言包:中英文均已添加 "Credit Limit" / "Available"

3. ⚠️ 账户交易列表顶部显示账户信息

描述: 在按账户筛选的交易列表页面顶部,显示账户名称、余额(或信用卡欠款+额度)等信息卡片。

实现思路:

  • 检测当前是否为单账户筛选状态
  • 顶部插入账户信息卡片组件
  • 若多账户筛选则显示多张卡片
  • 涉及文件:src/views/mobile/transactions/ListPage.vue

4. 🟢 允许直接修改账户余额(自动插入调整记录)

描述: 在账户编辑页直接修改余额字段,保存时自动计算差值并插入一条「余额调整」类型交易记录。

已完成:

  • 后端:移除「账户已有交易时不允许添加 ModifyBalance」限制
  • 后端:AmountRelatedAccountAmount 均存储 delta(而非目标余额);删除该交易可撤销 delta
  • 前端 store:新增 adjustAccountBalance({ accountId, targetBalance, currentBalance }) 函数
  • 移动端 EditPage:余额字段对已有账户解除只读,保存时若余额变化先调用 adjustAccountBalance;捕获 NothingWillBeUpdated (200004) 视为成功
  • 桌面端 EditDialog:同上逻辑,支持多子账户逐一调整

三、记账页面

5. 🟢 记账页显示当前账户余额 / 欠款+额度

描述: 在记账页面选择账户后,在账户名称下方显示该账户的当前余额(普通账户)或欠款金额(信用卡/负债)。

已完成:

  • 信用卡账户显示「可用额度: ¥xxx」(= creditLimit + balance
  • 普通负债账户显示欠款正数,普通资产账户显示余额
  • 转账时源账户和目标账户均显示
  • 移动端:账户行 footer;桌面端:custom-selection-secondary-text
  • 涉及文件:src/views/mobile/transactions/EditPage.vuesrc/views/desktop/transactions/list/dialogs/EditDialog.vue

6. 记录上次选择的账户

描述: 新建交易时,默认选中上次使用的账户,而非每次重置为默认账户。

实现思路:

  • 保存账户 ID 到 localStorage
  • 打开记账页时读取并预选
  • 涉及文件:src/views/mobile/transactions/EditPage.vuesrc/lib/settings.ts

四、小键盘

7. 🟢 小键盘布局调整

描述: 调整数字键盘布局。

已完成:

[数值显示区              ] [ ⌫ ]   ← ⌫ 在显示区右侧,左边有竖线与右列对齐
  7     8     9      ×
  4     5     6      
  1     2     3      +
  C     0     .     OK
  • ⌫ 位于数值显示区右侧,宽度 20% 与运算符列对齐,单击退格,长按清除
  • 左下角 C:单击清除全部
  • . 在 OK 左侧
  • × 保留
  • 涉及文件:src/components/mobile/NumberPadSheet.vue

五、交易详情

8. 🟢 交易详情菜单增加「编辑」和「删除」

描述: 交易详情页三点菜单中增加编辑和删除操作。

已完成:

  • 三点菜单展开后,第一项为「Edit」(跳转编辑页)
  • 最后一项为红色「Delete」(确认后删除并返回)
  • 从详情编辑返回后自动刷新数据
  • 涉及文件:src/views/mobile/transactions/EditPage.vue

六、分类选择

9. 分类选择默认全部展开

描述: 在记账页面选择分类时,默认将所有一级分类展开显示子分类,或在设置中可配置哪些分类默认展开。

实现思路:

  • 修改 TreeViewSelectionSheet.vue 中展开状态的初始值
  • 可选:在设置中增加「分类默认展开」开关
  • 涉及文件:src/components/mobile/TreeViewSelectionSheet.vue

七、性能与动画

10. 🟢 全局动画加速

描述: 全局页面跳转及各类弹层动画加速。

已完成:

  • 全局动画时长从 300ms 加快至 150ms(页面跳转、Sheet、ActionSheet、Popup、Dialog、Popover
  • Tab 切换动画保持原样(设置中已有开关可控制)
  • 涉及文件:src/styles/mobile/global.scss

11. 🟢 点击响应卡顿优化

描述: 点击按钮有延迟感,点不上的问题。

已完成:

  • tapHoldDelay 从默认 750ms 降至 500ms,减少长按判定等待
  • 涉及文件:src/MobileApp.vue

八、离线 / 缓存

12. 本地优先 / 离线数据缓存(暂缓)

描述: 交易数据缓存至本地,优先展示缓存数据,后台静默拉取最新数据并更新。

现状: Service Worker 已实现静态资源缓存(图片、字体、地图瓦片),但交易业务数据目前不做本地缓存。

为何难:

  • 需引入 IndexedDB 存储交易/账户/分类数据
  • 需处理本地与服务端的数据同步、冲突解决
  • 属于架构级改动,工作量较大

建议: 先完成其他需求,此项作为后期规划。


进度总览

# 需求 状态
1 自选主题色 ⚠️ 待做
2 信用卡额度 🟢 已完成
3 账户信息卡片 ⚠️ 待做
4 调整余额入口 🟢 已完成
5 记账页显示余额 🟢 已完成
6 记住上次账户 待定
7 小键盘布局 🟢 已完成
8 详情编辑/删除 🟢 已完成
9 分类默认展开 待定
10 全局动画加速 🟢 已完成
11 点击卡顿优化 🟢 已完成
12 离线缓存 暂缓