15 KiB
15 KiB
🎉 新增"负载设备"功能 - 设备库管理
📅 创建时间
2025-10-16
🎯 功能背景
原架构的问题
之前的流程 ❌:
1. 负载类型 → 定义设备类别
2. 负载参数 → 定义参数模板
3. 负载管理 → 挂载时创建设备
问题:
- ❌ 挂载时创建设备,设备没有独立生命周期
- ❌ 设备无法在不同农机间流转
- ❌ 无法管理设备库存状态
- ❌ 设备参数每次挂载都要重新配置
新架构的改进
正确的流程 ✅:
1. 负载类型 → 定义设备类别(如摄像头、北斗终端)
↓
2. 负载参数 → 为类别定义参数模板(IP地址、端口等)
↓
3. 负载设备(新增!)→ 在设备库中添加设备实例
- 摄像头-001、摄像头-002
- 根据参数模板配置设备参数
- 管理设备状态:待挂载、已挂载、维护中
↓
4. 负载管理 → 从设备库选择设备挂载到农机
- 不创建新设备
- 选择现有设备
- 建立挂载关系
优点:
- ✅ 设备有独立的生命周期管理
- ✅ 设备可以在不同农机间流转
- ✅ 统一管理设备库存和状态
- ✅ 设备参数一次配置,多次使用
✨ 新增功能
1. 负载设备管理(设备库)⭐
位置: 负载管理 > 负载设备
功能:
- 管理所有设备实例
- 每个设备有唯一序列号
- 设备参数一次配置,长期使用
- 设备状态跟踪
界面:
┌─────────────────────────────────────────────────────────────┐
│ 负载设备 [+ 添加设备]│
│ 管理设备库中的所有设备实例 │
├─────────────────────────────────────────────────────────────┤
│ 设备名称 │ 类型 │ 类别 │ 序列号 │ 状态 │ 挂载位置 │ 操作 │
├─────────────────────────────────────────────────────────────┤
│ 摄像头-001│摄像头│摄像 │CAM-001│待挂载│ - │✏️ 🗑️ │
│ 摄像头-002│摄像头│摄像 │CAM-002│已挂载│拖拉机-01│✏️ 🗑️ │
│ 北斗-001 │北斗 │北斗 │BD-001 │待挂载│ - │✏️ 🗑️ │
│ 油耗-001 │油耗 │油耗 │FUEL-01│维护中│ - │✏️ 🗑️ │
└─────────────────────────────────────────────────────────────┘
2. 设备状态管理 ⭐
支持的设备状态:
| 状态 | 说明 | 颜色 | 可操作 |
|---|---|---|---|
| 待挂载 (available) | 设备可用,等待挂载 | 绿色 | 可挂载、编辑、删除 |
| 已挂载 (mounted) | 设备正在使用 | 蓝色 | 可拆卸 |
| 维护中 (maintenance) | 设备维修保养 | 黄色 | 可编辑 |
| 已损坏 (damaged) | 设备损坏不可用 | 红色 | 可编辑、删除 |
| 已退役 (retired) | 设备报废退役 | 灰色 | 可删除 |
状态流转:
待挂载 → 已挂载 → 待挂载(拆卸后)
↓ ↓
维护中 维护中
↓ ↓
已损坏 已损坏
↓ ↓
已退役 已退役
3. 设备信息管理 ⭐
基本信息:
- ✅ 设备类型(选择已定义的类型)
- ✅ 设备名称
- ✅ 序列号(唯一标识)
- ✅ 采购日期
- ✅ 保修期限
- ✅ 设备状态
- ✅ 备注
设备参数:
- ✅ 根据设备类型的参数模板自动生成配置表单
- ✅ 参数一次配置,长期使用
- ✅ 挂载时不需要重新配置
关联信息:
- ✅ 当前挂载的农机(如果已挂载)
- ✅ 创建人和创建时间
- ✅ 更新时间
📊 新的4个Tab布局
┌─────────────────────────────────────────────────────────────┐
│ 农机负载管理 │
├─────────────────────────────────────────────────────────────┤
│ [负载类型] [负载参数] [负载设备] [负载管理] │
└─────────────────────────────────────────────────────────────┘
Tab 1: 负载类型
功能: 定义设备类别
示例数据:
- 高清摄像头(摄像头类别)
- 北斗终端(北斗终端类别)
- 油耗传感器(油耗传感器类别)
Tab 2: 负载参数
功能: 为设备类别定义参数模板
示例:
- 摄像头参数模板:IP地址、端口、通道号、分辨率、帧率
- 北斗终端参数模板:上报间隔、精度模式、数据格式
- 油耗传感器参数模板:采集频率、上传频率、报警阈值
Tab 3: 负载设备(新增!)⭐
功能: 管理设备库中的设备实例
示例数据:
- 摄像头-001:序列号 CAM-001,状态:待挂载
- 摄像头-002:序列号 CAM-002,状态:已挂载(拖拉机-01)
- 北斗-001:序列号 BD-001,状态:待挂载
Tab 4: 负载管理
功能: 挂载/拆卸设备
流程:
- 选择农机
- 选择设备(从设备库选择"待挂载"状态的设备)
- 挂载
- 设备状态变为"已挂载"
🔄 完整工作流程
流程1: 添加新设备到设备库
1. 进入"负载设备"Tab
↓
2. 点击"添加设备"
↓
3. 填写设备信息:
┌──────────────────────────────┐
│ 设备类型: [▼ 高清摄像头] │
│ 设备名称: [摄像头-001] │
│ 序列号: [CAM-001] │
│ 采购日期: [2024-01-15] │
│ 保修期限: [2025-01-15] │
│ │
│ === 设备参数配置 === │
│ IP地址 *: [192.168.1.100] │
│ 端口 *: [554] │
│ 通道号 *: [1] │
│ 分辨率: [▼ 1080P] │
│ 帧率: [25] fps │
│ 夜视功能: [▼ 是] │
│ │
│ [取消] [添加] │
└──────────────────────────────┘
↓
4. 点击"添加"
↓
5. ✅ 设备添加到设备库
- 状态: 待挂载
- 参数已配置
流程2: 从设备库挂载设备
1. 进入"负载管理"Tab
↓
2. 选择农机(如:拖拉机-01)
↓
3. 点击"挂载设备"
↓
4. 从设备库选择设备:
┌──────────────────────────────┐
│ 选择设备 * │
│ [▼ 摄像头-001 (CAM-001)] │ ← 只显示"待挂载"状态的设备
│ │
│ 设备类型: 高清摄像头 │
│ 设备状态: 待挂载 │
│ │
│ 挂载位置: │
│ [前方 ] │
│ │
│ 备注: │
│ [ ] │
│ │
│ [取消] [挂载] │
└──────────────────────────────┘
↓
5. 点击"挂载"
↓
6. ✅ 挂载成功
- 设备状态: 待挂载 → 已挂载
- 当前挂载位置: 拖拉机-01
- 创建挂载记录
流程3: 拆卸设备
1. 在"负载管理"中选择已挂载的设备
↓
2. 点击"拆卸"
↓
3. 填写拆卸信息:
┌──────────────────────────────┐
│ 确认拆卸设备 │
│ │
│ 设备: 摄像头-001 │
│ 农机: 拖拉机-01 │
│ │
│ 拆卸原因: │
│ [设备维护 ] │
│ │
│ 拆卸后状态: │
│ [▼ 待挂载] │
│ │
│ [取消] [确认拆卸] │
└──────────────────────────────┘
↓
4. 点击"确认拆卸"
↓
5. ✅ 拆卸成功
- 设备状态: 已挂载 → 待挂载(或维护中)
- 当前挂载位置: 清空
- 更新挂载记录
流程4: 设备流转
场景: 摄像头-001 从拖拉机-01 转移到拖拉机-02
1. 在拖拉机-01上拆卸摄像头-001
↓
设备状态: 已挂载 → 待挂载
↓
2. 在拖拉机-02上挂载摄像头-001
↓
设备状态: 待挂载 → 已挂载
当前挂载位置: 拖拉机-02
↓
3. ✅ 设备完成流转
- 设备参数保持不变
- 挂载历史记录完整
📋 数据结构
DeviceInstance(设备实例)
interface DeviceInstance {
id: string;
deviceTypeId: string; // 设备类型ID
// 设备信息
deviceName: string; // 设备名称
serialNumber: string; // 序列号(唯一)
purchaseDate?: string; // 采购日期
warrantyExpiry?: string; // 保修期限
// 设备参数(根据设备类型的参数模板配置)
parameters: Record<string, any>;
// 设备状态
status: 'available' | 'mounted' | 'maintenance' | 'damaged' | 'retired';
currentMachineryId?: string; // 当前挂载的农机ID
// 其他
remarks?: string;
createdBy: string;
createdAt: string;
updatedAt: string;
}
MountRecord(挂载记录)
interface MountRecord {
id: string;
machineryId: string; // 农机ID
deviceId: string; // 设备实例ID
// 挂载信息
mountedAt: string; // 挂载时间
unmountedAt?: string; // 拆卸时间
status: 'mounted' | 'unmounted';
// 备注
mountRemarks?: string; // 挂载备注
unmountRemarks?: string; // 拆卸备注
// 操作记录
mountedBy: string;
unmountedBy?: string;
createdAt: string;
updatedAt: string;
}
💾 数据存储
LocalStorage Keys
新增:
'smart_agriculture_device_library' // 设备库
'smart_agriculture_mount_records' // 挂载记录
已有:
'smart_agriculture_device_types' // 设备类型
'smart_agriculture_mounted_devices' // 挂载设备(逐步迁移)
🎨 界面特性
1. 设备状态彩色徽章
[待挂载] ← 绿色
[已挂载] ← 蓝色
[维护中] ← 黄色
[已损坏] ← 红色
[已退役] ← 灰色
2. 设备类别徽章
[摄像头] ← 蓝色
[北斗终端] ← 绿色
[油耗传感器] ← 橙色
3. 序列号显示
CAM-001 ← 代码块样式
BD-001
FUEL-01
4. 操作按钮状态
状态: 待挂载
✅ 可编辑
✅ 可删除
✅ 可挂载
状态: 已挂载
✅ 可编辑
❌ 不可删除(需先拆卸)
✅ 可拆卸
状态: 维护中/已损坏
✅ 可编辑
✅ 可删除
❌ 不可挂载
💡 使用说明
1. 设备命名规范
建议格式: 设备类型-编号
✅ 好的命名:
- 摄像头-001
- 摄像头-002
- 北斗-001
- 油耗-001
❌ 不好的命名:
- 设备1
- 新设备
- test
2. 序列号规范
建议格式: 类型缩写-编号
✅ 好的序列号:
- CAM-001
- CAM-002
- BD-001
- FUEL-001
❌ 不好的序列号:
- 001
- ABC
- 序列号1
3. 设备参数配置
最佳实践:
- ✅ 设备添加到设备库时,一次性配置好所有参数
- ✅ 参数配置后长期使用,不随挂载改变
- ✅ 如需修改参数,在设备库中编辑设备
- ✅ 相同类型的设备可以有不同的参数配置
示例:
摄像头-001:
IP: 192.168.1.100
端口: 554
通道: 1
摄像头-002:
IP: 192.168.1.101 ← 不同的IP
端口: 554
通道: 2 ← 不同的通道
4. 设备状态管理
状态变更时机:
| 操作 | 状态变更 |
|---|---|
| 添加设备 | → 待挂载 |
| 挂载设备 | 待挂载 → 已挂载 |
| 拆卸设备 | 已挂载 → 待挂载 |
| 送修设备 | 任意 → 维护中 |
| 维修完成 | 维护中 → 待挂载 |
| 设备损坏 | 任意 → 已损坏 |
| 设备报废 | 任意 → 已退役 |
🔗 模块关系图
┌─────────────┐
│ 负载类型 │ 定义设备类别
└──────┬──────┘
↓
┌─────────────┐
│ 负载参数 │ 为类别定义参数模板
└──────┬──────┘
↓
┌─────────────┐
│ 负载设备 │ 添加设备实例,配置参数
│ (新增!) │ 管理设备状态
└──────┬──────┘
↓
┌─────────────┐
│ 负载管理 │ 从设备库选择设备挂载
│ │ 建立挂载关系
└─────────────┘
📁 新增文件
components/machinery/load/
└── LoadDeviceLibrary.tsx # 负载设备管理(设备库)
types/
└── equipment.ts # 更新数据类型
├── DeviceInstance # 设备实例
└── MountRecord # 挂载记录
🎯 功能对比
旧架构 vs 新架构
| 特性 | 旧架构 | 新架构 |
|---|---|---|
| 设备管理 | 挂载时创建 | 设备库统一管理 ✅ |
| 设备生命周期 | 无独立生命周期 | 完整生命周期管理 ✅ |
| 设备参数 | 每次挂载配置 | 一次配置,长期使用 ✅ |
| 设备流转 | 不支持 | 支持设备流转 ✅ |
| 设备状态 | 只有挂载/拆卸 | 5种状态管理 ✅ |
| 设备库存 | 不支持 | 支持库存管理 ✅ |
| 设备追踪 | 困难 | 完整追踪 ✅ |
🎉 总结
核心改进
- ✅ 新增"负载设备"Tab - 设备库统一管理
- ✅ 设备独立生命周期 - 不依赖挂载状态
- ✅ 5种设备状态 - 完整的状态管理
- ✅ 设备参数持久化 - 一次配置,多次使用
- ✅ 设备流转支持 - 可在不同农机间流转
- ✅ 完整的追溯性 - 挂载历史记录
Tab导航顺序
1. 负载类型 → 定义类别
2. 负载参数 → 定义模板
3. 负载设备 ⭐ → 添加设备(新增!)
4. 负载管理 → 挂载设备
数据流向
设备类型 → 参数模板 → 设备实例 → 挂载关系
清晰的数据层次结构!
创建完成: 2025-10-16
新增文件: /components/machinery/load/LoadDeviceLibrary.tsx
更新文件: /types/equipment.ts, /components/machinery/LoadManagement.tsx
功能状态: ✅ 已完成