# 维护记录配件与耗材数量功能更新

## 更新日期
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

## 后续建议

- [ ] 添加库存扣减功能（维护记录提交后自动扣减库存）
- [ ] 支持批量导入配件使用清单
- [ ] 添加常用配件组合模板
- [ ] 统计配件使用频率和成本分析
- [ ] 生成配件采购建议
