4.6 KiB
4.6 KiB
✅ 修复"新建规划"按钮无操作问题
🐛 问题描述
症状: 点击"新建规划"按钮无任何反应
原因: 在之前的代码修改中,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 之后。
✅ 修复后的行为
点击"新建规划"按钮后
- ✅ 检查是否有未保存的更改
- ✅ 创建新路线对象
- ✅ 添加到路线列表
- ✅ 自动选中新路线
- ✅ 显示Toast提示
- ✅ 显示地块选择卡片
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
状态: ✅ 已解决,功能正常