Files
smart-crop-ui/src/LOAD_DEVICE_MOUNT_UPDATE.md

15 KiB
Raw Blame History

负载管理功能更新 - 从设备库选择设备

🎯 更新内容

负载管理(挂载设备)功能从"选择设备类型"改为"从设备库选择具体设备"。

🔄 变更对比

旧功能(选择设备类型)

挂载设备对话框
├── 设备类型 [下拉选择]
│   ├── 北斗终端
│   ├── 高清摄像头
│   └── 油耗传感器
├── 设备名称 [输入框]
├── 序列号 [输入框]
└── 备注 [文本框]

问题:

  • 需要手动输入设备名称和序列号
  • 无法追溯设备来源
  • 容易输入错误
  • 与设备库数据不关联

新功能(选择设备)

挂载设备对话框
├── 选择设备 [下拉选择]
│   ├── 北斗定位终端-001 (北斗定位终端 - 华为 - BD-200)
│   ├── 高清摄像头-A01 (高清摄像头 - 海康威视 - DS-2CD2345)
│   └── 油耗传感器-F01 (油耗传感器 - 博世 - FS-100)
└── 备注 [文本框]

优点:

  • 从设备库直接选择
  • 自动获取设备信息
  • 数据完整关联
  • 避免重复和错误

📊 数据流程

完整的数据关系链

┌─────────────────┐
│  负载类型       │  定义类型规格
│  (LoadType)     │  - 名称、品牌、型号
└────────┬────────┘  - 参数模板
         │
         ↓ 关联
┌─────────────────┐
│  负载设备库     │  管理具体设备
│(LoadDeviceLib)  │  - 设备名称
└────────┬────────┘  - 负载类型ID
         │           - 采购/使用时间
         │
         ↓ 选择
┌─────────────────┐
│  负载管理       │  挂载到农机
│  (LoadDevice)   │  - 农机ID
└─────────────────┘  - 设备ID
                     - 挂载/卸载时间

数据关联示例

负载类型:

{
  "id": "type-1",
  "name": "北斗定位终端",
  "manufacturer": "华为",
  "model": "BD-200"
}

负载设备库:

{
  "id": "device-1",
  "deviceName": "北斗定位终端-001",
  "loadTypeId": "type-1",   关联类型
  "purchaseDate": "2024-01-15"
}

挂载记录:

{
  "id": "mounted-1",
  "machineryId": "machinery-1",
  "deviceId": "device-1",   关联设备
  "mountedAt": "2024-01-20T08:00:00",
  "status": "mounted"
}

🎨 界面变化

统计卡片

┌──────────┬──────────┬──────────┬──────────┐
│总挂载数  │已卸载    │设备库总数│可挂载设备│
│    1     │    0     │    3     │    2     │
└──────────┴──────────┴──────────┴──────────┘

说明:

  • 总挂载数: 当前已挂载的设备数量
  • 已卸载: 历史卸载的设备数量
  • 设备库总数: 负载设备库中的设备总数
  • 可挂载设备: 设备库中未被挂载的设备数量

设备列表

┌──────────────┬────────────┬──────────┬────────┬──────┬──────┬────────┐
│设备名称      │设备类型    │挂载时间  │操作员  │备注  │状态  │操作    │
├──────────────┼────────────┼──────────┼────────┼──────┼──────┼────────┤
│北斗定位终端  │北斗定位终端│2024-01-20│技术员  │用于  │已挂载│👁 ❌   │
│-001          │(华为)      │08:00     │张三    │实时  │      │        │
│采购:2024-01  │BD-200      │          │        │定位  │      │        │
│-15           │            │          │        │      │      │        │
└──────────────┴────────────┴──────────┴────────┴──────┴──────┴────────┘

新增显示:

  • 设备采购日期(小灰字)
  • 设备类型型号(小灰字)
  • 查看详情按钮

挂载设备对话框

