← 返回博客

一本账 · UI 规范与页面流程

设计 token、页面清单与关键交互流程。


项目内容
版本v1.1
状态已评审(设计 token 为约束性规范,页面清单为开发依据)
设计工具Figma(高保真原型,实现前必须完成)
变更记录v1.0 首次定稿;v1.1 修订:消息页改为通知列表(去掉不存在的「邀请接受/拒绝」交互)、离线时编辑/删除入口置灰

1. 设计原则

  1. 记账要快:核心路径「金额 → 分类 → 完成」≤ 3 次点击、≤ 5 秒(PRD 体验红线)
  2. 多人感:让用户在每个关键页面感知「这是我们一起的账」—— 成员头像、记账人标记贯穿全流程
  3. 数字优先:金额永远是一行内视觉权重最高的元素;配色为数据让路
  4. 克制:无广告位、无运营位、无社交氛围组件;MVP 不做深色模式(P2)

2. 设计 Token(约束性规范)

2.1 色彩

Token值用途
color.primary#4C7DFF主色:按钮、选中态、链接
color.primary-weak#EAF0FF主色弱底:选中分类底色
color.expense#FF6B4A支出(红=花钱,国内记账心智)
color.income#16C79A收入(绿)
color.transfer#8A94A6转账(中性)
color.text-1#1F2430主文本
color.text-2#6B7280次文本(备注、说明)
color.text-3#A8B0BF弱文本(时间戳、占位)
color.bg-page#F6F7FA页面底色
color.bg-card#FFFFFF卡片底色
color.danger#F5484D超支/删除确认/错误
color.warn#FF9F1C预算 80% 预警

金额配色铁律:支出红、收入绿,全 App 一致,不允许混用。

2.2 字体与字号

Token值用途
font.amount-xl56rpx / 700记一笔页金额输入
font.amount-l40rpx / 600列表/总览大数字
font.title32rpx / 600卡片标题
font.body28rpx / 400正文
font.caption24rpx / 400说明文字
font.numberDIN Alternate / tabular-nums所有金额数字用等宽数字,列表对齐刚需

2.3 间距与圆角

  • 间距梯度(rpx):8 / 16 / 24 / 32 / 48;页面左右安全边距 32rpx
  • 卡片圆角 24rpx;按钮圆角 48rpx(胶囊);弹窗 32rpx
  • 阴影仅一级:0 4rpx 16rpx rgba(31,36,48,0.06)(列表页少用阴影,用分隔线)

2.4 布局基准

  • 设计稿 375×667(iPhone SE 基准,以小屏为基准向下兼容);单位 rpx
  • 安全面积:底部 tabbar 适配 iPhone 刘海屏 safe-area-inset-bottom

3. 页面清单(开发排期依据)

3.1 Tab 页(4 个)

页面路径内容要点
账本流水(首页)pages/ledger/index顶部:账本切换器(名称+成员头像叠放)+ 本月支出大数字 + 预算进度条;中间:按日分组流水列表(每条:分类图标/备注/金额/记账人头像角标);右下:悬浮「+」记账按钮;同步状态角标(同步中转圈/失败红点)
统计pages/stats/index月切换器 → 结余卡(收入/支出/结余、环比)→ 分类饼图(点击扇区见明细)→ 成员贡献条形图 → 近 6 月趋势(P1)
消息pages/notify/index通知列表(成员加入/被移除、预算提醒、账本解散;数据源 GET /notifications),下拉刷新 + 全部已读
我的pages/profile/index头像昵称(点击编辑)、我的账本列表、邀请成员入口、设置(账号注销/隐私政策/用户协议/关于)

3.2 记账核心页(模态全屏)

页面路径内容要点
记一笔pages/txn/edit全 App 最重要页面,详见第 4 节交互定义

3.3 二级页

