# 维护记录配件与耗材数量功能更新 ## 更新日期 2025年10月16日 ## 更新内容 ### 1. 数据结构优化 #### 新增 MaterialUsage 接口 ```typescript export interface MaterialUsage { materialId: string; // 农资物料ID quantity: number; // 使用数量 } ``` #### 更新 MaintenanceRecord 接口 将 `partsAndMaterials` 字段从 `string[]` 更新为 `MaterialUsage[]`,支持记录每个配件的使用数量。 ```typescript export interface MaintenanceRecord { // ...其他字段 partsAndMaterials?: MaterialUsage[]; // 农资物料使用情况(含数量) } ``` ### 2. 组件功能增强 #### MaintenanceRecords 组件更新 - **配件选择区域**: - 每个配件卡片现在包含复选框和数量输入框 - 选中配件后,自动显示数量输入框(默认值为1) - 数量输入框支持小数输入(精确到0.01) - 自动限制最大值为当前库存 - 实时显示每项配件的小计金额 - **智能统计**: - 显示已选择的配件数量 - 自动计算预估配件费用总额 - 费用 = Σ(配件单价 × 使用数量) - **列表展示优化**: - 在维护项目下方显示使用的配件详情 - 格式:`配件名称 × 数量单位` - 示例:`机油滤芯 × 2个、液压油 × 15升` ### 3. 数据迁移 #### 自动迁移机制 在 `lib/machineryStorage.ts` 中实现了自动数据迁移功能: - 检测旧格式数据(string[] 格式) - 自动转换为新格式(MaterialUsage[] 格式) - 为旧数据设置默认数量为 1 - 自动保存迁移后的数据 ```typescript // 旧格式 partsAndMaterials: ['material-1', 'material-2'] // 新格式(自动迁移) partsAndMaterials: [ { materialId: 'material-1', quantity: 1 }, { materialId: 'material-2', quantity: 1 } ] ``` ### 4. 用户界面改进 #### 配件选择卡片 ``` ┌─────────────────────────────────────────────┐ │ ☑ 机油滤芯 [配件] 10W-40 库存: 50个 │ │ 约翰迪尔配件中心 | ¥85/个 │ │ │ │ 使用数量: [ 2 ] 个 小计: ¥170.00 │ └─────────────────────────────────────────────┘ ``` #### 费用统计 ``` 已选择 3 项配件与耗材 预估配件费用: ¥325.50 ``` ## 主要优势 1. **精确记录**:准确记录每种配件和耗材的使用数量 2. **成本控制**:实时计算配件费用,便于成本核算 3. **库存管理**:自动限制使用数量不超过库存 4. **数据完整**:完整的维护记录数据支持后续分析 5. **向后兼容**:自动迁移旧数据,无需手动处理 ## 使用说明 ### 添加维护记录时: 1. 点击"新增维护记录"按钮 2. 填写基本信息(维护类型、时间、人员等) 3. 在"配件与耗材"区域选择所需配件 4. 为每个选中的配件输入使用数量 5. 系统自动计算预估费用 6. 提交保存 ### 查看维护记录时: - 在维护项目下方查看使用的配件及数量 - 格式:`配件名称 × 数量单位` ## 技术实现 ### 文件修改清单 1. `/types/machinery.ts` - 新增 MaterialUsage 接口,更新 MaintenanceRecord 2. `/lib/machineryStorage.ts` - 添加数据迁移逻辑 3. `/components/machinery/MaintenanceRecords.tsx` - 更新UI和交互逻辑 ### 关键功能 - 复选框控制配件选择 - 数量输入框(仅在选中时显示) - 实时费用计算 - 自动数据迁移 ## 注意事项 1. 数量输入支持小数,最小值为 0.01 2. 数量不能超过当前库存 3. 未选中的配件不会保存到记录中 4. 预估费用仅供参考,不影响维护费用字段 5. 旧数据会自动迁移,默认数量为 1 ## 后续建议 - [ ] 添加库存扣减功能(维护记录提交后自动扣减库存) - [ ] 支持批量导入配件使用清单 - [ ] 添加常用配件组合模板 - [ ] 统计配件使用频率和成本分析 - [ ] 生成配件采购建议