# 🚜 农业驾驶舱 - 农机切换功能

## ✅ 功能已添加

**农业驾驶舱新增农机切换下拉选择器，支持实时切换查看不同农机的驾驶舱数据**

---

## 🎯 功能特点

### 核心功能

1. **农机选择器** ✅
   - 右上角下拉选择框
   - 显示所有农机列表
   - 格式：农机名称 (型号)

2. **实时数据切换** ✅
   - 选择农机后立即更新数据
   - 基本信息动态显示
   - 状态标识自动适配

3. **默认选择** ✅
   - 页面加载时自动选择第一台农机
   - 无需手动操作即可查看数据

4. **农机信息展示** ✅
   - 农机名称
   - 型号
   - 设备编号
   - 当前状态（作业中/空闲/维修中等）

---

## 🎨 界面展示

### 驾驶舱顶部

```
┌──────────────────────────────────────────────────────────┐
│  农业驾驶舱                           选择农机: [下拉框 ▼] │
│  实时监控农机运行状态和作业数据                           │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  约翰迪尔8R拖拉机                          [作业中]      │
│  John Deere 8R · 设备编号: JD8R-2024-001                │
│                                                          │
│  当前位置    │作业时长│已作业面积│作业效率               │
│  1号地块     │3.5小时 │25.8亩    │7.4亩/时               │
│                                                          │
└──────────────────────────────────────────────────────────┘
```

### 农机选择下拉框

```
┌────────────────────────────────────┐
│ 选择农机:                          │
├────────────────────────────────────┤
│ ○ 约翰迪尔8R拖拉机 (John Deere 8R) │
│ ● 久保田M7-173 (Kubota M7)        │
│ ○ 雷沃欧豹M2104 (LOVOL M2104)     │
│ ○ 东方红LX2204 (Dongfanghong)     │
└────────────────────────────────────┘
```

---

## 💡 使用方法

### 步骤1: 进入农业驾驶舱

```
路径: 农机管理 → 精准作业管理与支持 → 农业驾驶舱

或直接访问: /machinery/operation/cockpit
```

### 步骤2: 选择要监控的农机

```
操作：
1. 查看右上角的"选择农机"下拉框
2. 点击下拉框展开农机列表
3. 选择要监控的农机
```

### 步骤3: 查看农机数据

```
自动更新：
- 农机基本信息
- 运行状态
- 作业数据
- 关键参数
```

---

## 🔧 技术实现

### 数据结构

```typescript
// 农机记录
interface MachineryRecord {
  id: string;
  name: string;
  model: string;
  equipmentNumber?: string;
  status: string;
  currentField?: string;
  // ... 其他字段
}
```

### 状态管理

```typescript
const [machinery, setMachinery] = useState<MachineryRecord[]>([]);
const [selectedMachineryId, setSelectedMachineryId] = useState<string>('');
const [selectedMachinery, setSelectedMachinery] = useState<MachineryRecord | null>(null);
```

### 加载农机列表

```typescript
useEffect(() => {
  // 从存储加载农机数据
  const machineryData = machineryStorage.getAllMachinery();
  setMachinery(machineryData);
  
  // 默认选择第一台
  if (machineryData.length > 0) {
    setSelectedMachineryId(machineryData[0].id);
    setSelectedMachinery(machineryData[0]);
  }
}, []);
```

### 切换农机

```typescript
const handleMachineryChange = (machineryId: string) => {
  setSelectedMachineryId(machineryId);
  const selected = machinery.find(m => m.id === machineryId);
  setSelectedMachinery(selected || null);
};
```

### 动态显示

```typescript
// 农机名称和型号
<h3>{selectedMachinery.name}</h3>
<p>{selectedMachinery.model} · 设备编号: {selectedMachinery.equipmentNumber}</p>

// 状态标识（动态颜色）
<Badge className={
  selectedMachinery.status === '作业中' ? 'bg-green-100 text-green-700' :
  selectedMachinery.status === '空闲' ? 'bg-blue-100 text-blue-700' :
  selectedMachinery.status === '维修中' ? 'bg-orange-100 text-orange-700' :
  'bg-gray-100 text-gray-700'
}>
  {selectedMachinery.status}
</Badge>
```

---

## 🎨 状态颜色

### 农机状态标识

```
作业中    → 🟢 绿色 (bg-green-100 text-green-700)
空闲      → 🔵 蓝色 (bg-blue-100 text-blue-700)
维修中    → 🟠 橙色 (bg-orange-100 text-orange-700)
停用      → ⚫ 灰色 (bg-gray-100 text-gray-700)
```

---

## 📊 界面元素

### 1. 农机选择器

**位置**: 页面右上角

**样式**:
```tsx
<Select value={selectedMachineryId} onValueChange={handleMachineryChange}>
  <SelectTrigger className="w-64">
    <SelectValue placeholder="选择要监控的农机" />
  </SelectTrigger>
  <SelectContent>
    {machinery.map(m => (
      <SelectItem key={m.id} value={m.id}>
        {m.name} ({m.model})
      </SelectItem>
    ))}
  </SelectContent>
</Select>
```

**特点**:
- ✅ 宽度固定 256px (w-64)
- ✅ 显示农机名称和型号
- ✅ 选择后立即生效

