发现与决策
需求
10个OA功能模块
- 报销单 — 实报实销,事后报销,含明细
- 报销明细表(报表) — 报销数据的汇总报表
- 报销申请单 — 事前申请,预估费用,审批后执行
- 报销申请明细表(报表) — 报销申请的汇总报表
- 加班申请单 — 加班事前/事后申请
- 加班申请明细表(报表) — 加班数据汇总报表
- 用车申请单 — 车辆使用申请
- 用车申请明细表(报表) — 用车数据汇总报表
- 业务员外出日志 — 销售外勤签到/日志
- 公告 — 公司通知公告
用户角色
- 普通员工/业务员:发起申请、查看自己的数据、查看公告
- 审批人/管理员:审批待办、查看报表、发布公告
研究发现
现有代码架构
- 项目已有良好的基础架构:
- Riverpod 状态管理
- GoRouter 路由
- Dio 网络层(含 Mock 拦截器)
- Material 3 主题(主色 #00ABF3)
- 响应式布局辅助类
- 共享组件(AppCard, StatusTag, FormSection, FormFieldRow)
- 现有功能为骨架/占位代码,需完整实现
- TDesign Flutter 未添加为依赖
TDesign Flutter
- 版本 0.2.7,要求 Flutter >=3.16.0,Dart SDK >=3.2.6
- 提供 60+ 组件:Button, Cell, Input, Form, Tag, Dialog, Picker, DatePicker, NavBar, Tabs, TabBar, SearchBar, Image, Avatar, Badge, Steps, Table, PullDownRefresh, LoadMore, SwipeAction, ActionSheet, Toast, Loading, Message, Popup, Empty, Divider 等
- 主题系统:TDThemeData, TDTheme.of(context), needMultiTheme()
- 支持明暗主题切换
参考产品设计模式(钉钉/企业微信/飞书)
- 工作台首页:卡片式入口,待办数量角标
- 列表页:状态筛选标签栏 + 卡片列表 + 下拉刷新 + 上拉加载
- 申请页:分组表单 + 底部固定按钮
- 详情页:信息分组展示 + 审批流程时间线
- 报表页:筛选条件 + 图表 + 列表
技术决策
| 决策 |
理由 |
| 使用 TDesign Flutter 替代原生 Material |
用户明确要求,提供统一设计语言 |
| 报销单=实报实销,报销申请单=预申请 |
参考企业微信/金蝶的业务模型 |
| 保持现有 Riverpod + GoRouter 架构 |
已建立良好基础,无需重构 |
| iOS 使用 Method Channel 通信 |
OC 宿主应用兼容 |
| 报表使用 fl_chart |
已在依赖中,无需新增 |
遇到的问题
资源
视觉/浏览器发现
- TDesign Flutter 提供 TDCell 组件,适合列表项展示(类似微信列表项)
- TDButton 支持多种样式:fill/outline/text,多种主题色
- TDDatePicker 支持日期/时间/日期时间选择
- TDForm + TDFormItem 提供表单能力
- TDTag 提供状态标签(适合审批状态展示)
- TDSwipeAction 提供滑动操作(左滑编辑/删除,类似现有 flutter_slidable)
每执行2次查看/浏览器/搜索操作后更新此文件
防止视觉信息丢失