┌─────────────────────────────────────────┐
│ 挂载设备                           [X]  │
├─────────────────────────────────────────┤
│ 从设备库中选择设备挂载到农机上          │
├─────────────────────────────────────────┤
│                                         │
│ 选择设备 *                              │
│ ┌─────────────────────────────────────┐ │
│ │ 从设备库选择设备              [▼] │ │
│ └─────────────────────────────────────┘ │
│   只显示设备库中未被当前农机挂载的设备  │
│                                         │
│ 备注                                    │
│ ┌─────────────────────────────────────┐ │
│ │ 挂载说明、注意事项等                │ │
│ │                                     │ │
│ └─────────────────────────────────────┘ │
│                                         │
│               [取消]    [🔗 挂载]       │
└─────────────────────────────────────────┘

设备选择器

┌─────────────────────────────────────────┐
│ 从设备库选择设备                  [▼] │
├─────────────────────────────────────────┤
│ 北斗定位终端-001                        │
│ 北斗定位终端 (华为) - BD-200     ← 小灰字│
├─────────────────────────────────────────┤
│ 高清摄像头-A01                          │
│ 高清摄像头 (海康威视) - DS-2CD2345      │
├─────────────────────────────────────────┤
│ 油耗传感器-F01                          │
│ 油耗传感器 (博世) - FS-100              │
└─────────────────────────────────────────┘

查看详情对话框

┌─────────────────────────────────────────┐
│ 挂载详情                           [X]  │
├─────────────────────────────────────────┤
│ 设备名称          │ 设备类型            │
│ 北斗定位终端-001  │ 北斗定位终端 (华为) │
├─────────────────────────────────────────┤
│ 品牌              │ 型号                │
│ 华为              │ BD-200              │
├─────────────────────────────────────────┤
│ 采购时间          │ 设备使用时间        │
│ 2024-01-15        │ 2024-01-20          │
├─────────────────────────────────────────┤
│ 挂载时间          │ 挂载状态            │
│ 2024-01-20 08:00  │ [已挂载]            │
├─────────────────────────────────────────┤
│ 操作员            │ 创建时间            │
│ 技术员张三        │ 2024-01-20 08:00    │
├─────────────────────────────────────────┤
│ 备注                                    │
│ 用于实时定位                            │
├─────────────────────────────────────────┤
│ 设备备注                                │
│ 用于拖拉机实时定位                      │
├─────────────────────────────────────────┤
│                           [关闭]        │
└─────────────────────────────────────────┘

🔧 核心功能

1 智能设备过滤

只显示可挂载的设备:

const getAvailableDevices = (machineryId: string) => {
  const currentMounted = mountedDevices
    .filter(m => m.machineryId === machineryId && m.status === 'mounted')
    .map(m => m.deviceId);
  
  return loadDevices.filter(d => !currentMounted.includes(d.id));
};

规则:

  • 设备库中的所有设备
  • 已被当前农机挂载的设备
  • 已被其他农机挂载的设备(可选择)
  • 已卸载的设备(可重新挂载)

2 设备信息自动获取

挂载时自动获取设备的完整信息:

  • 设备名称
  • 设备类型
  • 品牌型号
  • 采购日期
  • 使用日期
  • 设备备注

3 挂载记录管理

挂载记录接口:

interface MountedDeviceRecord {
  id: string;
  machineryId: string;    // 农机ID
  deviceId: string;       // 设备ID关联设备库
  mountedAt: string;      // 挂载时间
  unmountedAt?: string;   // 卸载时间
  status: 'mounted' | 'unmounted';
  remarks?: string;       // 挂载备注
  operator: string;       // 操作员
  createdAt: string;
  updatedAt: string;
}

4 数据关联查询

获取设备信息:

const getDevice = (deviceId: string) => {
  return loadDevices.find(d => d.id === deviceId);
};

获取设备类型:

const getDeviceType = (deviceId: string) => {
  const device = getDevice(deviceId);
  if (!device) return null;
  return loadTypes.find(t => t.id === device.loadTypeId);
};

获取完整名称:

const getDeviceTypeName = (deviceId: string) => {
  const type = getDeviceType(deviceId);
  if (!type) return '未知类型';
  return `${type.name}${type.manufacturer ? ` (${type.manufacturer})` : ''}`;
};

📝 使用流程

流程1: 挂载设备

  1. 选择农机,点击"挂载设备"按钮
  2. 从下拉列表选择设备(只显示可挂载的设备)
  3. 填写备注(可选)
  4. 点击"挂载"按钮
  5. 系统自动保存挂载记录