---

### 2. 农机基本信息卡片

**内容**:
- 农机名称（大标题）
- 型号 + 设备编号（小字）
- 状态标识（右上角Badge）

**作业信息**（4列网格）:
- 当前位置 🗺️
- 作业时长 ⏱️
- 已作业面积 📊
- 作业效率 📈

---

## 💡 使用场景

### 场景1: 监控多台农机

```
需求：
同时监控多台农机的运行状态

操作：
1. 进入农业驾驶舱
2. 查看第一台农机数据
3. 切换到第二台农机
4. 对比两台农机的效率
```

---

### 场景2: 快速定位问题农机

```
需求：
某台农机出现异常，需要快速查看

操作：
1. 打开农业驾驶舱
2. 使用下拉框选择问题农机
3. 查看详细的运行参数
4. 分析问题原因
```

---

### 场景3: 作业效率对比

```
需求：
对比不同农机的作业效率

操作：
1. 查看农机A的数据
2. 记录关键指标
3. 切换到农机B
4. 对比作业效率数据
```

---

## 🔄 数据更新逻辑

### 切换农机时的更新

```
用户选择农机
    ↓
更新 selectedMachineryId
    ↓
从列表中找到对应农机
    ↓
更新 selectedMachinery
    ↓
界面自动刷新显示新数据
    ↓
- 农机名称
- 型号信息
- 设备编号
- 运行状态
- 作业数据
```

---

## 📝 示例数据

### 农机列表示例

```typescript
[
  {
    id: 'machinery-1',
    name: '约翰迪尔8R拖拉机',
    model: 'John Deere 8R',
    equipmentNumber: 'JD8R-2024-001',
    status: '作业中',
    currentField: '1号地块'
  },
  {
    id: 'machinery-2',
    name: '久保田M7-173',
    model: 'Kubota M7-173',
    equipmentNumber: 'KB-M7-2024-002',
    status: '空闲',
    currentField: null
  },
  {
    id: 'machinery-3',
    name: '雷沃欧豹M2104',
    model: 'LOVOL M2104',
    equipmentNumber: 'LV-2104-003',
    status: '维修中',
    currentField: null
  }
]
```

---

## ✅ 更新清单

### 界面更新
- [x] ✅ 顶部添加农机选择器
- [x] ✅ 选择器右对齐布局
- [x] ✅ 标题改为"农业驾驶舱"

### 功能实现
- [x] ✅ 加载农机列表
- [x] ✅ 默认选择第一台
- [x] ✅ 支持切换农机
- [x] ✅ 数据实时更新

### 数据显示
- [x] ✅ 动态显示农机名称
- [x] ✅ 动态显示型号
- [x] ✅ 动态显示设备编号
- [x] ✅ 状态标识自适应颜色
- [x] ✅ 当前位置显示

### 导入依赖
- [x] ✅ Select 组件
- [x] ✅ machineryStorage
- [x] ✅ MachineryRecord 类型
- [x] ✅ useEffect Hook

---

## 🎯 功能对比

| 功能项 | 更新前 | 更新后 |
|--------|--------|--------|
| **农机选择** | ❌ 固定单台 | ✅ 可切换 |
| **农机信息** | ❌ 硬编码 | ✅ 动态加载 |
| **状态标识** | ❌ 固定颜色 | ✅ 自适应 |
| **设备编号** | ❌ 固定值 | ✅ 真实数据 |
| **当前位置** | ❌ 固定文本 | ✅ 动态显示 |

---

## 🚀 后续增强

### Phase 1: 数据刷新

**内容**:
- 定时刷新选中农机数据
- 实时更新运行参数
- WebSocket 实时推送

---

### Phase 2: 筛选功能

**内容**:
- 按状态筛选（作业中/空闲）
- 按地块筛选
- 按机手筛选

---

### Phase 3: 收藏功能

**内容**:
- 收藏常用农机
- 快速切换收藏列表
- 自定义排序

---

### Phase 4: 对比模式

**内容**:
- 双农机对比显示
- 并排查看数据
- 效率对比分析

---

## 📚 相关文档

- **农业驾驶舱**: `/components/machinery/operation/Cockpit.tsx`
- **农机存储**: `/lib/machineryStorage.ts`
- **农机类型**: `/types/machinery.ts`

---

## ✅ 总结

### 主要功能

1. ✅ **农机选择器** - 右上角下拉选择
2. ✅ **实时切换** - 选择后立即更新
3. ✅ **默认选择** - 自动选择第一台
4. ✅ **动态显示** - 农机信息动态加载
5. ✅ **状态适配** - 颜色自动适应

### 核心价值

- **灵活监控**: 可以查看任意农机
- **快速切换**: 一键切换无需等待
- **数据准确**: 显示真实农机信息
- **直观展示**: 状态一目了然

### 用户体验

- ✅ 操作简单（下拉选择）
- ✅ 响应迅速（即选即显）
- ✅ 信息完整（名称/型号/编号）
- ✅ 视觉清晰（状态颜色区分）

---

**更新时间**: 2025-10-17  
**版本**: v4.0  
**状态**: ✅ **农机切换功能已完成**

**核心改进**: 农业驾驶舱支持切换农机，灵活监控多台设备运行状态！
