react-phone-apps/.blueprint/modules/inventory-summary.md
lanrtop cea2a5d208 feat: 表单保存优化、照片保存相册及布局性能改进
- 物品表单底部新增冻结保存按钮,保存成功显示 Toast 提示
- 照片全屏预览时支持一键保存到本地相册(expo-media-library ~16.0.0)
- 左侧标记点列表侧栏宽度从 120 调整为 160
- FoldableLayout 改用 LayoutAnimation 替代 JS 线程宽度动画,修复 Android 地图渲染空白及卡顿问题
- 修复 ImagePicker 废弃 API MediaTypeOptions.Images → MediaType.Images

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-10 00:12:42 +09:00

48 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: inventory-summary
name: 汇总列表与统计
area: rn-app
status: done
---
## 概述
汇总展示全部已登记物品,支持按楼层和物品名筛选,底部显示总件数和总金额统计。提供 CSV 导出通过系统分享面板发送备份。
## 任务卡
### 🔵 汇总数据查询 Hook
- status: done
- complexity: M
- files: apps/property-survey/src/features/summary/useSummaryData.ts
- depends: local-data-layer
- acceptance: 查询所有 items JOIN markers JOIN photos返回带楼层、坐标、物品名、数量、单价、备注、照片数的扁平列表支持按 floor1/2/3/全部)和 name 关键字过滤;数据写入后调用 refresh() 触发重新查询
### 🔵 汇总列表与筛选栏
- status: done
- complexity: M
- files: apps/property-survey/src/features/summary/SummaryList.tsx, apps/property-survey/src/features/summary/FilterBar.tsx
- depends: inventory-summary
- acceptance: 列表每行显示楼层标签、物品名、数量、单价、备注1FilterBar 提供楼层选择器1F/2F/3F/全部和物品名搜索框滚动性能流畅FlatList空数据时显示引导文案
### 🔵 统计汇总卡片
- status: done
- complexity: S
- files: apps/property-survey/src/features/summary/SummaryStats.tsx
- depends: inventory-summary
- acceptance: 固定在列表顶部,展示:登记点总数、物品种类数、总数量合计、总金额合计(数量×单价求和,单价为空则不计入),数值随筛选条件实时更新
### ✅ CSV 导出与系统分享
- status: done
- complexity: M
- files: apps/property-survey/src/features/summary/exportData.ts
- depends: inventory-summary
- acceptance: 点击导出按钮,将当前筛选结果生成 UTF-8 BOM 的 CSV 文件(含表头:楼层/标记点名/物品名/数量/单价/备注1/备注2/照片数),写入临时目录后调用 expo-sharing 弹出系统分享面板,可发送到微信/邮件/云盘
### ✅ 导出照片关联索引
- status: done
- complexity: M
- files: apps/property-survey/src/features/summary/exportData.ts
- depends: inventory-summary
- acceptance: ZIP 结构改为:① 主 CSV 增加"照片目录"列,值为对应子目录路径(无照片则为空);② 照片按物品分子目录存放 `photos/{floor}F_{markerLabel}_{name}({itemId})/1.jpg`;③ ZIP 根目录生成 `photos/index.csv`每行对应一张照片物品ID/楼层/标记点/物品名/照片文件路径),方便程序化处理