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

4.6 KiB
Raw Blame History

修复"新建规划"按钮无操作问题

🐛 问题描述

症状: 点击"新建规划"按钮无任何反应

原因: 在之前的代码修改中,createNewRoute 函数被意外删除


🔧 修复内容

1 重新添加 createNewRoute 函数

// 创建新路线 - 直接创建,在地图区域选择地块
const createNewRoute = () => {
  if (hasUnsavedChanges) {
    toast.error('当前路线有未保存的更改,请先保存');
    return;
  }

  // 直接创建空路线,不弹窗
  const newRoute: RoutePlan = {
    id: `route-${Date.now()}`,
    name: `路线规划${routes.length + 1}`,
    fieldId: undefined,          // 未关联地块
    fieldName: undefined,        // 未关联地块
    fieldBoundary: [],           // 空边界
    obstacles: [],
    workingLines: [],
    params: routeParams,
    stats: {
      totalRows: 0,
      totalDistance: 0,
      workingArea: 0,
      estimatedTime: 0,
      fuelEstimate: 0,
      efficiency: 0,
    },
    createdAt: new Date().toISOString(),
    status: 'draft',
  };

  setRoutes([...routes, newRoute]);
  setSelectedRoute(newRoute);
  toast.success('新建路线规划成功,请在地图区域选择关联地块');
};

2 函数位置

将函数添加在 drawMap() 函数之前,在 useEffect hooks 之后。


修复后的行为

点击"新建规划"按钮后

  1. 检查是否有未保存的更改
  2. 创建新路线对象
  3. 添加到路线列表
  4. 自动选中新路线
  5. 显示Toast提示
  6. 显示地块选择卡片

Toast 提示

✅ "新建路线规划成功,请在地图区域选择关联地块"

路线列表显示

┌─────────────────────────────────┐
│  路线列表                        │
├─────────────────────────────────┤
│  ● 路线规划1  [草稿]            │
│    0行 · 0km                    │
│                   [编辑] [删除] │
└─────────────────────────────────┘

地图区域显示

┌─────────────────────────────────────┐
│  📍 关联地块                         │
├─────────────────────────────────────┤
│  ⚠️ 该路线未关联地块,请选择地块      │
│     作业路线规划必须关联地块信息      │
│                                     │
│  [请选择地块 ▼]                     │
└─────────────────────────────────────┘

🧪 测试步骤

测试1: 正常创建

1. 点击"新建规划"按钮
   ✅ 应该创建新路线
   
2. 检查路线列表
   ✅ 应该显示"路线规划1"
   
3. 检查Toast提示
   ✅ 应该显示"新建路线规划成功,请在地图区域选择关联地块"
   
4. 检查地图区域
   ✅ 应该显示"关联地块"卡片
   ✅ 应该显示橙色警告提示

测试2: 有未保存更改时创建

1. 选择一个路线并修改
   ✅ 显示"未保存"标识
   
2. 点击"新建规划"按钮
   ✅ 应该显示错误提示
   ✅ "当前路线有未保存的更改,请先保存"
   
3. 不应该创建新路线
   ✅ 路线列表不变

测试3: 连续创建多个路线

1. 点击"新建规划"
   ✅ 创建"路线规划1"
   
2. 再次点击"新建规划"
   ✅ 创建"路线规划2"
   
3. 第三次点击"新建规划"
   ✅ 创建"路线规划3"
   
4. 检查路线列表
   ✅ 应该显示3条路线

📝 代码变更总结

修改文件

  • /components/machinery/operation/RoutePlanning.tsx

变更内容

  • 重新添加 createNewRoute 函数
  • 函数逻辑:直接创建空路线,不弹窗
  • 创建后提示用户在地图区域选择地块

未改变的内容

  • "新建规划"按钮的 onClick 绑定(正常)
  • 其他相关功能(正常)

修复完成

状态: 已修复

问题: "新建规划"按钮无操作 原因: createNewRoute 函数缺失 解决: 重新添加函数

验证:

  • 点击按钮可以创建路线
  • Toast提示正常
  • 路线列表正常
  • 地块选择卡片正常
  • 未保存检查正常

修复时间: 2025-10-17
状态: 已解决,功能正常