# 发现与决策 ## 需求 ### 10个OA功能模块 1. **报销单** — 实报实销,事后报销,含明细 2. **报销明细表(报表)** — 报销数据的汇总报表 3. **报销申请单** — 事前申请,预估费用,审批后执行 4. **报销申请明细表(报表)** — 报销申请的汇总报表 5. **加班申请单** — 加班事前/事后申请 6. **加班申请明细表(报表)** — 加班数据汇总报表 7. **用车申请单** — 车辆使用申请 8. **用车申请明细表(报表)** — 用车数据汇总报表 9. **业务员外出日志** — 销售外勤签到/日志 10. **公告** — 公司通知公告 ### 用户角色 - **普通员工/业务员**:发起申请、查看自己的数据、查看公告 - **审批人/管理员**:审批待办、查看报表、发布公告 ## 研究发现 ### 现有代码架构 - 项目已有良好的基础架构: - 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 GitHub: https://github.com/Tencent/tdesign-flutter - TDesign Flutter 文档: https://tdesign.tencent.com/flutter/getting-started - fl_chart: https://pub.dev/packages/fl_chart ## 视觉/浏览器发现 - TDesign Flutter 提供 TDCell 组件,适合列表项展示(类似微信列表项) - TDButton 支持多种样式:fill/outline/text,多种主题色 - TDDatePicker 支持日期/时间/日期时间选择 - TDForm + TDFormItem 提供表单能力 - TDTag 提供状态标签(适合审批状态展示) - TDSwipeAction 提供滑动操作(左滑编辑/删除,类似现有 flutter_slidable) --- *每执行2次查看/浏览器/搜索操作后更新此文件* *防止视觉信息丢失*