流程2: 查看详情

  1. 在已挂载列表中找到设备
  2. 点击"查看"按钮(眼睛图标)
  3. 查看完整的设备和挂载信息
  4. 包括设备库信息和挂载记录

流程3: 卸载设备

  1. 在已挂载列表中找到设备
  2. 点击"卸载"按钮(断链图标)
  3. 确认卸载操作
  4. 设备状态变为"已卸载"
  5. 可在卸载历史中查看

流程4: 重新挂载

  1. 卸载的设备会重新出现在可选列表
  2. 可以挂载到相同或不同的农机
  3. 创建新的挂载记录

💾 数据存储

LocalStorage Keys

// 负载类型
smart_agriculture_load_types

// 负载设备库
smart_agriculture_load_devices

// 挂载记录
smart_agriculture_mounted_devices

示例数据

挂载记录:

{
  "id": "mounted-1",
  "machineryId": "machinery-1",
  "deviceId": "device-1",
  "mountedAt": "2024-01-20T08:00:00.000Z",
  "status": "mounted",
  "remarks": "用于实时定位",
  "operator": "技术员张三",
  "createdAt": "2024-01-20T08:00:00.000Z",
  "updatedAt": "2024-01-20T08:00:00.000Z"
}

🎯 优势分析

数据完整性

特性 旧方式 新方式
设备名称 手动输入 自动获取
设备类型 选择后丢失 完整关联
采购信息 自动显示
设备备注 自动显示
重复挂载 可能 自动过滤

用户体验

操作 旧方式 新方式
挂载设备 3个输入框 1个选择器
查看信息 只有名称 完整信息
追溯来源 不可能 完整追溯
重复检查 手动 自动过滤

数据管理

方面 旧方式 新方式
数据来源 手动输入 设备库
数据一致性
数据追踪 困难 容易
数据复用 不支持 支持

🔄 迁移影响

对现有数据的影响

旧数据结构:

interface OldMountedDevice {
  deviceTypeId: string;  // 设备类型ID
  deviceName: string;    // 手动输入
  serialNumber: string;  // 手动输入
}

新数据结构:

interface NewMountedDevice {
  deviceId: string;      // 设备库ID关联
  // 其他信息自动从设备库获取
}

兼容性

  • 新旧数据互不影响
  • 使用不同的LocalStorage key
  • 可以并存

📚 相关页面

三个页面的关系

1. 负载类型 (LoadType)
   └── 定义设备类型规格
       ↓
2. 负载设备库 (LoadDeviceLibrary)
   └── 管理具体设备
       ↓
3. 负载管理 (LoadDevice)
   └── 挂载到农机

操作顺序

  1. : 在"负载类型"中创建类型
  2. : 在"负载设备库"中添加设备
  3. 最后: 在"负载管理"中挂载设备

功能特点

核心特点

  • 从设备库选择,避免重复输入
  • 自动获取设备完整信息
  • 智能过滤可挂载设备
  • 完整的数据关联链
  • 支持设备重新挂载
  • 详细的挂载记录

智能功能

  • 🔍 只显示未挂载的设备
  • 📊 统计可挂载设备数量
  • 👁️ 查看完整设备信息
  • 📝 支持挂载备注
  • 🔄 支持卸载和重新挂载
  • 📅 记录挂载/卸载时间

🚀 快速开始

访问路径

智能农机管理系统 → 农机负载管理 → 负载管理

初始化数据

确保以下数据已准备:

  1. 负载类型数据LoadType
  2. 负载设备库数据LoadDeviceLibrary
  3. 农机档案数据MachineryArchive

第一次使用

  1. 刷新页面加载数据
  2. 选择农机
  3. 点击"挂载设备"
  4. 从设备库选择设备
  5. 完成挂载

🎉 更新状态

  • 数据结构重构完成
  • 界面功能完成
  • 设备选择器完成
  • 智能过滤完成
  • 详情查看完成
  • 挂载/卸载完成
  • 统计功能完成

状态: 🟢 已完成,可以使用


更新时间: 2025-10-17
版本: v2.0
重大变更: 从选择类型改为选择设备