页面路径内容要点
账本详情/设置pages/ledger/settings改名/改封面、成员管理(列表+移除+转让)、解散账本
邀请成员pages/ledger/invite大号邀请码展示(24h 倒计时)、复制口令/短信分享、加入方输入邀请码页
账目筛选pages/txn/filter成员/分类/类型/时间范围,入口在流水页顶部筛选chip
登录pages/auth/login手机号+验证码,一屏完成(无密码)
注册引导pages/auth/onboarding3 屏滑动引导 → 建账本或输邀请码二选一
设置子页pages/profile/*编辑资料/账号注销(二次验证码+冷静期提示)/隐私政策(H5)

页面总数:4 tab + 1 核心 + 8 二级 ≈ 13 屏(低于原估 15-20,利于 8 周客户端工期)。

4. 「记一笔」页面交互定义(核心中的核心)

┌──────────────────────────────┐
│ 支出 | 收入 | 转账 (顶部类型切换) │
│ │
│ ¥ 35.00 │ ← 大字号金额区(点击无光标,全键盘驱动)
│ [餐饮 ▾] 今天 ▾ 为谁花 ▾ │ ← 三个快捷选择 chip
│ 备注:________________ │
│ │
│ ┌────────────────────────┐ │
│ │ 自定义数字键盘 │ │ ← 数字/退格/再记一笔/完成
│ └────────────────────────┘ │
└──────────────────────────────┘

交互细则(逐条验收):

  1. 键盘默认弹起无需点击输入框;数字实时上屏,无输入延迟感知(帧率验证项)
  2. 分类 chip 点击展开底部半屏面板:一级分类宫格(4 列)→ 点进二级;默认选中上次使用的分类
  3. 日期 chip:默认今天,可选近 7 天(超出引导「去完整选择」日历面板)
  4. 「为谁花」chip:成员多选(头像 + 对勾);默认=记账人自己
  5. 键盘右下「完成」提交;「再记一笔」提交后留在本页清空金额(连续买菜场景)
  6. 提交后乐观更新:列表立即可见(同步状态角标),失败不回滚 UI、进重试队列
  7. 转账类型:金额下方出现「付款人 → 收款人」两个成员选择器
  8. 金额上限 100 万(元),超限键盘输入无效 + toast 提示
  9. 编辑已有账目:同页面复用,标题变「编辑账目」,含删除入口(二次确认);离线时编辑/删除置灰并提示「需联网」(MVP 离线仅支持记新账)

5. 关键流程图

5.1 冷启动决策流

启动 → [已登录?]
├─ 否 → 登录页(60s 内完成)→ 引导页 → ┐
└─ 是 → 首页(流水) │
▼
[有账本?] ─ 否 → 创建账本(命名+封面色)
│ │ 邀请引导浮层
│ 是 ▼
└──────► 首页(流水)

5.2 邀请-加入闭环

邀请方:账本设置 → 邀请成员 → 生成 6 位邀请码(24h)
→ 复制口令「【一本账】XXX 邀请你加入「我们的家」,邀请码 482913」→ 微信/短信分享
加入方:收到口令 → 打开 App → 登录 → 输入邀请码 → 进入账本 → 双方收到 member_joined 通知

5.3 离线记账同步流(UI 表现)

记账(离线)→ 列表显示「待同步」灰色角标 → 网络恢复 → 角标转圈 → 消失(已同步)
└─ 失败:红色角标,点击看原因/重试;数据本地永不丢失

6. 组件规范要点

组件规范
金额展示组件输入分 → 自动千分位 + 两位小数;支出带「-」前缀红色、收入「+」绿色;统一走 utils/money.ts
成员头像组叠放最多显示 3 个 + “+N”;单人头像 56rpx
同步状态角标三态:pending 灰点 / syncing 转圈 / failed 红点可点击
空状态流水空:「本月还没有账目,记第一笔吧」+ 大按钮;统计空:插画+引导
Toast成功提示 ≤ 1.5s 自动消失;错误类 Toast 常驻 3s 或需手动关闭
二次确认弹窗仅用于不可逆操作:删除账目/解散账本/移除成员/注销账号;文案必须含影响说明
下拉刷新流水页支持;统计页不支持(缓存直出)

7. 可用性验收红线(上线门槛)

  • 记一笔常用路径(金额→分类→完成)≤ 3 次点击、≤ 5 秒(真机实测,低端安卓)
  • 数字键盘连续输入 20 位无卡顿感知(60fps 抽查)
  • 流水列表 500+ 条滚动无白屏、无跳变
  • 所有金额展示千分位正确、收支颜色正确(自动化 UI 巡检覆盖)
  • iPhone SE(375 宽)无布局破版
  • 弱网(3G 模拟)下记账不报错,恢复联网后 30s 内完成同步