生产管理系统前端 - 更新瓦力提交的产品原型到参考目录

This commit is contained in:
2025-10-23 10:57:14 +08:00
parent 83523dad64
commit 28229ce795
354 changed files with 147599 additions and 7892 deletions

View File

@@ -0,0 +1,487 @@
# ✅ 负载管理功能更新 - 从设备库选择设备
## 🎯 更新内容
将**负载管理**(挂载设备)功能从"选择设备类型"改为"从设备库选择具体设备"。
## 🔄 变更对比
### ❌ 旧功能(选择设备类型)
```
挂载设备对话框
├── 设备类型 [下拉选择]
│ ├── 北斗终端
│ ├── 高清摄像头
│ └── 油耗传感器
├── 设备名称 [输入框]
├── 序列号 [输入框]
└── 备注 [文本框]
```
**问题**:
- ❌ 需要手动输入设备名称和序列号
- ❌ 无法追溯设备来源
- ❌ 容易输入错误
- ❌ 与设备库数据不关联
### ✅ 新功能(选择设备)
```
挂载设备对话框
├── 选择设备 [下拉选择]
│ ├── 北斗定位终端-001 (北斗定位终端 - 华为 - BD-200)
│ ├── 高清摄像头-A01 (高清摄像头 - 海康威视 - DS-2CD2345)
│ └── 油耗传感器-F01 (油耗传感器 - 博世 - FS-100)
└── 备注 [文本框]
```
**优点**:
- ✅ 从设备库直接选择
- ✅ 自动获取设备信息
- ✅ 数据完整关联
- ✅ 避免重复和错误
## 📊 数据流程
### 完整的数据关系链
```
┌─────────────────┐
│ 负载类型 │ 定义类型规格
│ (LoadType) │ - 名称、品牌、型号
└────────┬────────┘ - 参数模板
↓ 关联
┌─────────────────┐
│ 负载设备库 │ 管理具体设备
│(LoadDeviceLib) │ - 设备名称
└────────┬────────┘ - 负载类型ID
│ - 采购/使用时间
↓ 选择
┌─────────────────┐
│ 负载管理 │ 挂载到农机
│ (LoadDevice) │ - 农机ID
└─────────────────┘ - 设备ID
- 挂载/卸载时间
```
### 数据关联示例
**负载类型**:
```json
{
"id": "type-1",
"name": "北斗定位终端",
"manufacturer": "华为",
"model": "BD-200"
}
```
**负载设备库**:
```json
{
"id": "device-1",
"deviceName": "北斗定位终端-001",
"loadTypeId": "type-1", 关联类型
"purchaseDate": "2024-01-15"
}
```
**挂载记录**:
```json
{
"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⃣ 智能设备过滤
**只显示可挂载的设备**:
```typescript
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⃣ 挂载记录管理
**挂载记录接口**:
```typescript
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⃣ 数据关联查询
**获取设备信息**:
```typescript
const getDevice = (deviceId: string) => {
return loadDevices.find(d => d.id === deviceId);
};
```
**获取设备类型**:
```typescript
const getDeviceType = (deviceId: string) => {
const device = getDevice(deviceId);
if (!device) return null;
return loadTypes.find(t => t.id === device.loadTypeId);
};
```
**获取完整名称**:
```typescript
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
```javascript
// 负载类型
smart_agriculture_load_types
// 负载设备库
smart_agriculture_load_devices
// 挂载记录
smart_agriculture_mounted_devices
```
### 示例数据
**挂载记录**:
```json
{
"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个选择器 ✅ |
| 查看信息 | 只有名称 ❌ | 完整信息 ✅ |
| 追溯来源 | 不可能 ❌ | 完整追溯 ✅ |
| 重复检查 | 手动 ❌ | 自动过滤 ✅ |
### 数据管理
| 方面 | 旧方式 | 新方式 |
|------|--------|--------|
| 数据来源 | 手动输入 | 设备库 ✅ |
| 数据一致性 | 低 ❌ | 高 ✅ |
| 数据追踪 | 困难 ❌ | 容易 ✅ |
| 数据复用 | 不支持 ❌ | 支持 ✅ |
## 🔄 迁移影响
### 对现有数据的影响
**旧数据结构**:
```typescript
interface OldMountedDevice {
deviceTypeId: string; // 设备类型ID
deviceName: string; // 手动输入
serialNumber: string; // 手动输入
}
```
**新数据结构**:
```typescript
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
**重大变更**: 从选择类型改为选择设备