# 🎉 新增"负载设备"功能 - 设备库管理 ## 📅 创建时间 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. 选择农机 2. 选择设备(从设备库选择"待挂载"状态的设备) 3. 挂载 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(设备实例) ```typescript interface DeviceInstance { id: string; deviceTypeId: string; // 设备类型ID // 设备信息 deviceName: string; // 设备名称 serialNumber: string; // 序列号(唯一) purchaseDate?: string; // 采购日期 warrantyExpiry?: string; // 保修期限 // 设备参数(根据设备类型的参数模板配置) parameters: Record; // 设备状态 status: 'available' | 'mounted' | 'maintenance' | 'damaged' | 'retired'; currentMachineryId?: string; // 当前挂载的农机ID // 其他 remarks?: string; createdBy: string; createdAt: string; updatedAt: string; } ``` ### MountRecord(挂载记录) ```typescript 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 **新增**: ```typescript 'smart_agriculture_device_library' // 设备库 'smart_agriculture_mount_records' // 挂载记录 ``` **已有**: ```typescript '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种状态管理 ✅ | | **设备库存** | 不支持 | 支持库存管理 ✅ | | **设备追踪** | 困难 | 完整追踪 ✅ | ## 🎉 总结 ### 核心改进 1. ✅ **新增"负载设备"Tab** - 设备库统一管理 2. ✅ **设备独立生命周期** - 不依赖挂载状态 3. ✅ **5种设备状态** - 完整的状态管理 4. ✅ **设备参数持久化** - 一次配置,多次使用 5. ✅ **设备流转支持** - 可在不同农机间流转 6. ✅ **完整的追溯性** - 挂载历史记录 ### Tab导航顺序 ``` 1. 负载类型 → 定义类别 2. 负载参数 → 定义模板 3. 负载设备 ⭐ → 添加设备(新增!) 4. 负载管理 → 挂载设备 ``` ### 数据流向 ``` 设备类型 → 参数模板 → 设备实例 → 挂载关系 清晰的数据层次结构! ``` --- **创建完成**: 2025-10-16 **新增文件**: `/components/machinery/load/LoadDeviceLibrary.tsx` **更新文件**: `/types/equipment.ts`, `/components/machinery/LoadManagement.tsx` **功能状态**: ✅ 已完成